This commit is contained in:
2026-08-08 19:56:57 +02:00
parent d1f9234457
commit 42ab990f7d
23 changed files with 681 additions and 93 deletions
+172 -71
View File
@@ -138,13 +138,18 @@ impl MigrationTrait for Migration {
.to(Alias::new("user"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_server_user")
.col(Alias::new("server_id"))
.col(Alias::new("user_id"))
.unique(),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_server_user")
.table(Alias::new("server_user"))
.col(Alias::new("server_id"))
.col(Alias::new("user_id"))
.unique()
.to_owned(),
)
.await?;
@@ -185,13 +190,18 @@ impl MigrationTrait for Migration {
.to(Alias::new("server"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_role_server_name")
.col(Alias::new("server_id"))
.col(Alias::new("name"))
.unique(),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_role_server_name")
.table(Alias::new("role"))
.col(Alias::new("server_id"))
.col(Alias::new("name"))
.unique()
.to_owned(),
)
.await?;
@@ -376,14 +386,6 @@ impl MigrationTrait for Migration {
.to(Alias::new("category"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_server_item_order_resource")
.col(Alias::new("server_id"))
.col(Alias::new("resource_type"))
.col(Alias::new("resource_id"))
.unique(),
)
.to_owned(),
)
.await?;
@@ -400,6 +402,19 @@ impl MigrationTrait for Migration {
)
.await?;
manager
.create_index(
Index::create()
.name("uq_server_item_order_resource")
.table(Alias::new("server_item_order"))
.col(Alias::new("server_id"))
.col(Alias::new("resource_type"))
.col(Alias::new("resource_id"))
.unique()
.to_owned(),
)
.await?;
// ---------------------------------------------------------------------
// Membres des canaux
// ---------------------------------------------------------------------
@@ -443,13 +458,82 @@ impl MigrationTrait for Migration {
.to(Alias::new("user"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_channel_user")
.col(Alias::new("channel_id"))
.col(Alias::new("user_id"))
.unique(),
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_channel_user")
.table(Alias::new("channel_user"))
.col(Alias::new("channel_id"))
.col(Alias::new("user_id"))
.unique()
.to_owned(),
)
.await?;
// ---------------------------------------------------------------------
// Position de lecture des utilisateurs
// ---------------------------------------------------------------------
manager
.create_table(
Table::create()
.table(Alias::new("channel_user_read_state"))
.if_not_exists()
.col(
ColumnDef::new(Alias::new("id"))
.uuid()
.not_null()
.primary_key(),
)
.col(ColumnDef::new(Alias::new("channel_id")).uuid().not_null())
.col(ColumnDef::new(Alias::new("user_id")).uuid().not_null())
.col(
ColumnDef::new(Alias::new("last_read_message_id"))
.uuid()
.null(),
)
.col(
ColumnDef::new(Alias::new("updated_at"))
.timestamp_with_time_zone()
.not_null()
.default(Expr::current_timestamp()),
)
.foreign_key(
ForeignKey::create()
.name("fk_channel_user_read_state_channel")
.from(
Alias::new("channel_user_read_state"),
Alias::new("channel_id"),
)
.to(Alias::new("channel"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.foreign_key(
ForeignKey::create()
.name("fk_channel_user_read_state_user")
.from(
Alias::new("channel_user_read_state"),
Alias::new("user_id"),
)
.to(Alias::new("user"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_channel_user_read_state")
.table(Alias::new("channel_user_read_state"))
.col(Alias::new("channel_id"))
.col(Alias::new("user_id"))
.unique()
.to_owned(),
)
.await?;
@@ -505,12 +589,17 @@ impl MigrationTrait for Migration {
.to(Alias::new("message"), Alias::new("id"))
.on_delete(ForeignKeyAction::SetNull),
)
.index(
Index::create()
.name("idx_message_channel_id_id")
.col(Alias::new("channel_id"))
.col(Alias::new("id")),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("idx_message_channel_id_id")
.table(Alias::new("message"))
.col(Alias::new("channel_id"))
.col(Alias::new("id"))
.to_owned(),
)
.await?;
@@ -574,13 +663,6 @@ impl MigrationTrait for Migration {
.not_null()
.default(0),
)
.index(
Index::create()
.name("uq_server_user_permission")
.col(Alias::new("server_id"))
.col(Alias::new("user_id"))
.unique(),
)
.foreign_key(
ForeignKey::create()
.name("fk_server_user_permission_server")
@@ -602,6 +684,18 @@ impl MigrationTrait for Migration {
)
.await?;
manager
.create_index(
Index::create()
.name("uq_server_user_permission")
.table(Alias::new("server_user_permission"))
.col(Alias::new("server_id"))
.col(Alias::new("user_id"))
.unique()
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
@@ -638,13 +732,18 @@ impl MigrationTrait for Migration {
.to(Alias::new("role"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_server_role_permission")
.col(Alias::new("server_id"))
.col(Alias::new("role_id"))
.unique(),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_server_role_permission")
.table(Alias::new("server_role_permission"))
.col(Alias::new("server_id"))
.col(Alias::new("role_id"))
.unique()
.to_owned(),
)
.await?;
@@ -685,13 +784,18 @@ impl MigrationTrait for Migration {
.to(Alias::new("role"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_channel_role_permission")
.col(Alias::new("channel_id"))
.col(Alias::new("role_id"))
.unique(),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_channel_role_permission")
.table(Alias::new("channel_role_permission"))
.col(Alias::new("channel_id"))
.col(Alias::new("role_id"))
.unique()
.to_owned(),
)
.await?;
@@ -732,13 +836,18 @@ impl MigrationTrait for Migration {
.to(Alias::new("user"), Alias::new("id"))
.on_delete(ForeignKeyAction::Cascade),
)
.index(
Index::create()
.name("uq_channel_user_permission")
.col(Alias::new("channel_id"))
.col(Alias::new("user_id"))
.unique(),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("uq_channel_user_permission")
.table(Alias::new("channel_user_permission"))
.col(Alias::new("channel_id"))
.col(Alias::new("user_id"))
.unique()
.to_owned(),
)
.await?;
@@ -799,6 +908,7 @@ impl MigrationTrait for Migration {
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
let tables = [
"computed_permission",
"channel_user_read_state",
"channel_user_permission",
"channel_role_permission",
"server_user_permission",
@@ -827,15 +937,6 @@ impl MigrationTrait for Migration {
.await?;
}
manager
.drop_index(
Index::drop()
.name("idx_server_item_order_scope")
.table(Alias::new("server_item_order"))
.to_owned(),
)
.await?;
Ok(())
}
}