gitdataai/libs/migrate/project_message_favorite.rs

58 lines
1.6 KiB
Rust

use sea_orm_migration::prelude::*;
pub struct Migration;
impl MigrationName for Migration {
fn name(&self) -> &str {
"project_message_favorite"
}
}
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.get_connection()
.execute_unprepared(
r#"
create table if not exists project_message_favorite
(
uid uuid not null
primary key,
project uuid not null,
room uuid not null,
message uuid not null,
user_uuid uuid not null,
created_at timestamp with time zone not null
);
create unique index if not exists idx_project_message_favorite_user_message
on project_message_favorite (user_uuid, message);
create index if not exists idx_project_message_favorite_project_user
on project_message_favorite (project, user_uuid, created_at desc);
create index if not exists idx_project_message_favorite_room
on project_message_favorite (room);
"#,
)
.await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.get_connection()
.execute_unprepared(
r#"
drop index if exists idx_project_message_favorite_room;
drop index if exists idx_project_message_favorite_project_user;
drop index if exists idx_project_message_favorite_user_message;
drop table if exists project_message_favorite;
"#,
)
.await?;
Ok(())
}
}