feat(lib/models): add push subscriptions, scheduled messages, sessions, suspensions user entities
ZhenYi committed
Modified lib/models/src/users/user_push_subscriptions.rs lib/models/src/users/user_push_subscriptions.rs +1 −0 View lib/models/src/users/user_push_subscriptions.rs
@@ -5,6 +5,7 @@
55
66#[derive(
77 Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
8 utoipa::ToSchema,
89)]
910#[sea_orm(rs_type = "String", db_type = "String(StringLen::N(16))")]
1011pub enum PushSubscriptionPlatform {
Modified lib/models/src/users/user_scheduled_messages.rs lib/models/src/users/user_scheduled_messages.rs +1 −0 View lib/models/src/users/user_scheduled_messages.rs
@@ -6,6 +6,7 @@
66
77#[derive(
88 Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
9 utoipa::ToSchema,
910)]
1011#[sea_orm(rs_type = "String", db_type = "String(StringLen::N(16))")]
1112pub enum ScheduledMessageStatus {
Modified lib/models/src/users/user_sessions.rs lib/models/src/users/user_sessions.rs +6 −0 View lib/models/src/users/user_sessions.rs
@@ -5,6 +5,7 @@
55
66#[derive(
77 Debug, Clone, Copy, PartialEq, Eq, Default, EnumIter, DeriveActiveEnum, Serialize, Deserialize,
8 utoipa::ToSchema,
89)]
910#[sea_orm(rs_type = "i16", db_type = "SmallInteger")]
1011pub enum SessionKind {
@@ -32,6 +33,10 @@
3233 pub user_agent_hash: Option<String>,
3334 pub client_ip_hash: Option<String>,
3435
36 pub device_id: Option<Uuid>,
37 #[sea_orm(belongs_to, from = "device_id", to = "id")]
38 pub device: BelongsTo<Option<super::user_devices::Entity>>,
39
3540 #[sea_orm(default_value = "0")]
3641 pub kind: SessionKind,
3742
@@ -43,6 +48,7 @@
4348 pub is_revoked: bool,
4449
4550 pub revoked_at: Option<OffsetDateTime>,
51 pub last_seen_at: OffsetDateTime,
4652 pub created_at: OffsetDateTime,
4753 pub expires_at: OffsetDateTime,
4854 pub replaced_at: Option<OffsetDateTime>,
Modified lib/models/src/users/user_suspensions.rs lib/models/src/users/user_suspensions.rs +1 −0 View lib/models/src/users/user_suspensions.rs
@@ -12,6 +12,7 @@
1212 DeriveActiveEnum,
1313 serde::Serialize,
1414 serde::Deserialize,
15 utoipa::ToSchema,
1516)]
1617#[serde(rename_all = "snake_case")]
1718#[sea_orm(rs_type = "String", db_type = "String(StringLen::N(16))")]
Modified lib/models/Cargo.toml lib/models/Cargo.toml +1 −1 View lib/models/Cargo.toml
@@ -9,5 +9,5 @@
99uuid = { version = "1", features = ["v7", "serde"] }
1010serde = { version = "1", features = ["derive"] }
1111serde_json = { workspace = true }
12utoipa = "5.5"
12utoipa = { version = "5.5", features = ["axum_extras", "time", "uuid"] }
1313tokio = { version = "1.53.1", features = [] }
Modified lib/models/schema_extras.sql lib/models/schema_extras.sql +2 −0 View lib/models/schema_extras.sql
@@ -35,6 +35,8 @@
3535-- ---------------------------------------------------------------------------
3636CREATE INDEX IF NOT EXISTS idx_comment_parent_id ON comment (parent_id);
3737CREATE INDEX IF NOT EXISTS idx_git_commit_status_sha ON git_commit_status (repo_id, sha);
38CREATE INDEX IF NOT EXISTS idx_user_session_user_created ON user_session (user_id, created_at DESC);
39CREATE INDEX IF NOT EXISTS idx_user_session_expires ON user_session (expires_at);
3840
3941-- Single-column indexes for reserved project_id columns (parity with the
4042-- historical project module; columns are kept until project is restored).