103 lines
4.0 KiB
Rust
103 lines
4.0 KiB
Rust
use sea_orm_migration::prelude::*;
|
|
|
|
#[derive(DeriveMigrationName)]
|
|
pub struct Migration;
|
|
|
|
#[async_trait::async_trait]
|
|
impl MigrationTrait for Migration {
|
|
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
|
let db = manager.get_connection();
|
|
|
|
db.execute_unprepared(
|
|
r#"
|
|
DROP TABLE "gallery_like";
|
|
DROP TABLE "gallery_post";
|
|
"#,
|
|
)
|
|
.await?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
|
let db = manager.get_connection();
|
|
|
|
db.execute_unprepared(
|
|
r#"
|
|
create table gallery_post
|
|
(
|
|
id varchar(32) not null
|
|
constraint "PK_8e90d7b6015f2c4518881b14753"
|
|
primary key,
|
|
"createdAt" timestamp with time zone not null,
|
|
"updatedAt" timestamp with time zone not null,
|
|
title varchar(256) not null,
|
|
description varchar(2048),
|
|
"userId" varchar(32) not null
|
|
constraint "FK_985b836dddd8615e432d7043ddb"
|
|
references "user"
|
|
on delete cascade,
|
|
"fileIds" varchar(32)[] default '{}'::character varying[] not null,
|
|
"isSensitive" boolean default false not null,
|
|
"likedCount" integer default 0 not null,
|
|
tags varchar(128)[] default '{}'::character varying[] not null
|
|
);
|
|
|
|
comment on column gallery_post."createdAt" is 'The created date of the GalleryPost.';
|
|
|
|
comment on column gallery_post."updatedAt" is 'The updated date of the GalleryPost.';
|
|
|
|
comment on column gallery_post."userId" is 'The ID of author.';
|
|
|
|
comment on column gallery_post."isSensitive" is 'Whether the post is sensitive.';
|
|
|
|
create index "IDX_8f1a239bd077c8864a20c62c2c"
|
|
on gallery_post ("createdAt");
|
|
|
|
create index "IDX_f631d37835adb04792e361807c"
|
|
on gallery_post ("updatedAt");
|
|
|
|
create index "IDX_985b836dddd8615e432d7043dd"
|
|
on gallery_post ("userId");
|
|
|
|
create index "IDX_3ca50563facd913c425e7a89ee"
|
|
on gallery_post ("fileIds");
|
|
|
|
create index "IDX_f2d744d9a14d0dfb8b96cb7fc5"
|
|
on gallery_post ("isSensitive");
|
|
|
|
create index "IDX_1a165c68a49d08f11caffbd206"
|
|
on gallery_post ("likedCount");
|
|
|
|
create index "IDX_05cca34b985d1b8edc1d1e28df"
|
|
on gallery_post (tags);
|
|
|
|
create table gallery_like
|
|
(
|
|
id varchar(32) not null
|
|
constraint "PK_853ab02be39b8de45cd720cc15f"
|
|
primary key,
|
|
"createdAt" timestamp with time zone not null,
|
|
"userId" varchar(32) not null
|
|
constraint "FK_8fd5215095473061855ceb948cf"
|
|
references "user"
|
|
on delete cascade,
|
|
"postId" varchar(32) not null
|
|
constraint "FK_b1cb568bfe569e47b7051699fc8"
|
|
references gallery_post
|
|
on delete cascade
|
|
);
|
|
|
|
create index "IDX_8fd5215095473061855ceb948c"
|
|
on gallery_like ("userId");
|
|
|
|
create unique index "IDX_df1b5f4099e99fb0bc5eae53b6"
|
|
on gallery_like ("userId", "postId");
|
|
"#,
|
|
)
|
|
.await?;
|
|
|
|
Ok(())
|
|
}
|
|
}
|