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
@@ -0,0 +1,10 @@
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 {}
+19
View File
@@ -0,0 +1,19 @@
use crate::domain::dto::user::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,
}
+39
View File
@@ -0,0 +1,39 @@
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>,
}
+67
View File
@@ -0,0 +1,67 @@
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,
}
+14
View File
@@ -0,0 +1,14 @@
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>,
}
+44
View File
@@ -0,0 +1,44 @@
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),
}
}
}
+9
View File
@@ -0,0 +1,9 @@
pub mod auth;
pub mod attachment;
pub mod message;
pub mod role;
pub mod server;
pub mod core;
pub mod user;
pub mod channel;
pub mod category;
+29
View File
@@ -0,0 +1,29 @@
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>,
}
+52
View File
@@ -0,0 +1,52 @@
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,
}
+29
View File
@@ -0,0 +1,29 @@
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
View File
@@ -1 +1,2 @@
pub mod events;
pub mod dto;