This commit is contained in:
2026-07-29 17:41:52 +02:00
parent 98050bb770
commit 6cb9acf98b
38 changed files with 55 additions and 52 deletions
-10
View File
@@ -1,10 +0,0 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct CreateAttachmentRequest {}
#[derive(Debug, Serialize, Deserialize)]
pub struct UpdateAttachmentRequest {}
#[derive(Debug, Serialize, Deserialize)]
pub struct AttachmentResponse {}
+2 -1
View File
@@ -1,4 +1,5 @@
use super::{domain::Attachment, dto::AttachmentResponse};
use super::domain::Attachment;
use crate::domain::dto::attachment::AttachmentResponse;
pub fn to_response(_item: Attachment) -> AttachmentResponse {
todo!()
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-19
View File
@@ -1,19 +0,0 @@
use crate::routes::user::dto::UserResponse;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Debug, Deserialize, ToSchema)]
pub struct LoginRequest {
pub username: String,
pub password: String,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct LoginResponse {
pub token: String,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct MeResponse {
pub user: UserResponse,
}
+1 -1
View File
@@ -1,4 +1,4 @@
use super::dto::{LoginRequest, LoginResponse, MeResponse};
use crate::domain::dto::auth::{LoginRequest, LoginResponse, MeResponse};
use crate::auth::token::create_jwt;
use crate::core::AppState;
use crate::http::context::CurrentUser;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-39
View File
@@ -1,39 +0,0 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema, utoipa::IntoParams)]
pub struct CategoryQueryParams {
pub server_id: Option<Uuid>,
}
impl Default for CategoryQueryParams {
fn default() -> Self {
Self {
server_id: None,
}
}
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateCategoryRequest {
pub server_id: Uuid,
#[schema(example = "Discussion")]
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateCategoryRequest {
#[schema(example = "Discussion (Maj)")]
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CategoryResponse {
pub id: Uuid,
pub server_id: Uuid,
pub name: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
+1 -1
View File
@@ -1,7 +1,7 @@
use crate::core::state::AppState;
use crate::http::context::Superuser;
use crate::http::error::HTTPError;
use crate::routes::category::dto::{
use crate::domain::dto::category::{
CategoryQueryParams, CategoryResponse, CreateCategoryRequest, UpdateCategoryRequest,
};
use crate::routes::category::mapper;
+1 -1
View File
@@ -1,5 +1,5 @@
use crate::models::category;
use crate::routes::category::dto::{
use crate::domain::dto::category::{
CategoryResponse, CreateCategoryRequest, UpdateCategoryRequest,
};
use sea_orm::Set;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-67
View File
@@ -1,67 +0,0 @@
use crate::models::channel::ChannelType;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema, utoipa::IntoParams)]
pub struct ChannelQueryParams {
pub server_id: Option<Uuid>,
}
impl Default for ChannelQueryParams {
fn default() -> Self {
Self { server_id: None }
}
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateChannelRequest {
pub server_id: Option<Uuid>,
pub category_id: Option<Uuid>,
pub channel_type: ChannelType,
#[schema(example = "général")]
pub name: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateChannelRequest {
pub server_id: Option<Uuid>,
pub category_id: Option<Uuid>,
pub channel_type: ChannelType,
pub name: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct ChannelResponse {
pub id: Uuid,
pub server_id: Option<Uuid>,
pub category_id: Option<Uuid>,
pub channel_type: ChannelType,
pub name: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct SetChannelPermissionRequest {
/// Bitmask des permissions à appliquer.
#[schema(example = 15)]
pub permissions: u64,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct ChannelUserPermissionResponse {
pub id: Uuid,
pub channel_id: Uuid,
pub user_id: Uuid,
pub permissions: u64,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct ChannelRolePermissionResponse {
pub id: Uuid,
pub channel_id: Uuid,
pub role_id: Uuid,
pub permissions: u64,
}
+1 -1
View File
@@ -1,7 +1,7 @@
use crate::core::state::AppState;
use crate::http::context::Superuser;
use crate::http::error::HTTPError;
use crate::routes::channel::dto::{
use crate::domain::dto::channel::{
ChannelQueryParams, ChannelResponse, ChannelRolePermissionResponse,
ChannelUserPermissionResponse, CreateChannelRequest, SetChannelPermissionRequest,
UpdateChannelRequest,
+1 -1
View File
@@ -1,6 +1,6 @@
use crate::models::{channel, channel_role_permission, channel_user_permission};
use crate::repositories::types::ChannelFilter;
use crate::routes::channel::dto::{
use crate::domain::dto::channel::{
ChannelQueryParams, ChannelResponse, ChannelRolePermissionResponse,
ChannelUserPermissionResponse, CreateChannelRequest, UpdateChannelRequest,
};
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-14
View File
@@ -1,14 +0,0 @@
use serde::Deserialize;
use utoipa::ToSchema;
use validator::Validate;
#[derive(Deserialize, Validate, ToSchema)]
pub struct JoinRequest {
#[validate(length(min = 3, message = "Username must be at least 3 characters long"))]
pub username: String,
#[validate(length(min = 8, message = "Password must be at least 8 characters long"))]
pub password: String,
#[validate(must_match(other = "password", message = "Passwords do not match"))]
pub password_valid: String,
pub superuser_token: Option<String>,
}
+1 -1
View File
@@ -1,7 +1,7 @@
use crate::core::AppState;
use crate::http::error::HTTPError;
use crate::http::validation::ValidatedJson;
use crate::routes::core::dto::JoinRequest;
use crate::domain::dto::core::JoinRequest;
use crate::routes::core::mapper::join_request_to_user_am;
use axum::extract::State;
use axum::http::StatusCode;
+1 -1
View File
@@ -1,6 +1,6 @@
use crate::auth::password::hash_password;
use crate::models::user;
use crate::routes::core::dto::JoinRequest;
use crate::domain::dto::core::JoinRequest;
use anyhow::Result as AnyResult;
use sea_orm::Set;
use uuid::Uuid;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-44
View File
@@ -1,44 +0,0 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct MessageResponse {
pub id: Uuid,
pub channel_id: Uuid,
pub user_id: Uuid,
pub content: String,
pub created_at: DateTime<Utc>,
pub updated_at: Option<DateTime<Utc>>,
pub reply_to_id: Option<Uuid>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateMessageRequest {
pub channel_id: Uuid,
pub content: String,
pub reply_to_id: Option<Uuid>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateMessageRequest {
pub content: String,
}
#[derive(serde::Deserialize, utoipa::IntoParams)]
pub struct MessageQueryParams {
pub channel_id: Option<uuid::Uuid>,
pub before_id: Option<Uuid>,
pub limit: Option<u64>,
}
impl Default for MessageQueryParams {
fn default() -> Self {
Self {
channel_id: None,
before_id: None,
limit: Some(50),
}
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
use super::dto::{CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest};
use crate::domain::dto::message::{CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest};
use crate::core::state::AppState;
use crate::http::context::CurrentUser;
use crate::http::error::HTTPError;
+1 -1
View File
@@ -1,6 +1,6 @@
use crate::models::message;
use crate::repositories::types::MessageFilter;
use crate::routes::message::dto::{
use crate::domain::dto::message::{
CreateMessageRequest, MessageQueryParams, MessageResponse, UpdateMessageRequest,
};
use chrono::Utc;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
+22 -22
View File
@@ -44,28 +44,28 @@ use utoipa::{Modify, OpenApi};
),
components(
schemas(
auth::dto::LoginRequest,
auth::dto::LoginResponse,
auth::dto::MeResponse,
user::dto::UserResponse,
user::dto::CreateUserRequest,
user::dto::UpdateUserRequest,
server::dto::ServerResponse,
server::dto::CreateServerRequest,
server::dto::UpdateServerRequest,
category::dto::CategoryResponse,
category::dto::CreateCategoryRequest,
category::dto::UpdateCategoryRequest,
channel::dto::ChannelResponse,
channel::dto::CreateChannelRequest,
channel::dto::UpdateChannelRequest,
role::dto::RoleResponse,
role::dto::CreateRoleRequest,
role::dto::UpdateRoleRequest,
message::dto::MessageResponse,
message::dto::CreateMessageRequest,
message::dto::UpdateMessageRequest,
core::dto::JoinRequest,
crate::domain::dto::auth::LoginRequest,
crate::domain::dto::auth::LoginResponse,
crate::domain::dto::auth::MeResponse,
crate::domain::dto::user::UserResponse,
crate::domain::dto::user::CreateUserRequest,
crate::domain::dto::user::UpdateUserRequest,
crate::domain::dto::server::ServerResponse,
crate::domain::dto::server::CreateServerRequest,
crate::domain::dto::server::UpdateServerRequest,
crate::domain::dto::category::CategoryResponse,
crate::domain::dto::category::CreateCategoryRequest,
crate::domain::dto::category::UpdateCategoryRequest,
crate::domain::dto::channel::ChannelResponse,
crate::domain::dto::channel::CreateChannelRequest,
crate::domain::dto::channel::UpdateChannelRequest,
crate::domain::dto::role::RoleResponse,
crate::domain::dto::role::CreateRoleRequest,
crate::domain::dto::role::UpdateRoleRequest,
crate::domain::dto::message::MessageResponse,
crate::domain::dto::message::CreateMessageRequest,
crate::domain::dto::message::UpdateMessageRequest,
crate::domain::dto::core::JoinRequest,
ChannelType,
)
),
-29
View File
@@ -1,29 +0,0 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateRoleRequest {
pub server_id: Uuid,
#[schema(example = "Modérateurs")]
pub name: String,
#[serde(default)]
pub is_default: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateRoleRequest {
#[schema(example = "Modérateurs (MAJ)")]
pub name: String,
pub is_default: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct RoleResponse {
pub id: Uuid,
pub server_id: Uuid,
pub name: String,
pub is_default: bool,
pub created_at: DateTime<Utc>,
}
+1 -1
View File
@@ -1,7 +1,7 @@
use crate::core::state::AppState;
use crate::http::context::Superuser;
use crate::http::error::HTTPError;
use crate::routes::role::dto::{CreateRoleRequest, RoleResponse, UpdateRoleRequest};
use crate::domain::dto::role::{CreateRoleRequest, RoleResponse, UpdateRoleRequest};
use crate::routes::role::mapper;
use axum::{
Json,
+1 -1
View File
@@ -1,5 +1,5 @@
use crate::models::role;
use crate::routes::role::dto::{CreateRoleRequest, RoleResponse, UpdateRoleRequest};
use crate::domain::dto::role::{CreateRoleRequest, RoleResponse, UpdateRoleRequest};
use sea_orm::Set;
use uuid::Uuid;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-52
View File
@@ -1,52 +0,0 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateServerRequest {
#[schema(example = "Mon Super Serveur")]
pub name: String,
pub password: Option<String>,
#[serde(default)]
pub is_default: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateServerRequest {
pub name: String,
pub password: Option<String>,
pub is_default: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct ServerResponse {
pub id: Uuid,
pub name: String,
pub is_default: bool,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct SetServerPermissionRequest {
/// Bitmask des permissions à appliquer.
#[schema(example = 7)]
pub permissions: u64,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct ServerUserPermissionResponse {
pub id: Uuid,
pub server_id: Uuid,
pub user_id: Uuid,
pub permissions: u64,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct ServerRolePermissionResponse {
pub id: Uuid,
pub server_id: Uuid,
pub role_id: Uuid,
pub permissions: u64,
}
+1 -1
View File
@@ -2,7 +2,7 @@ use crate::core::state::AppState;
use crate::http::context::Superuser;
use crate::http::error::HTTPError;
use crate::repositories::types::{ChannelFilter, ServerTree};
use crate::routes::server::dto::{
use crate::domain::dto::server::{
CreateServerRequest, ServerResponse, ServerRolePermissionResponse,
ServerUserPermissionResponse, SetServerPermissionRequest, UpdateServerRequest,
};
+1 -1
View File
@@ -2,7 +2,7 @@ use crate::models::{
category, channel, server, server_item_order, server_role_permission, server_user_permission,
};
use crate::repositories::types::{ServerExplorerItem, ServerTree};
use crate::routes::server::dto::{
use crate::domain::dto::server::{
CreateServerRequest, ServerResponse, ServerRolePermissionResponse,
ServerUserPermissionResponse, UpdateServerRequest,
};
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;
-29
View File
@@ -1,29 +0,0 @@
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct CreateUserRequest {
pub username: String,
pub password: String,
pub pub_key: Option<String>,
pub is_superuser: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UpdateUserRequest {
pub username: String,
pub pub_key: Option<String>,
pub is_superuser: bool,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct UserResponse {
pub id: Uuid,
pub username: String,
pub pub_key: Option<String>,
pub is_superuser: bool,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
+1 -1
View File
@@ -1,7 +1,7 @@
use crate::core::state::AppState;
use crate::http::context::Superuser;
use crate::http::error::HTTPError;
use crate::routes::user::dto::{CreateUserRequest, UpdateUserRequest, UserResponse};
use crate::domain::dto::user::{CreateUserRequest, UpdateUserRequest, UserResponse};
use crate::routes::user::mapper;
use axum::{
Json,
+1 -1
View File
@@ -1,6 +1,6 @@
use crate::auth::password::hash_password;
use crate::models::user;
use crate::routes::user::dto::{CreateUserRequest, UpdateUserRequest, UserResponse};
use crate::domain::dto::user::{CreateUserRequest, UpdateUserRequest, UserResponse};
use anyhow::Result as AnyResult;
use sea_orm::{NotSet, Set};
use uuid::Uuid;
-1
View File
@@ -1,5 +1,4 @@
pub mod domain;
pub mod dto;
pub mod handlers;
pub mod mapper;
pub mod routes;