+1
src/db/mod.rs
+1
src/db/mod.rs
+1
src/db/tables/mod.rs
+1
src/db/tables/mod.rs
···
1
+
mod moderation;
+72
src/db/tables/moderation.rs
+72
src/db/tables/moderation.rs
···
1
+
//! Moderation-related database table definitions.
2
+
3
+
use serde::{Deserialize, Serialize};
4
+
use sqlx::FromRow;
5
+
6
+
/// Table names for moderation-related entities.
7
+
pub const ACTION_TABLE_NAME: &str = "moderation_action";
8
+
pub const ACTION_SUBJECT_BLOB_TABLE_NAME: &str = "moderation_action_subject_blob";
9
+
pub const REPORT_TABLE_NAME: &str = "moderation_report";
10
+
pub const REPORT_RESOLUTION_TABLE_NAME: &str = "moderation_report_resolution";
11
+
12
+
/// Represents a moderation action.
13
+
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
14
+
#[sqlx(rename_all = "camelCase")]
15
+
pub struct ModerationAction {
16
+
pub id: i32, // Auto-generated ID
17
+
pub action: String,
18
+
pub subject_type: String,
19
+
pub subject_did: String,
20
+
pub subject_uri: Option<String>,
21
+
pub subject_cid: Option<String>,
22
+
pub create_label_vals: Option<String>,
23
+
pub negate_label_vals: Option<String>,
24
+
pub comment: Option<String>,
25
+
pub created_at: String,
26
+
pub created_by: String,
27
+
pub duration_in_hours: Option<i32>,
28
+
pub expires_at: Option<String>,
29
+
pub meta: Option<std::collections::HashMap<String, serde_json::Value>>,
30
+
}
31
+
32
+
/// Represents a subject blob associated with a moderation action.
33
+
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
34
+
#[sqlx(rename_all = "camelCase")]
35
+
pub struct ModerationActionSubjectBlob {
36
+
pub action_id: i32,
37
+
pub cid: String,
38
+
pub record_uri: String,
39
+
}
40
+
41
+
/// Represents a moderation report.
42
+
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
43
+
#[sqlx(rename_all = "camelCase")]
44
+
pub struct ModerationReport {
45
+
pub id: i32, // Auto-generated ID
46
+
pub subject_type: String,
47
+
pub subject_did: String,
48
+
pub subject_uri: Option<String>,
49
+
pub subject_cid: Option<String>,
50
+
pub reason_type: String,
51
+
pub reason: Option<String>,
52
+
pub reported_by_did: String,
53
+
pub created_at: String,
54
+
}
55
+
56
+
/// Represents a resolution for a moderation report.
57
+
#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
58
+
#[sqlx(rename_all = "camelCase")]
59
+
pub struct ModerationReportResolution {
60
+
pub report_id: i32,
61
+
pub action_id: i32,
62
+
pub created_at: String,
63
+
pub created_by: String,
64
+
}
65
+
66
+
/// Represents a partial database schema for moderation-related tables.
67
+
pub struct PartialDB {
68
+
pub moderation_action: Vec<ModerationAction>,
69
+
pub moderation_action_subject_blob: Vec<ModerationActionSubjectBlob>,
70
+
pub moderation_report: Vec<ModerationReport>,
71
+
pub moderation_report_resolution: Vec<ModerationReportResolution>,
72
+
}