From 413708f2baa3987b4b8c7c727eeee8cfd8d59f73 Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Sat, 27 Sep 2025 13:48:50 +0300 Subject: Fix invite tokens models --- entity/src/access_to_queue.rs | 15 +++++++++++++++ entity/src/invite_tokens.rs | 10 ++++++++++ entity/src/queues.rs | 5 +---- entity/src/users.rs | 5 +---- migration/src/m0_init_tables.rs | 17 +++++++++++++++++ 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/entity/src/access_to_queue.rs b/entity/src/access_to_queue.rs index 9de03d5..5244ed0 100644 --- a/entity/src/access_to_queue.rs +++ b/entity/src/access_to_queue.rs @@ -9,10 +9,19 @@ pub struct Model { pub user_id: i64, #[sea_orm(primary_key, auto_increment = false)] pub queue_id: i64, + pub invite_token_id: i64, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { + #[sea_orm( + belongs_to = "super::invite_tokens::Entity", + from = "Column::InviteTokenId", + to = "super::invite_tokens::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + InviteTokens, #[sea_orm( belongs_to = "super::queues::Entity", from = "Column::QueueId", @@ -31,6 +40,12 @@ pub enum Relation { Users, } +impl Related for Entity { + fn to() -> RelationDef { + Relation::InviteTokens.def() + } +} + impl Related for Entity { fn to() -> RelationDef { Relation::Queues.def() diff --git a/entity/src/invite_tokens.rs b/entity/src/invite_tokens.rs index f239567..c0b59f7 100644 --- a/entity/src/invite_tokens.rs +++ b/entity/src/invite_tokens.rs @@ -9,10 +9,14 @@ pub struct Model { pub id: i64, pub token: Uuid, pub queue_id: i64, + pub name: String, + pub is_revoked: bool, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { + #[sea_orm(has_many = "super::access_to_queue::Entity")] + AccessToQueue, #[sea_orm( belongs_to = "super::queues::Entity", from = "Column::QueueId", @@ -23,6 +27,12 @@ pub enum Relation { Queues, } +impl Related for Entity { + fn to() -> RelationDef { + Relation::AccessToQueue.def() + } +} + impl Related for Entity { fn to() -> RelationDef { Relation::Queues.def() diff --git a/entity/src/queues.rs b/entity/src/queues.rs index c6116df..af2714c 100644 --- a/entity/src/queues.rs +++ b/entity/src/queues.rs @@ -49,10 +49,7 @@ impl Related for Entity { impl Related for Entity { fn to() -> RelationDef { - super::access_to_queue::Relation::Users.def() - } - fn via() -> Option { - Some(super::access_to_queue::Relation::Queues.def().rev()) + Relation::Users.def() } } diff --git a/entity/src/users.rs b/entity/src/users.rs index 6628c9e..4455f4a 100644 --- a/entity/src/users.rs +++ b/entity/src/users.rs @@ -39,10 +39,7 @@ impl Related for Entity { impl Related for Entity { fn to() -> RelationDef { - super::access_to_queue::Relation::Queues.def() - } - fn via() -> Option { - Some(super::access_to_queue::Relation::Users.def().rev()) + Relation::Queues.def() } } diff --git a/migration/src/m0_init_tables.rs b/migration/src/m0_init_tables.rs index ddbc0fb..5e9a621 100644 --- a/migration/src/m0_init_tables.rs +++ b/migration/src/m0_init_tables.rs @@ -29,6 +29,8 @@ enum InviteTokens { Id, Token, QueueId, + Name, + IsRevoked, } #[derive(DeriveIden)] @@ -36,6 +38,7 @@ enum AccessToQueue { Table, UserId, QueueId, + InviteTokenId, } #[derive(DeriveIden)] @@ -117,6 +120,8 @@ impl MigrationTrait for Migration { .on_delete(ForeignKeyAction::Cascade) .on_update(ForeignKeyAction::Cascade), ) + .col(string(InviteTokens::Name)) + .col(boolean(InviteTokens::IsRevoked).default(false)) .to_owned(), ) .await?; @@ -142,6 +147,14 @@ impl MigrationTrait for Migration { .on_delete(ForeignKeyAction::Cascade) .on_update(ForeignKeyAction::Cascade), ) + .col(big_integer(AccessToQueue::InviteTokenId)) + .foreign_key( + ForeignKey::create() + .from(AccessToQueue::Table, AccessToQueue::InviteTokenId) + .to(InviteTokens::Table, InviteTokens::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) .primary_key( Index::create() .col(AccessToQueue::UserId) @@ -208,6 +221,10 @@ impl MigrationTrait for Migration { .drop_table(Table::drop().table(Queues::Table).to_owned()) .await?; + manager + .drop_table(Table::drop().table(InviteTokens::Table).to_owned()) + .await?; + manager .drop_table(Table::drop().table(AccessToQueue::Table).to_owned()) .await?; -- cgit v1.2.3