Subpackage common -> ariadne (#3323)

* Subpackage common -> ariadne

* add common

* Remove build

* only build labrinth

* common

* set sqlx offline

* copy dirs

* Fix build
This commit is contained in:
Jai Agrawal
2025-03-01 20:53:43 -08:00
committed by GitHub
parent 650ab71a83
commit 19787a3f51
80 changed files with 181 additions and 152 deletions

View File

@@ -38,8 +38,10 @@ jobs:
- name: Build and push - name: Build and push
id: docker_build id: docker_build
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
env:
SQLX_OFFLINE: true
with: with:
context: ./apps/labrinth file: ./apps/labrinth/Dockerfile
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }} tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }} labels: ${{ steps.docker_meta.outputs.labels }}

3
.idea/code.iml generated
View File

@@ -11,9 +11,10 @@
<sourceFolder url="file://$MODULE_DIR$/apps/labrinth/tests" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/apps/labrinth/tests" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/packages/app-lib/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/packages/app-lib/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/rust-common/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/packages/rust-common/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/packages/ariadne/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" /> <excludeFolder url="file://$MODULE_DIR$/target" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

18
Cargo.lock generated
View File

@@ -426,6 +426,21 @@ dependencies = [
"password-hash 0.5.0", "password-hash 0.5.0",
] ]
[[package]]
name = "ariadne"
version = "0.1.0"
dependencies = [
"chrono",
"either",
"rand 0.8.5",
"serde",
"serde_bytes",
"serde_cbor",
"serde_json",
"thiserror 1.0.64",
"uuid 1.12.0",
]
[[package]] [[package]]
name = "arrayvec" name = "arrayvec"
version = "0.7.6" version = "0.7.6"
@@ -4238,6 +4253,7 @@ dependencies = [
"actix-web-prom", "actix-web-prom",
"actix-ws", "actix-ws",
"argon2", "argon2",
"ariadne",
"async-stripe", "async-stripe",
"async-trait", "async-trait",
"base64 0.21.7", "base64 0.21.7",
@@ -8900,6 +8916,7 @@ dependencies = [
name = "theseus" name = "theseus"
version = "0.9.3" version = "0.9.3"
dependencies = [ dependencies = [
"ariadne",
"async-recursion", "async-recursion",
"async-tungstenite", "async-tungstenite",
"async_zip", "async_zip",
@@ -8916,7 +8933,6 @@ dependencies = [
"flate2", "flate2",
"futures 0.3.30", "futures 0.3.30",
"indicatif", "indicatif",
"labrinth",
"lazy_static", "lazy_static",
"notify", "notify",
"notify-debouncer-mini", "notify-debouncer-mini",

View File

@@ -7,6 +7,7 @@ members = [
'./apps/labrinth', './apps/labrinth',
'./apps/daedalus_client', './apps/daedalus_client',
'./packages/daedalus', './packages/daedalus',
'./packages/ariadne',
] ]
# Optimize for speed and reduce size on release builds # Optimize for speed and reduce size on release builds

View File

@@ -127,6 +127,8 @@ async-stripe = { version = "0.39.1", features = ["runtime-tokio-hyper-rustls"] }
rusty-money = "0.4.1" rusty-money = "0.4.1"
json-patch = "*" json-patch = "*"
ariadne = { path = "../../packages/ariadne" }
[dev-dependencies] [dev-dependencies]
actix-http = "3.4.0" actix-http = "3.4.0"

View File

@@ -3,7 +3,9 @@ ENV PKG_CONFIG_ALLOW_CROSS=1
WORKDIR /usr/src/labrinth WORKDIR /usr/src/labrinth
COPY . . COPY . .
RUN cargo build --release ENV SQLX_OFFLINE=true
COPY apps/labrinth/.sqlx/ .sqlx/
RUN cargo build --release --package labrinth
FROM debian:bookworm-slim FROM debian:bookworm-slim
@@ -20,8 +22,8 @@ RUN apt-get update \
RUN update-ca-certificates RUN update-ca-certificates
COPY --from=build /usr/src/labrinth/target/release/labrinth /labrinth/labrinth COPY --from=build /usr/src/labrinth/target/release/labrinth /labrinth/labrinth
COPY --from=build /usr/src/labrinth/migrations/* /labrinth/migrations/ COPY --from=build /usr/src/labrinth/apps/labrinth/migrations/* /labrinth/migrations/
COPY --from=build /usr/src/labrinth/assets /labrinth/assets COPY --from=build /usr/src/labrinth/apps/labrinth/assets /labrinth/assets
WORKDIR /labrinth WORKDIR /labrinth
CMD /labrinth/labrinth CMD /labrinth/labrinth

View File

@@ -34,7 +34,7 @@ pub enum AuthenticationError {
#[error("Error uploading user profile picture")] #[error("Error uploading user profile picture")]
FileHosting(#[from] FileHostingError), FileHosting(#[from] FileHostingError),
#[error("Error while decoding PAT: {0}")] #[error("Error while decoding PAT: {0}")]
Decoding(#[from] crate::common::ids::DecodingError), Decoding(#[from] ariadne::ids::DecodingError),
#[error("{0}")] #[error("{0}")]
Mail(#[from] email::MailError), Mail(#[from] email::MailError),
#[error("Invalid Authentication Credentials")] #[error("Invalid Authentication Credentials")]

View File

@@ -1,9 +1,9 @@
use super::ValidatedRedirectUri; use super::ValidatedRedirectUri;
use crate::auth::AuthenticationError; use crate::auth::AuthenticationError;
use crate::common::ids::DecodingError;
use crate::models::error::ApiError; use crate::models::error::ApiError;
use actix_web::http::{header::LOCATION, StatusCode}; use actix_web::http::{header::LOCATION, StatusCode};
use actix_web::HttpResponse; use actix_web::HttpResponse;
use ariadne::ids::DecodingError;
#[derive(thiserror::Error, Debug)] #[derive(thiserror::Error, Debug)]
#[error("{}", .error_type)] #[error("{}", .error_type)]

View File

@@ -1,6 +1,6 @@
use super::DatabaseError; use super::DatabaseError;
use crate::common::ids::base62_impl::to_base62; use ariadne::ids::base62_impl::to_base62;
use crate::common::ids::{random_base62_rng, random_base62_rng_range}; use ariadne::ids::{random_base62_rng, random_base62_rng_range};
use censor::Censor; use censor::Censor;
use rand::SeedableRng; use rand::SeedableRng;
use rand_chacha::ChaCha20Rng; use rand_chacha::ChaCha20Rng;

View File

@@ -1,5 +1,5 @@
use crate::common::ids::base62_impl::parse_base62;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use ariadne::ids::base62_impl::parse_base62;
use dashmap::DashMap; use dashmap::DashMap;
use futures::TryStreamExt; use futures::TryStreamExt;
use std::fmt::{Debug, Display}; use std::fmt::{Debug, Display};

View File

@@ -1,8 +1,8 @@
use super::ids::*; use super::ids::*;
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models::DatabaseError; use crate::database::models::DatabaseError;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::pats::Scopes; use crate::models::pats::Scopes;
use ariadne::ids::base62_impl::parse_base62;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use dashmap::DashMap; use dashmap::DashMap;
use futures::TryStreamExt; use futures::TryStreamExt;

View File

@@ -3,11 +3,11 @@ use super::loader_fields::{
VersionField, VersionField,
}; };
use super::{ids::*, User}; use super::{ids::*, User};
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models; use crate::database::models;
use crate::database::models::DatabaseError; use crate::database::models::DatabaseError;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::projects::{MonetizationStatus, ProjectStatus}; use crate::models::projects::{MonetizationStatus, ProjectStatus};
use ariadne::ids::base62_impl::parse_base62;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use dashmap::{DashMap, DashSet}; use dashmap::{DashMap, DashSet};
use futures::TryStreamExt; use futures::TryStreamExt;

View File

@@ -1,7 +1,7 @@
use super::ids::*; use super::ids::*;
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models::DatabaseError; use crate::database::models::DatabaseError;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use ariadne::ids::base62_impl::parse_base62;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use dashmap::DashMap; use dashmap::DashMap;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -1,10 +1,10 @@
use super::ids::{ProjectId, UserId}; use super::ids::{ProjectId, UserId};
use super::{CollectionId, ReportId, ThreadId}; use super::{CollectionId, ReportId, ThreadId};
use crate::common::ids::base62_impl::{parse_base62, to_base62};
use crate::database::models; use crate::database::models;
use crate::database::models::{DatabaseError, OrganizationId}; use crate::database::models::{DatabaseError, OrganizationId};
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::users::Badges; use crate::models::users::Badges;
use ariadne::ids::base62_impl::{parse_base62, to_base62};
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use dashmap::DashMap; use dashmap::DashMap;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -1,5 +1,5 @@
use super::models::DatabaseError; use super::models::DatabaseError;
use crate::common::ids::base62_impl::{parse_base62, to_base62}; use ariadne::ids::base62_impl::{parse_base62, to_base62};
use chrono::{TimeZone, Utc}; use chrono::{TimeZone, Utc};
use dashmap::DashMap; use dashmap::DashMap;
use deadpool_redis::{Config, Runtime}; use deadpool_redis::{Config, Runtime};

View File

@@ -25,8 +25,6 @@ use crate::{
util::env::{parse_strings_from_var, parse_var}, util::env::{parse_strings_from_var, parse_var},
}; };
pub mod common;
pub mod auth; pub mod auth;
pub mod clickhouse; pub mod clickhouse;
pub mod database; pub mod database;
@@ -299,10 +297,8 @@ pub fn app_setup(
} }
let ip_salt = Pepper { let ip_salt = Pepper {
pepper: crate::common::ids::Base62Id( pepper: ariadne::ids::Base62Id(ariadne::ids::random_base62(11))
crate::common::ids::random_base62(11), .to_string(),
)
.to_string(),
}; };
let payouts_queue = web::Data::new(PayoutsQueue::new()); let payouts_queue = web::Data::new(PayoutsQueue::new());

View File

@@ -12,12 +12,12 @@ pub use super::sessions::SessionId;
pub use super::teams::TeamId; pub use super::teams::TeamId;
pub use super::threads::ThreadId; pub use super::threads::ThreadId;
pub use super::threads::ThreadMessageId; pub use super::threads::ThreadMessageId;
pub use super::users::UserId;
use crate::common::ids::base62_id_impl;
pub use crate::common::ids::Base62Id;
pub use crate::models::billing::{ pub use crate::models::billing::{
ChargeId, ProductId, ProductPriceId, UserSubscriptionId, ChargeId, ProductId, ProductPriceId, UserSubscriptionId,
}; };
use ariadne::ids::base62_id_impl;
pub use ariadne::ids::Base62Id;
pub use ariadne::users::UserId;
base62_id_impl!(ProjectId, ProjectId); base62_id_impl!(ProjectId, ProjectId);
base62_id_impl!(VersionId, VersionId); base62_id_impl!(VersionId, VersionId);

View File

@@ -1,5 +1,5 @@
pub use crate::common::users::{UserId, UserStatus};
use crate::{auth::AuthProvider, bitflags_serde_impl}; use crate::{auth::AuthProvider, bitflags_serde_impl};
pub use ariadne::users::{UserId, UserStatus};
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use rust_decimal::Decimal; use rust_decimal::Decimal;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -74,11 +74,10 @@ pub async fn count_download(
let project_id: crate::database::models::ids::ProjectId = let project_id: crate::database::models::ids::ProjectId =
download_body.project_id.into(); download_body.project_id.into();
let id_option = crate::common::ids::base62_impl::parse_base62( let id_option =
&download_body.version_name, ariadne::ids::base62_impl::parse_base62(&download_body.version_name)
) .ok()
.ok() .map(|x| x as i64);
.map(|x| x as i64);
let (version_id, project_id) = if let Some(version) = sqlx::query!( let (version_id, project_id) = if let Some(version) = sqlx::query!(
" "

View File

@@ -1,5 +1,4 @@
use crate::auth::{get_user_from_headers, send_email}; use crate::auth::{get_user_from_headers, send_email};
use crate::common::ids::base62_impl::{parse_base62, to_base62};
use crate::database::models::charge_item::ChargeItem; use crate::database::models::charge_item::ChargeItem;
use crate::database::models::{ use crate::database::models::{
generate_charge_id, generate_user_subscription_id, product_item, generate_charge_id, generate_user_subscription_id, product_item,
@@ -16,6 +15,7 @@ use crate::models::users::Badges;
use crate::queue::session::AuthQueue; use crate::queue::session::AuthQueue;
use crate::routes::ApiError; use crate::routes::ApiError;
use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse}; use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::{parse_base62, to_base62};
use chrono::Utc; use chrono::Utc;
use log::{info, warn}; use log::{info, warn};
use rust_decimal::prelude::ToPrimitive; use rust_decimal::prelude::ToPrimitive;

View File

@@ -1,8 +1,6 @@
use crate::auth::email::send_email; use crate::auth::email::send_email;
use crate::auth::validate::get_user_record_from_bearer_token; use crate::auth::validate::get_user_record_from_bearer_token;
use crate::auth::{get_user_from_headers, AuthProvider, AuthenticationError}; use crate::auth::{get_user_from_headers, AuthProvider, AuthenticationError};
use crate::common::ids::base62_impl::{parse_base62, to_base62};
use crate::common::ids::random_base62_rng;
use crate::database::models::flow_item::Flow; use crate::database::models::flow_item::Flow;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::file_hosting::FileHost; use crate::file_hosting::FileHost;
@@ -20,6 +18,8 @@ use actix_web::web::{scope, Data, Query, ServiceConfig};
use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse}; use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse};
use argon2::password_hash::SaltString; use argon2::password_hash::SaltString;
use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier}; use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier};
use ariadne::ids::base62_impl::{parse_base62, to_base62};
use ariadne::ids::random_base62_rng;
use base64::Engine; use base64::Engine;
use chrono::{Duration, Utc}; use chrono::{Duration, Utc};
use rand_chacha::rand_core::SeedableRng; use rand_chacha::rand_core::SeedableRng;

View File

@@ -1,5 +1,4 @@
use super::ApiError; use super::ApiError;
use crate::common::ids::random_base62;
use crate::database; use crate::database;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::projects::ProjectStatus; use crate::models::projects::ProjectStatus;
@@ -7,6 +6,7 @@ use crate::queue::moderation::{ApprovalType, IdentifiedFile, MissingMetadata};
use crate::queue::session::AuthQueue; use crate::queue::session::AuthQueue;
use crate::{auth::check_is_moderator_from_headers, models::pats::Scopes}; use crate::{auth::check_is_moderator_from_headers, models::pats::Scopes};
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::random_base62;
use serde::Deserialize; use serde::Deserialize;
use sqlx::PgPool; use sqlx::PgPool;
use std::collections::HashMap; use std::collections::HashMap;

View File

@@ -1,10 +1,5 @@
use crate::auth::validate::get_user_record_from_bearer_token; use crate::auth::validate::get_user_record_from_bearer_token;
use crate::auth::AuthenticationError; use crate::auth::AuthenticationError;
use crate::common::ids::UserId;
use crate::common::networking::message::{
ClientToServerMessage, ServerToClientMessage,
};
use crate::common::users::UserStatus;
use crate::database::models::friend_item::FriendItem; use crate::database::models::friend_item::FriendItem;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::pats::Scopes; use crate::models::pats::Scopes;
@@ -17,6 +12,11 @@ use crate::routes::ApiError;
use actix_web::web::{Data, Payload}; use actix_web::web::{Data, Payload};
use actix_web::{get, web, HttpRequest, HttpResponse}; use actix_web::{get, web, HttpRequest, HttpResponse};
use actix_ws::Message; use actix_ws::Message;
use ariadne::ids::UserId;
use ariadne::networking::message::{
ClientToServerMessage, ServerToClientMessage,
};
use ariadne::users::UserStatus;
use chrono::Utc; use chrono::Utc;
use either::Either; use either::Either;
use futures_util::{StreamExt, TryStreamExt}; use futures_util::{StreamExt, TryStreamExt};

View File

@@ -164,7 +164,7 @@ async fn find_version(
pool: &PgPool, pool: &PgPool,
redis: &RedisPool, redis: &RedisPool,
) -> Result<Option<QueryVersion>, ApiError> { ) -> Result<Option<QueryVersion>, ApiError> {
let id_option = crate::common::ids::base62_impl::parse_base62(vcoords) let id_option = ariadne::ids::base62_impl::parse_base62(vcoords)
.ok() .ok()
.map(|x| x as i64); .map(|x| x as i64);

View File

@@ -117,7 +117,7 @@ pub enum ApiError {
#[error("Captcha Error. Try resubmitting the form.")] #[error("Captcha Error. Try resubmitting the form.")]
Turnstile, Turnstile,
#[error("Error while decoding Base62: {0}")] #[error("Error while decoding Base62: {0}")]
Decoding(#[from] crate::common::ids::DecodingError), Decoding(#[from] ariadne::ids::DecodingError),
#[error("Image Parsing Error: {0}")] #[error("Image Parsing Error: {0}")]
ImageParse(#[from] image::ImageError), ImageParse(#[from] image::ImageError),
#[error("Password Hashing Error: {0}")] #[error("Password Hashing Error: {0}")]

View File

@@ -1,5 +1,4 @@
use super::ApiError; use super::ApiError;
use crate::common::ids::base62_impl::to_base62;
use crate::database; use crate::database;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::teams::ProjectPermissions; use crate::models::teams::ProjectPermissions;
@@ -13,6 +12,7 @@ use crate::{
queue::session::AuthQueue, queue::session::AuthQueue,
}; };
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::to_base62;
use chrono::{DateTime, Duration, Utc}; use chrono::{DateTime, Duration, Utc};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use sqlx::postgres::types::PgInterval; use sqlx::postgres::types::PgInterval;

View File

@@ -1,6 +1,5 @@
use crate::auth::checks::is_visible_collection; use crate::auth::checks::is_visible_collection;
use crate::auth::{filter_visible_collections, get_user_from_headers}; use crate::auth::{filter_visible_collections, get_user_from_headers};
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models::{ use crate::database::models::{
collection_item, generate_collection_id, project_item, collection_item, generate_collection_id, project_item,
}; };
@@ -18,6 +17,7 @@ use crate::util::validate::validation_errors_to_string;
use crate::{database, models}; use crate::{database, models};
use actix_web::web::Data; use actix_web::web::Data;
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::parse_base62;
use chrono::Utc; use chrono::Utc;
use itertools::Itertools; use itertools::Itertools;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -1,5 +1,4 @@
use crate::auth::get_user_from_headers; use crate::auth::get_user_from_headers;
use crate::common::networking::message::ServerToClientMessage;
use crate::database::models::UserId; use crate::database::models::UserId;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::pats::Scopes; use crate::models::pats::Scopes;
@@ -9,6 +8,7 @@ use crate::queue::socket::ActiveSockets;
use crate::routes::internal::statuses::send_message_to_user; use crate::routes::internal::statuses::send_message_to_user;
use crate::routes::ApiError; use crate::routes::ApiError;
use actix_web::{delete, get, post, web, HttpRequest, HttpResponse}; use actix_web::{delete, get, post, web, HttpRequest, HttpResponse};
use ariadne::networking::message::ServerToClientMessage;
use chrono::Utc; use chrono::Utc;
use sqlx::PgPool; use sqlx::PgPool;

View File

@@ -1,7 +1,6 @@
use std::{collections::HashSet, fmt::Display, sync::Arc}; use std::{collections::HashSet, fmt::Display, sync::Arc};
use super::ApiError; use super::ApiError;
use crate::common::ids::base62_impl::parse_base62;
use crate::{ use crate::{
auth::{checks::ValidateAuthorized, get_user_from_headers}, auth::{checks::ValidateAuthorized, get_user_from_headers},
database::{ database::{
@@ -31,6 +30,7 @@ use actix_web::{
web::{self, scope}, web::{self, scope},
HttpRequest, HttpResponse, HttpRequest, HttpResponse,
}; };
use ariadne::ids::base62_impl::parse_base62;
use chrono::Utc; use chrono::Utc;
use itertools::Itertools; use itertools::Itertools;
use rand::{distributions::Alphanumeric, Rng, SeedableRng}; use rand::{distributions::Alphanumeric, Rng, SeedableRng};

View File

@@ -3,7 +3,6 @@ use std::sync::Arc;
use super::ApiError; use super::ApiError;
use crate::auth::{filter_visible_projects, get_user_from_headers}; use crate::auth::{filter_visible_projects, get_user_from_headers};
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models::team_item::TeamMember; use crate::database::models::team_item::TeamMember;
use crate::database::models::{ use crate::database::models::{
generate_organization_id, team_item, Organization, generate_organization_id, team_item, Organization,
@@ -21,6 +20,7 @@ use crate::util::routes::read_from_payload;
use crate::util::validate::validation_errors_to_string; use crate::util::validate::validation_errors_to_string;
use crate::{database, models}; use crate::{database, models};
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::parse_base62;
use futures::TryStreamExt; use futures::TryStreamExt;
use rust_decimal::Decimal; use rust_decimal::Decimal;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -1,6 +1,5 @@
use super::version_creation::{try_create_version_fields, InitialVersionData}; use super::version_creation::{try_create_version_fields, InitialVersionData};
use crate::auth::{get_user_from_headers, AuthenticationError}; use crate::auth::{get_user_from_headers, AuthenticationError};
use crate::common::ids::base62_impl::to_base62;
use crate::database::models::loader_fields::{ use crate::database::models::loader_fields::{
Loader, LoaderField, LoaderFieldEnumValue, Loader, LoaderField, LoaderFieldEnumValue,
}; };
@@ -28,6 +27,7 @@ use actix_multipart::{Field, Multipart};
use actix_web::http::StatusCode; use actix_web::http::StatusCode;
use actix_web::web::{self, Data}; use actix_web::web::{self, Data};
use actix_web::{HttpRequest, HttpResponse}; use actix_web::{HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::to_base62;
use chrono::Utc; use chrono::Utc;
use futures::stream::StreamExt; use futures::stream::StreamExt;
use image::ImageError; use image::ImageError;

View File

@@ -3,7 +3,6 @@ use std::sync::Arc;
use crate::auth::checks::{filter_visible_versions, is_visible_project}; use crate::auth::checks::{filter_visible_versions, is_visible_project};
use crate::auth::{filter_visible_projects, get_user_from_headers}; use crate::auth::{filter_visible_projects, get_user_from_headers};
use crate::common::ids::base62_impl::parse_base62;
use crate::database::models::notification_item::NotificationBuilder; use crate::database::models::notification_item::NotificationBuilder;
use crate::database::models::project_item::{GalleryItem, ModCategory}; use crate::database::models::project_item::{GalleryItem, ModCategory};
use crate::database::models::thread_item::ThreadMessageBuilder; use crate::database::models::thread_item::ThreadMessageBuilder;
@@ -30,6 +29,7 @@ use crate::util::img::{delete_old_images, upload_image_optimized};
use crate::util::routes::read_from_payload; use crate::util::routes::read_from_payload;
use crate::util::validate::validation_errors_to_string; use crate::util::validate::validation_errors_to_string;
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::parse_base62;
use chrono::Utc; use chrono::Utc;
use futures::TryStreamExt; use futures::TryStreamExt;
use itertools::Itertools; use itertools::Itertools;

View File

@@ -1,5 +1,4 @@
use crate::auth::{check_is_moderator_from_headers, get_user_from_headers}; use crate::auth::{check_is_moderator_from_headers, get_user_from_headers};
use crate::common::ids::base62_impl::parse_base62;
use crate::database; use crate::database;
use crate::database::models::image_item; use crate::database::models::image_item;
use crate::database::models::thread_item::{ use crate::database::models::thread_item::{
@@ -16,6 +15,7 @@ use crate::queue::session::AuthQueue;
use crate::routes::ApiError; use crate::routes::ApiError;
use crate::util::img; use crate::util::img;
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::parse_base62;
use chrono::Utc; use chrono::Utc;
use futures::StreamExt; use futures::StreamExt;
use serde::Deserialize; use serde::Deserialize;

View File

@@ -5,7 +5,6 @@ use crate::auth::checks::{
filter_visible_versions, is_visible_project, is_visible_version, filter_visible_versions, is_visible_project, is_visible_version,
}; };
use crate::auth::get_user_from_headers; use crate::auth::get_user_from_headers;
use crate::common::ids::base62_impl::parse_base62;
use crate::database; use crate::database;
use crate::database::models::loader_fields::{ use crate::database::models::loader_fields::{
self, LoaderField, LoaderFieldEnumValue, VersionField, self, LoaderField, LoaderFieldEnumValue, VersionField,
@@ -28,6 +27,7 @@ use crate::search::SearchConfig;
use crate::util::img; use crate::util::img;
use crate::util::validate::validation_errors_to_string; use crate::util::validate::validation_errors_to_string;
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use ariadne::ids::base62_impl::parse_base62;
use itertools::Itertools; use itertools::Itertools;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use sqlx::PgPool; use sqlx::PgPool;

View File

@@ -1,9 +1,9 @@
/// This module is used for the indexing from any source. /// This module is used for the indexing from any source.
pub mod local_import; pub mod local_import;
use crate::common::ids::base62_impl::to_base62;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::search::{SearchConfig, UploadSearchProject}; use crate::search::{SearchConfig, UploadSearchProject};
use ariadne::ids::base62_impl::to_base62;
use local_import::index_local; use local_import::index_local;
use log::info; use log::info;
use meilisearch_sdk::client::{Client, SwapIndexes}; use meilisearch_sdk::client::{Client, SwapIndexes};

View File

@@ -1,8 +1,8 @@
use crate::common::ids::base62_impl::to_base62;
use crate::database::models::legacy_loader_fields::MinecraftGameVersion; use crate::database::models::legacy_loader_fields::MinecraftGameVersion;
use crate::database::redis::RedisPool; use crate::database::redis::RedisPool;
use crate::models::projects::ProjectId; use crate::models::projects::ProjectId;
use crate::routes::ApiError; use crate::routes::ApiError;
use ariadne::ids::base62_impl::to_base62;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use serde::Serialize; use serde::Serialize;
use sqlx::PgPool; use sqlx::PgPool;

View File

@@ -1,3 +1,4 @@
use ariadne::ids::base62_impl::parse_base62;
use chrono::{DateTime, Duration, Utc}; use chrono::{DateTime, Duration, Utc};
use common::permissions::PermissionsTest; use common::permissions::PermissionsTest;
use common::permissions::PermissionsTestContext; use common::permissions::PermissionsTestContext;
@@ -7,7 +8,6 @@ use common::{
environment::{with_test_environment, TestEnvironment}, environment::{with_test_environment, TestEnvironment},
}; };
use itertools::Itertools; use itertools::Itertools;
use labrinth::common::ids::base62_impl::parse_base62;
use labrinth::models::teams::ProjectPermissions; use labrinth::models::teams::ProjectPermissions;
use labrinth::queue::payouts; use labrinth::queue::payouts;
use rust_decimal::{prelude::ToPrimitive, Decimal}; use rust_decimal::{prelude::ToPrimitive, Decimal};

View File

@@ -7,7 +7,7 @@ use labrinth::models::{
teams::{OrganizationPermissions, ProjectPermissions}, teams::{OrganizationPermissions, ProjectPermissions},
}; };
use crate::common::{api_v2::ApiV2, api_v3::ApiV3, dummy_data::TestFile}; use ariadne::{api_v2::ApiV2, api_v3::ApiV3, dummy_data::TestFile};
use super::{ use super::{
models::{CommonProject, CommonVersion}, models::{CommonProject, CommonVersion},
@@ -81,7 +81,7 @@ delegate_api_variant!(
[add_gallery_item, ServiceResponse, id_or_slug: &str, image: ImageData, featured: bool, title: Option<String>, description: Option<String>, ordering: Option<i32>, pat: Option<&str>], [add_gallery_item, ServiceResponse, id_or_slug: &str, image: ImageData, featured: bool, title: Option<String>, description: Option<String>, ordering: Option<i32>, pat: Option<&str>],
[remove_gallery_item, ServiceResponse, id_or_slug: &str, image_url: &str, pat: Option<&str>], [remove_gallery_item, ServiceResponse, id_or_slug: &str, image_url: &str, pat: Option<&str>],
[edit_gallery_item, ServiceResponse, id_or_slug: &str, image_url: &str, patch: HashMap<String, String>, pat: Option<&str>], [edit_gallery_item, ServiceResponse, id_or_slug: &str, image_url: &str, patch: HashMap<String, String>, pat: Option<&str>],
[create_report, ServiceResponse, report_type: &str, id: &str, item_type: crate::common::api_common::models::CommonItemType, body: &str, pat: Option<&str>], [create_report, ServiceResponse, report_type: &str, id: &str, item_type: ariadne::api_common::models::CommonItemType, body: &str, pat: Option<&str>],
[get_report, ServiceResponse, id: &str, pat: Option<&str>], [get_report, ServiceResponse, id: &str, pat: Option<&str>],
[get_reports, ServiceResponse, ids: &[&str], pat: Option<&str>], [get_reports, ServiceResponse, ids: &[&str], pat: Option<&str>],
[get_user_reports, ServiceResponse, pat: Option<&str>], [get_user_reports, ServiceResponse, pat: Option<&str>],
@@ -100,9 +100,9 @@ delegate_api_variant!(
#[async_trait(?Send)] #[async_trait(?Send)]
impl ApiTags for GenericApi { impl ApiTags for GenericApi {
[get_loaders, ServiceResponse,], [get_loaders, ServiceResponse,],
[get_loaders_deserialized_common, Vec<crate::common::api_common::models::CommonLoaderData>,], [get_loaders_deserialized_common, Vec<ariadne::api_common::models::CommonLoaderData>,],
[get_categories, ServiceResponse,], [get_categories, ServiceResponse,],
[get_categories_deserialized_common, Vec<crate::common::api_common::models::CommonCategoryData>,], [get_categories_deserialized_common, Vec<ariadne::api_common::models::CommonCategoryData>,],
} }
); );
@@ -110,18 +110,18 @@ delegate_api_variant!(
#[async_trait(?Send)] #[async_trait(?Send)]
impl ApiTeams for GenericApi { impl ApiTeams for GenericApi {
[get_team_members, ServiceResponse, team_id: &str, pat: Option<&str>], [get_team_members, ServiceResponse, team_id: &str, pat: Option<&str>],
[get_team_members_deserialized_common, Vec<crate::common::api_common::models::CommonTeamMember>, team_id: &str, pat: Option<&str>], [get_team_members_deserialized_common, Vec<ariadne::api_common::models::CommonTeamMember>, team_id: &str, pat: Option<&str>],
[get_teams_members, ServiceResponse, ids: &[&str], pat: Option<&str>], [get_teams_members, ServiceResponse, ids: &[&str], pat: Option<&str>],
[get_project_members, ServiceResponse, id_or_slug: &str, pat: Option<&str>], [get_project_members, ServiceResponse, id_or_slug: &str, pat: Option<&str>],
[get_project_members_deserialized_common, Vec<crate::common::api_common::models::CommonTeamMember>, id_or_slug: &str, pat: Option<&str>], [get_project_members_deserialized_common, Vec<ariadne::api_common::models::CommonTeamMember>, id_or_slug: &str, pat: Option<&str>],
[get_organization_members, ServiceResponse, id_or_title: &str, pat: Option<&str>], [get_organization_members, ServiceResponse, id_or_title: &str, pat: Option<&str>],
[get_organization_members_deserialized_common, Vec<crate::common::api_common::models::CommonTeamMember>, id_or_title: &str, pat: Option<&str>], [get_organization_members_deserialized_common, Vec<ariadne::api_common::models::CommonTeamMember>, id_or_title: &str, pat: Option<&str>],
[join_team, ServiceResponse, team_id: &str, pat: Option<&str>], [join_team, ServiceResponse, team_id: &str, pat: Option<&str>],
[remove_from_team, ServiceResponse, team_id: &str, user_id: &str, pat: Option<&str>], [remove_from_team, ServiceResponse, team_id: &str, user_id: &str, pat: Option<&str>],
[edit_team_member, ServiceResponse, team_id: &str, user_id: &str, patch: serde_json::Value, pat: Option<&str>], [edit_team_member, ServiceResponse, team_id: &str, user_id: &str, patch: serde_json::Value, pat: Option<&str>],
[transfer_team_ownership, ServiceResponse, team_id: &str, user_id: &str, pat: Option<&str>], [transfer_team_ownership, ServiceResponse, team_id: &str, user_id: &str, pat: Option<&str>],
[get_user_notifications, ServiceResponse, user_id: &str, pat: Option<&str>], [get_user_notifications, ServiceResponse, user_id: &str, pat: Option<&str>],
[get_user_notifications_deserialized_common, Vec<crate::common::api_common::models::CommonNotification>, user_id: &str, pat: Option<&str>], [get_user_notifications_deserialized_common, Vec<ariadne::api_common::models::CommonNotification>, user_id: &str, pat: Option<&str>],
[get_notification, ServiceResponse, notification_id: &str, pat: Option<&str>], [get_notification, ServiceResponse, notification_id: &str, pat: Option<&str>],
[get_notifications, ServiceResponse, ids: &[&str], pat: Option<&str>], [get_notifications, ServiceResponse, ids: &[&str], pat: Option<&str>],
[mark_notification_read, ServiceResponse, notification_id: &str, pat: Option<&str>], [mark_notification_read, ServiceResponse, notification_id: &str, pat: Option<&str>],

View File

@@ -3,7 +3,7 @@
use labrinth::util::actix::MultipartSegment; use labrinth::util::actix::MultipartSegment;
use crate::common::dummy_data::TestFile; use ariadne::dummy_data::TestFile;
#[allow(dead_code)] #[allow(dead_code)]
pub struct ProjectCreationRequestData { pub struct ProjectCreationRequestData {

View File

@@ -24,7 +24,7 @@ use labrinth::{
}; };
use serde_json::json; use serde_json::json;
use crate::common::database::MOD_USER_PAT; use ariadne::database::MOD_USER_PAT;
use super::{ use super::{
request_data::{self, get_public_project_creation_data}, request_data::{self, get_public_project_creation_data},

View File

@@ -1,7 +1,7 @@
#![allow(dead_code)] #![allow(dead_code)]
use serde_json::json; use serde_json::json;
use crate::common::{ use ariadne::{
api_common::request_data::{ api_common::request_data::{
ProjectCreationRequestData, VersionCreationRequestData, ProjectCreationRequestData, VersionCreationRequestData,
}, },

View File

@@ -1,6 +1,6 @@
use super::ApiV2; use super::ApiV2;
use crate::common::api_common::{Api, ApiUser, AppendsOptionalPat};
use actix_web::{dev::ServiceResponse, test}; use actix_web::{dev::ServiceResponse, test};
use ariadne::api_common::{Api, ApiUser, AppendsOptionalPat};
use async_trait::async_trait; use async_trait::async_trait;
#[async_trait(?Send)] #[async_trait(?Send)]

View File

@@ -1,7 +1,7 @@
#![allow(dead_code)] #![allow(dead_code)]
use serde_json::json; use serde_json::json;
use crate::common::{ use ariadne::{
api_common::request_data::{ api_common::request_data::{
ProjectCreationRequestData, VersionCreationRequestData, ProjectCreationRequestData, VersionCreationRequestData,
}, },

View File

@@ -1,7 +1,7 @@
use actix_web::{dev::ServiceResponse, test}; use actix_web::{dev::ServiceResponse, test};
use async_trait::async_trait; use async_trait::async_trait;
use crate::common::api_common::{Api, ApiUser, AppendsOptionalPat}; use ariadne::api_common::{Api, ApiUser, AppendsOptionalPat};
use super::ApiV3; use super::ApiV3;

View File

@@ -1,6 +1,6 @@
#![allow(dead_code)] #![allow(dead_code)]
use crate::common::get_json_val_str; use ariadne::get_json_val_str;
use itertools::Itertools; use itertools::Itertools;
use labrinth::models::v3::projects::Version; use labrinth::models::v3::projects::Version;

View File

@@ -5,7 +5,7 @@ use sqlx::{postgres::PgPoolOptions, PgPool};
use std::time::Duration; use std::time::Duration;
use url::Url; use url::Url;
use crate::common::{dummy_data, environment::TestEnvironment}; use ariadne::{dummy_data, environment::TestEnvironment};
use super::{api_v3::ApiV3, dummy_data::DUMMY_DATA_UPDATE}; use super::{api_v3::ApiV3, dummy_data::DUMMY_DATA_UPDATE};

View File

@@ -6,7 +6,7 @@ use itertools::Itertools;
use labrinth::models::teams::{OrganizationPermissions, ProjectPermissions}; use labrinth::models::teams::{OrganizationPermissions, ProjectPermissions};
use serde_json::json; use serde_json::json;
use crate::common::{ use ariadne::{
api_common::ApiTeams, api_common::ApiTeams,
database::{generate_random_name, ADMIN_USER_PAT}, database::{generate_random_name, ADMIN_USER_PAT},
}; };

View File

@@ -9,13 +9,11 @@ use labrinth::database::models::legacy_loader_fields::MinecraftGameVersion;
use labrinth::models::v3; use labrinth::models::v3;
use serde_json::json; use serde_json::json;
use crate::common::api_common::{ApiProject, ApiVersion}; use ariadne::api_common::{ApiProject, ApiVersion};
use crate::common::api_v3::request_data::get_public_project_creation_data; use ariadne::api_v3::request_data::get_public_project_creation_data;
use crate::common::database::*; use ariadne::database::*;
use crate::common::dummy_data::{ use ariadne::dummy_data::{DummyProjectAlpha, DummyProjectBeta, TestFile};
DummyProjectAlpha, DummyProjectBeta, TestFile,
};
// importing common module. // importing common module.
mod common; mod common;

View File

@@ -3,7 +3,7 @@ use common::{
environment::with_test_environment_all, environment::with_test_environment_all,
}; };
use crate::common::api_common::ApiTeams; use ariadne::api_common::ApiTeams;
mod common; mod common;

View File

@@ -1,4 +1,5 @@
use crate::common::{ use actix_http::StatusCode;
use ariadne::{
api_common::{ApiProject, ApiTeams}, api_common::{ApiProject, ApiTeams},
database::{ database::{
generate_random_name, ADMIN_USER_PAT, ENEMY_USER_ID_PARSED, generate_random_name, ADMIN_USER_PAT, ENEMY_USER_ID_PARSED,
@@ -9,7 +10,6 @@ use crate::common::{
DummyImage, DummyOrganizationZeta, DummyProjectAlpha, DummyProjectBeta, DummyImage, DummyOrganizationZeta, DummyProjectAlpha, DummyProjectBeta,
}, },
}; };
use actix_http::StatusCode;
use common::{ use common::{
api_v3::ApiV3, api_v3::ApiV3,
database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_PAT}, database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_PAT},

View File

@@ -6,7 +6,7 @@ use common::{database::*, environment::with_test_environment_all};
use labrinth::models::pats::Scopes; use labrinth::models::pats::Scopes;
use serde_json::json; use serde_json::json;
use crate::common::api_common::AppendsOptionalPat; use ariadne::api_common::AppendsOptionalPat;
mod common; mod common;

View File

@@ -4,12 +4,12 @@ use common::api_v3::ApiV3;
use common::database::*; use common::database::*;
use common::dummy_data::DUMMY_CATEGORIES; use common::dummy_data::DUMMY_CATEGORIES;
use ariadne::ids::base62_impl::parse_base62;
use common::environment::{ use common::environment::{
with_test_environment, with_test_environment_all, TestEnvironment, with_test_environment, with_test_environment_all, TestEnvironment,
}; };
use common::permissions::{PermissionsTest, PermissionsTestContext}; use common::permissions::{PermissionsTest, PermissionsTestContext};
use futures::StreamExt; use futures::StreamExt;
use labrinth::common::ids::base62_impl::parse_base62;
use labrinth::database::models::project_item::{ use labrinth::database::models::project_item::{
PROJECTS_NAMESPACE, PROJECTS_SLUGS_NAMESPACE, PROJECTS_NAMESPACE, PROJECTS_SLUGS_NAMESPACE,
}; };
@@ -18,10 +18,10 @@ use labrinth::models::teams::ProjectPermissions;
use labrinth::util::actix::{MultipartSegment, MultipartSegmentData}; use labrinth::util::actix::{MultipartSegment, MultipartSegmentData};
use serde_json::json; use serde_json::json;
use crate::common::api_common::models::CommonProject; use ariadne::api_common::models::CommonProject;
use crate::common::api_common::request_data::ProjectCreationRequestData; use ariadne::api_common::request_data::ProjectCreationRequestData;
use crate::common::api_common::{ApiProject, ApiTeams, ApiVersion}; use ariadne::api_common::{ApiProject, ApiTeams, ApiVersion};
use crate::common::dummy_data::{ use ariadne::dummy_data::{
DummyImage, DummyOrganizationZeta, DummyProjectAlpha, DummyProjectBeta, DummyImage, DummyOrganizationZeta, DummyProjectAlpha, DummyProjectBeta,
TestFile, TestFile,
}; };

View File

@@ -1,13 +1,12 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::common::api_common::{
ApiProject, ApiTeams, ApiUser, ApiVersion, AppendsOptionalPat,
};
use crate::common::dummy_data::{
DummyImage, DummyProjectAlpha, DummyProjectBeta,
};
use actix_http::StatusCode; use actix_http::StatusCode;
use actix_web::test; use actix_web::test;
use ariadne::api_common::{
ApiProject, ApiTeams, ApiUser, ApiVersion, AppendsOptionalPat,
};
use ariadne::dummy_data::{DummyImage, DummyProjectAlpha, DummyProjectBeta};
use ariadne::ids::base62_impl::parse_base62;
use chrono::{Duration, Utc}; use chrono::{Duration, Utc};
use common::api_common::models::CommonItemType; use common::api_common::models::CommonItemType;
use common::api_common::Api; use common::api_common::Api;
@@ -18,7 +17,6 @@ use common::environment::{
with_test_environment, with_test_environment_all, TestEnvironment, with_test_environment, with_test_environment_all, TestEnvironment,
}; };
use common::{database::*, scopes::ScopeTest}; use common::{database::*, scopes::ScopeTest};
use labrinth::common::ids::base62_impl::parse_base62;
use labrinth::models::pats::Scopes; use labrinth::models::pats::Scopes;
use labrinth::models::projects::ProjectId; use labrinth::models::projects::ProjectId;
use labrinth::models::users::UserId; use labrinth::models::users::UserId;

View File

@@ -4,11 +4,11 @@ use common::database::*;
use common::dummy_data::DUMMY_CATEGORIES; use common::dummy_data::DUMMY_CATEGORIES;
use ariadne::ids::base62_impl::parse_base62;
use common::environment::with_test_environment; use common::environment::with_test_environment;
use common::environment::TestEnvironment; use common::environment::TestEnvironment;
use common::search::setup_search_projects; use common::search::setup_search_projects;
use futures::stream::StreamExt; use futures::stream::StreamExt;
use labrinth::common::ids::base62_impl::parse_base62;
use serde_json::json; use serde_json::json;
use crate::common::api_common::Api; use crate::common::api_common::Api;

View File

@@ -7,7 +7,7 @@ use common::{
}, },
}; };
use crate::common::api_common::ApiTags; use ariadne::api_common::ApiTags;
mod common; mod common;

View File

@@ -1,5 +1,5 @@
use crate::common::{api_common::ApiTeams, database::*};
use actix_http::StatusCode; use actix_http::StatusCode;
use ariadne::{api_common::ApiTeams, database::*};
use common::{ use common::{
api_v3::ApiV3, api_v3::ApiV3,
environment::{ environment::{

View File

@@ -1,4 +1,4 @@
use crate::common::api_common::{ApiProject, ApiTeams}; use ariadne::api_common::{ApiProject, ApiTeams};
use common::dummy_data::TestFile; use common::dummy_data::TestFile;
use common::{ use common::{
database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_ID, USER_USER_PAT}, database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_ID, USER_USER_PAT},

View File

@@ -1,12 +1,12 @@
use crate::assert_status; use crate::assert_status;
use crate::common::api_common::ApiProject; use ariadne::api_common::ApiProject;
use actix_http::StatusCode; use actix_http::StatusCode;
use actix_web::test; use actix_web::test;
use bytes::Bytes; use bytes::Bytes;
use crate::common::database::USER_USER_PAT; use ariadne::database::USER_USER_PAT;
use crate::common::{ use ariadne::{
api_v2::ApiV2, api_v2::ApiV2,
environment::{with_test_environment, TestEnvironment}, environment::{with_test_environment, TestEnvironment},
}; };

View File

@@ -1,4 +1,4 @@
use crate::common::{ use ariadne::{
api_common::ApiTeams, api_common::ApiTeams,
api_v2::ApiV2, api_v2::ApiV2,
database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_PAT}, database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_PAT},

View File

@@ -16,9 +16,9 @@ use crate::{
}; };
use actix_http::StatusCode; use actix_http::StatusCode;
use actix_web::test; use actix_web::test;
use ariadne::ids::base62_impl::parse_base62;
use futures::StreamExt; use futures::StreamExt;
use itertools::Itertools; use itertools::Itertools;
use labrinth::common::ids::base62_impl::parse_base62;
use labrinth::{ use labrinth::{
database::models::project_item::PROJECTS_SLUGS_NAMESPACE, database::models::project_item::PROJECTS_SLUGS_NAMESPACE,
models::{projects::ProjectId, teams::ProjectPermissions}, models::{projects::ProjectId, teams::ProjectPermissions},

View File

@@ -1,12 +1,12 @@
use crate::common::api_common::ApiProject; use ariadne::api_common::ApiProject;
use crate::common::api_common::ApiVersion; use ariadne::api_common::ApiVersion;
use crate::common::api_v2::request_data::get_public_project_creation_data; use ariadne::api_v2::request_data::get_public_project_creation_data;
use crate::common::api_v2::ApiV2; use ariadne::api_v2::ApiV2;
use crate::common::dummy_data::TestFile; use ariadne::dummy_data::TestFile;
use crate::common::environment::with_test_environment; use ariadne::environment::with_test_environment;
use crate::common::environment::TestEnvironment; use ariadne::environment::TestEnvironment;
use crate::common::scopes::ScopeTest; use ariadne::ids::base62_impl::parse_base62;
use labrinth::common::ids::base62_impl::parse_base62; use ariadne::scopes::ScopeTest;
use labrinth::models::pats::Scopes; use labrinth::models::pats::Scopes;
use labrinth::models::projects::ProjectId; use labrinth::models::projects::ProjectId;

View File

@@ -1,17 +1,17 @@
use crate::assert_status; use crate::assert_status;
use crate::common::api_common::Api; use ariadne::api_common::Api;
use crate::common::api_common::ApiProject; use ariadne::api_common::ApiProject;
use crate::common::api_common::ApiVersion; use ariadne::api_common::ApiVersion;
use crate::common::api_v2::ApiV2; use ariadne::api_v2::ApiV2;
use crate::common::database::*;
use crate::common::dummy_data::TestFile;
use crate::common::dummy_data::DUMMY_CATEGORIES;
use crate::common::environment::with_test_environment;
use crate::common::environment::TestEnvironment;
use actix_http::StatusCode; use actix_http::StatusCode;
use ariadne::database::*;
use ariadne::dummy_data::TestFile;
use ariadne::dummy_data::DUMMY_CATEGORIES;
use ariadne::environment::with_test_environment;
use ariadne::environment::TestEnvironment;
use ariadne::ids::base62_impl::parse_base62;
use futures::stream::StreamExt; use futures::stream::StreamExt;
use labrinth::common::ids::base62_impl::parse_base62;
use serde_json::json; use serde_json::json;
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::Arc; use std::sync::Arc;

View File

@@ -3,7 +3,7 @@ use labrinth::routes::v2::tags::DonationPlatformQueryData;
use std::collections::HashSet; use std::collections::HashSet;
use crate::common::{ use ariadne::{
api_v2::ApiV2, api_v2::ApiV2,
environment::{with_test_environment, TestEnvironment}, environment::{with_test_environment, TestEnvironment},
}; };

View File

@@ -9,13 +9,13 @@ use labrinth::{
use serde_json::json; use serde_json::json;
use crate::assert_status; use crate::assert_status;
use crate::common::api_common::{ApiProject, ApiVersion}; use ariadne::api_common::{ApiProject, ApiVersion};
use crate::common::api_v2::ApiV2; use ariadne::api_v2::ApiV2;
use crate::common::api_v2::request_data::get_public_project_creation_data; use ariadne::api_v2::request_data::get_public_project_creation_data;
use crate::common::dummy_data::{DummyProjectAlpha, DummyProjectBeta}; use ariadne::dummy_data::{DummyProjectAlpha, DummyProjectBeta};
use crate::common::environment::{with_test_environment, TestEnvironment}; use ariadne::environment::{with_test_environment, TestEnvironment};
use crate::common::{ use ariadne::{
database::{ENEMY_USER_PAT, USER_USER_PAT}, database::{ENEMY_USER_PAT, USER_USER_PAT},
dummy_data::TestFile, dummy_data::TestFile,
}; };

View File

@@ -1,19 +1,17 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::common::api_common::ApiVersion;
use crate::common::database::*;
use crate::common::dummy_data::{
DummyProjectAlpha, DummyProjectBeta, TestFile,
};
use crate::common::get_json_val_str;
use actix_http::StatusCode; use actix_http::StatusCode;
use actix_web::test; use actix_web::test;
use ariadne::api_common::ApiVersion;
use ariadne::database::*;
use ariadne::dummy_data::{DummyProjectAlpha, DummyProjectBeta, TestFile};
use ariadne::get_json_val_str;
use ariadne::ids::base62_impl::parse_base62;
use common::api_v3::ApiV3; use common::api_v3::ApiV3;
use common::asserts::assert_common_version_ids; use common::asserts::assert_common_version_ids;
use common::database::USER_USER_PAT; use common::database::USER_USER_PAT;
use common::environment::{with_test_environment, with_test_environment_all}; use common::environment::{with_test_environment, with_test_environment_all};
use futures::StreamExt; use futures::StreamExt;
use labrinth::common::ids::base62_impl::parse_base62;
use labrinth::database::models::version_item::VERSIONS_NAMESPACE; use labrinth::database::models::version_item::VERSIONS_NAMESPACE;
use labrinth::models::projects::{ use labrinth::models::projects::{
Dependency, DependencyType, VersionId, VersionStatus, VersionType, Dependency, DependencyType, VersionId, VersionStatus, VersionType,

View File

@@ -63,7 +63,7 @@ base64 = "0.22.0"
sqlx = { version = "0.8.2", features = [ "runtime-tokio", "sqlite", "macros" ] } sqlx = { version = "0.8.2", features = [ "runtime-tokio", "sqlite", "macros" ] }
labrinth = { path = "../../apps/labrinth" } ariadne = { path = "../ariadne" }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
winreg = "0.52.0" winreg = "0.52.0"

View File

@@ -1,5 +1,5 @@
use crate::state::{FriendsSocket, UserFriend}; use crate::state::{FriendsSocket, UserFriend};
use labrinth::common::users::UserStatus; use ariadne::users::UserStatus;
#[tracing::instrument] #[tracing::instrument]
pub async fn friends() -> crate::Result<Vec<UserFriend>> { pub async fn friends() -> crate::Result<Vec<UserFriend>> {

View File

@@ -21,7 +21,7 @@ pub mod data {
Project, ProjectType, SearchResult, SearchResults, Settings, Project, ProjectType, SearchResult, SearchResults, Settings,
TeamMember, Theme, User, UserFriend, Version, WindowSize, TeamMember, Theme, User, UserFriend, Version, WindowSize,
}; };
pub use labrinth::common::users::UserStatus; pub use ariadne::users::UserStatus;
} }
pub mod prelude { pub mod prelude {

View File

@@ -15,7 +15,7 @@ pub enum ErrorKind {
#[error("Serialization error (websocket): {0}")] #[error("Serialization error (websocket): {0}")]
WebsocketSerializationError( WebsocketSerializationError(
#[from] labrinth::common::networking::serialization::SerializationError, #[from] ariadne::networking::serialization::SerializationError,
), ),
#[error("Error parsing UUID: {0}")] #[error("Error parsing UUID: {0}")]

View File

@@ -1,6 +1,6 @@
//! Theseus state management system //! Theseus state management system
use ariadne::users::{UserId, UserStatus};
use dashmap::DashMap; use dashmap::DashMap;
use labrinth::common::users::{UserId, UserStatus};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{path::PathBuf, sync::Arc}; use std::{path::PathBuf, sync::Arc};
#[cfg(feature = "tauri")] #[cfg(feature = "tauri")]

View File

@@ -5,6 +5,10 @@ use crate::event::FriendPayload;
use crate::state::tunnel::InternalTunnelSocket; use crate::state::tunnel::InternalTunnelSocket;
use crate::state::{ProcessManager, Profile, TunnelSocket}; use crate::state::{ProcessManager, Profile, TunnelSocket};
use crate::util::fetch::{fetch_advanced, fetch_json, FetchSemaphore}; use crate::util::fetch::{fetch_advanced, fetch_json, FetchSemaphore};
use ariadne::networking::message::{
ClientToServerMessage, ServerToClientMessage,
};
use ariadne::users::{UserId, UserStatus};
use async_tungstenite::tokio::{connect_async, ConnectStream}; use async_tungstenite::tokio::{connect_async, ConnectStream};
use async_tungstenite::tungstenite::client::IntoClientRequest; use async_tungstenite::tungstenite::client::IntoClientRequest;
use async_tungstenite::tungstenite::Message; use async_tungstenite::tungstenite::Message;
@@ -14,10 +18,6 @@ use dashmap::DashMap;
use either::Either; use either::Either;
use futures::stream::SplitSink; use futures::stream::SplitSink;
use futures::{SinkExt, StreamExt}; use futures::{SinkExt, StreamExt};
use labrinth::common::networking::message::{
ClientToServerMessage, ServerToClientMessage,
};
use labrinth::common::users::{UserId, UserStatus};
use reqwest::header::HeaderValue; use reqwest::header::HeaderValue;
use reqwest::Method; use reqwest::Method;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};

View File

@@ -1,6 +1,6 @@
use crate::state::friends::{TunnelSockets, WriteSocket}; use crate::state::friends::{TunnelSockets, WriteSocket};
use crate::state::FriendsSocket; use crate::state::FriendsSocket;
use labrinth::common::networking::message::ClientToServerMessage; use ariadne::networking::message::ClientToServerMessage;
use std::net::SocketAddr; use std::net::SocketAddr;
use std::sync::Arc; use std::sync::Arc;
use tokio::io::AsyncWriteExt; use tokio::io::AsyncWriteExt;

View File

@@ -0,0 +1,15 @@
[package]
name = "ariadne"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "1.0"
uuid = { version = "1.2.2", features = ["v4", "fast-rng", "serde"] }
serde_bytes = "0.11"
rand = "0.8.5"
either = "1.13"
chrono = { version = "0.4.26", features = ["serde"] }
serde_cbor = "0.11"

View File

@@ -94,9 +94,7 @@ macro_rules! impl_base62_display {
($struct:ty) => { ($struct:ty) => {
impl std::fmt::Display for $struct { impl std::fmt::Display for $struct {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(&$crate::common::ids::base62_impl::to_base62( f.write_str(&$crate::ids::base62_impl::to_base62(self.0))
self.0,
))
} }
} }
}; };
@@ -106,8 +104,8 @@ impl_base62_display!(Base62Id);
#[macro_export] #[macro_export]
macro_rules! base62_id_impl { macro_rules! base62_id_impl {
($struct:ty, $cons:expr) => { ($struct:ty, $cons:expr) => {
$crate::common::ids::from_base62id!($struct, $cons;); $crate::ids::from_base62id!($struct, $cons;);
$crate::common::ids::impl_base62_display!($struct); $crate::ids::impl_base62_display!($struct);
} }
} }
base62_id_impl!(UserId, UserId); base62_id_impl!(UserId, UserId);

View File

@@ -0,0 +1,3 @@
pub mod ids;
pub mod networking;
pub mod users;

View File

@@ -1,5 +1,5 @@
use crate::common::ids::UserId; use crate::ids::UserId;
use crate::common::users::UserStatus; use crate::users::UserStatus;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use uuid::Uuid; use uuid::Uuid;