magnetar/ext_model/migration/src/m20240107_005747_remove_use...

182 lines
7.5 KiB
Rust
Raw Normal View History

2024-01-07 01:44:52 +00:00
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#"
DELETE FROM "antenna" WHERE "src" = 'group';
ALTER TYPE "antenna_src_enum" RENAME TO "antenna_src_enum_old";
CREATE TYPE "antenna_src_enum" AS ENUM('home', 'all', 'users', 'list', 'instances');
ALTER TABLE "antenna" ALTER COLUMN "src" TYPE "antenna_src_enum" USING "src"::text::antenna_src_enum;
DROP TYPE "antenna_src_enum_old";
ALTER TABLE "antenna" DROP COLUMN "userGroupJoiningId";
ALTER TABLE "notification" DROP COLUMN "userGroupInvitationId";
ALTER TABLE "user_profile" ALTER COLUMN "emailNotificationTypes"
SET DEFAULT '["follow", "receiveFollowRequest"]'::jsonb;
DROP TABLE "user_group_invitation";
DROP TABLE "user_group_joining";
DROP TABLE "user_group_invite";
DROP TABLE "user_group";
"#,
)
.await?;
Ok(())
}
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
let db = manager.get_connection();
db.execute_unprepared(
r#"
create table user_group
(
id varchar(32) not null
constraint "PK_3c29fba6fe013ec8724378ce7c9"
primary key,
"createdAt" timestamp with time zone not null,
name varchar(256) not null,
"userId" varchar(32) not null
constraint "FK_3d6b372788ab01be58853003c93"
references "user"
on delete cascade,
"isPrivate" boolean default false not null
);
comment on column user_group."createdAt" is 'The created date of the UserGroup.';
comment on column user_group."userId" is 'The ID of owner.';
create index "IDX_20e30aa35180e317e133d75316"
on user_group ("createdAt");
create index "IDX_3d6b372788ab01be58853003c9"
on user_group ("userId");
create table user_group_invitation
(
id varchar(32) not null
constraint "PK_160c63ec02bf23f6a5c5e8140d6"
primary key,
"createdAt" timestamp with time zone not null,
"userId" varchar(32) not null
constraint "FK_bfbc6305547539369fe73eb144a"
references "user"
on delete cascade,
"userGroupId" varchar(32) not null
constraint "FK_5cc8c468090e129857e9fecce5a"
references user_group
on delete cascade
);
comment on column user_group_invitation."createdAt" is 'The created date of the UserGroupInvitation.';
comment on column user_group_invitation."userId" is 'The user ID.';
comment on column user_group_invitation."userGroupId" is 'The group ID.';
create index "IDX_bfbc6305547539369fe73eb144"
on user_group_invitation ("userId");
create index "IDX_5cc8c468090e129857e9fecce5"
on user_group_invitation ("userGroupId");
create unique index "IDX_e9793f65f504e5a31fbaedbf2f"
on user_group_invitation ("userId", "userGroupId");
create table user_group_joining
(
id varchar(32) not null
constraint "PK_15f2425885253c5507e1599cfe7"
primary key,
"createdAt" timestamp with time zone not null,
"userId" varchar(32) not null
constraint "FK_f3a1b4bd0c7cabba958a0c0b231"
references "user"
on delete cascade,
"userGroupId" varchar(32) not null
constraint "FK_67dc758bc0566985d1b3d399865"
references user_group
on delete cascade
);
comment on column user_group_joining."createdAt" is 'The created date of the UserGroupJoining.';
comment on column user_group_joining."userId" is 'The user ID.';
comment on column user_group_joining."userGroupId" is 'The group ID.';
create index "IDX_f3a1b4bd0c7cabba958a0c0b23"
on user_group_joining ("userId");
create index "IDX_67dc758bc0566985d1b3d39986"
on user_group_joining ("userGroupId");
create unique index "IDX_d9ecaed8c6dc43f3592c229282"
on user_group_joining ("userId", "userGroupId");
create table user_group_invite
(
id varchar(32) not null
constraint "PK_3893884af0d3a5f4d01e7921a97"
primary key,
"createdAt" timestamp with time zone not null,
"userId" varchar(32) not null
constraint "FK_1039988afa3bf991185b277fe03"
references "user"
on delete cascade,
"userGroupId" varchar(32) not null
constraint "FK_e10924607d058004304611a436a"
references user_group
on delete cascade
);
alter table user_group_invite
owner to "example-calckey-user";
create index "IDX_1039988afa3bf991185b277fe0"
on user_group_invite ("userId");
create index "IDX_e10924607d058004304611a436"
on user_group_invite ("userGroupId");
create unique index "IDX_78787741f9010886796f2320a4"
on user_group_invite ("userId", "userGroupId");
ALTER TABLE "user_profile" ALTER COLUMN "emailNotificationTypes"
SET DEFAULT '["follow", "receiveFollowRequest", "groupInvited"]'::jsonb;
alter table antenna add "userGroupJoiningId" varchar(32)
constraint "FK_ccbf5a8c0be4511133dcc50ddeb"
references user_group_joining
on delete cascade;
alter table notification add column "userGroupInvitationId" varchar(32)
constraint "FK_8fe87814e978053a53b1beb7e98"
references user_group_invitation
on delete cascade;
ALTER TYPE "antenna_src_enum" RENAME TO "antenna_src_enum_old";
CREATE TYPE "antenna_src_enum" AS ENUM('home', 'all', 'users', 'list', 'group', 'instances');
ALTER TABLE "antenna" ALTER COLUMN "src" TYPE "antenna_src_enum" USING "src"::text::antenna_src_enum;
DROP TYPE "antenna_src_enum_old";
"#,
)
.await?;
Ok(())
}
}