From f9eebb370b017440b39f4dea8753fec4101496a8 Mon Sep 17 00:00:00 2001 From: Last2014 Date: Tue, 2 Jun 2026 21:59:33 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20README=E3=81=AE=E3=83=9E=E3=82=A4?= =?UTF-8?q?=E3=82=B0=E3=83=AC=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=8C?= =?UTF-8?q?=E5=BE=93=E6=9D=A5=E3=81=AE=E6=96=B9=E6=B3=95=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E5=95=8F=E9=A1=8C=20/=20Ne?= =?UTF-8?q?w:=20=E3=83=9E=E3=82=A4=E3=82=B0=E3=83=AC=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../src/migrations/.snapshot-chat.json | 563 +++++++++++++++++- .../src/migrations/Migration20260602125825.ts | 54 ++ 3 files changed, 613 insertions(+), 6 deletions(-) create mode 100644 packages/backend/src/migrations/Migration20260602125825.ts diff --git a/README.md b/README.md index edf9abf..5d4358c 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ pnpm i pnpm run build # データベースのマイグレーション -pnpm -F backend mikro migration:up +pnpm -F backend migrator up # 起動 pnpm -F backend start diff --git a/packages/backend/src/migrations/.snapshot-chat.json b/packages/backend/src/migrations/.snapshot-chat.json index f946015..dc68dbc 100644 --- a/packages/backend/src/migrations/.snapshot-chat.json +++ b/packages/backend/src/migrations/.snapshot-chat.json @@ -24,19 +24,19 @@ }, "value": { "name": "value", - "type": "text", + "type": "varchar(4096)", "unsigned": false, "autoincrement": false, "primary": false, "nullable": false, "unique": false, - "length": null, + "length": 4096, "precision": null, "scale": null, "default": null, "comment": null, "enumItems": [], - "mappedType": "text" + "mappedType": "string" } }, "name": "config", @@ -107,6 +107,22 @@ "enumItems": [], "mappedType": "string" }, + "icon": { + "name": "icon", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "unique": false, + "length": 255, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, "profile": { "name": "profile", "type": "varchar(4096)", @@ -155,8 +171,8 @@ "enumItems": [], "mappedType": "text" }, - "is_owner": { - "name": "is_owner", + "is_admin": { + "name": "is_admin", "type": "boolean", "unsigned": false, "autoincrement": false, @@ -397,6 +413,543 @@ } }, "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": true, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "text": { + "name": "text", + "type": "varchar(4096)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 4096, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_by_id": { + "name": "created_by_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 6, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "datetime" + } + }, + "name": "log", + "schema": "public", + "indexes": [ + { + "keyName": "log_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "log_created_by_id_foreign": { + "constraintName": "log_created_by_id_foreign", + "columnNames": [ + "created_by_id" + ], + "localTableName": "public.log", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.user", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": true, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "name": { + "name": "name", + "type": "varchar(20)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 20, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "description": { + "name": "description", + "type": "varchar(4096)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 4096, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "icon": { + "name": "icon", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "unique": false, + "length": 255, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_by_id": { + "name": "created_by_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 6, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "datetime" + } + }, + "name": "community", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "name" + ], + "composite": false, + "keyName": "community_name_index", + "constraint": false, + "primary": false, + "unique": false + }, + { + "columnNames": [ + "name" + ], + "composite": false, + "keyName": "community_name_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "community_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "community_created_by_id_foreign": { + "constraintName": "community_created_by_id_foreign", + "columnNames": [ + "created_by_id" + ], + "localTableName": "public.community", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.user", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": true, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "name": { + "name": "name", + "type": "varchar(20)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 20, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "description": { + "name": "description", + "type": "varchar(4096)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 4096, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "community_id": { + "name": "community_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_by_id": { + "name": "created_by_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 6, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "datetime" + } + }, + "name": "channel", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "name" + ], + "composite": false, + "keyName": "channel_name_index", + "constraint": false, + "primary": false, + "unique": false + }, + { + "columnNames": [ + "name" + ], + "composite": false, + "keyName": "channel_name_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "channel_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "channel_community_id_foreign": { + "constraintName": "channel_community_id_foreign", + "columnNames": [ + "community_id" + ], + "localTableName": "public.channel", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.community", + "updateRule": "cascade" + }, + "channel_created_by_id_foreign": { + "constraintName": "channel_created_by_id_foreign", + "columnNames": [ + "created_by_id" + ], + "localTableName": "public.channel", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.user", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": true, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "message": { + "name": "message", + "type": "varchar(4096)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 4096, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "channel_id": { + "name": "channel_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_by_id": { + "name": "created_by_id", + "type": "varchar(10)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 10, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "string" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "unique": false, + "length": 6, + "precision": null, + "scale": null, + "default": null, + "comment": null, + "enumItems": [], + "mappedType": "datetime" + } + }, + "name": "message", + "schema": "public", + "indexes": [ + { + "keyName": "message_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "message_channel_id_foreign": { + "constraintName": "message_channel_id_foreign", + "columnNames": [ + "channel_id" + ], + "localTableName": "public.message", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.channel", + "updateRule": "cascade" + }, + "message_created_by_id_foreign": { + "constraintName": "message_created_by_id_foreign", + "columnNames": [ + "created_by_id" + ], + "localTableName": "public.message", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.user", + "updateRule": "cascade" + } + }, + "nativeEnums": {} } ], "nativeEnums": {} diff --git a/packages/backend/src/migrations/Migration20260602125825.ts b/packages/backend/src/migrations/Migration20260602125825.ts new file mode 100644 index 0000000..26ad701 --- /dev/null +++ b/packages/backend/src/migrations/Migration20260602125825.ts @@ -0,0 +1,54 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260602125825 extends Migration { + + override async up(): Promise { + this.addSql(`create table "log" ("id" varchar(10) not null, "text" varchar(4096) not null, "created_by_id" varchar(10) null, "created_at" timestamptz not null, constraint "log_pkey" primary key ("id"));`); + + this.addSql(`create table "community" ("id" varchar(10) not null, "name" varchar(20) not null, "description" varchar(4096) not null, "icon" varchar(255) null, "created_by_id" varchar(10) not null, "created_at" timestamptz not null, constraint "community_pkey" primary key ("id"));`); + this.addSql(`create index "community_name_index" on "community" ("name");`); + this.addSql(`alter table "community" add constraint "community_name_unique" unique ("name");`); + + this.addSql(`create table "channel" ("id" varchar(10) not null, "name" varchar(20) not null, "description" varchar(4096) not null, "community_id" varchar(10) not null, "created_by_id" varchar(10) not null, "created_at" timestamptz not null, constraint "channel_pkey" primary key ("id"));`); + this.addSql(`create index "channel_name_index" on "channel" ("name");`); + this.addSql(`alter table "channel" add constraint "channel_name_unique" unique ("name");`); + + this.addSql(`create table "message" ("id" varchar(10) not null, "message" varchar(4096) not null, "channel_id" varchar(10) not null, "created_by_id" varchar(10) not null, "created_at" timestamptz not null, constraint "message_pkey" primary key ("id"));`); + + this.addSql(`alter table "log" add constraint "log_created_by_id_foreign" foreign key ("created_by_id") references "user" ("id") on update cascade on delete set null;`); + + this.addSql(`alter table "community" add constraint "community_created_by_id_foreign" foreign key ("created_by_id") references "user" ("id") on update cascade;`); + + this.addSql(`alter table "channel" add constraint "channel_community_id_foreign" foreign key ("community_id") references "community" ("id") on update cascade;`); + this.addSql(`alter table "channel" add constraint "channel_created_by_id_foreign" foreign key ("created_by_id") references "user" ("id") on update cascade;`); + + this.addSql(`alter table "message" add constraint "message_channel_id_foreign" foreign key ("channel_id") references "channel" ("id") on update cascade;`); + this.addSql(`alter table "message" add constraint "message_created_by_id_foreign" foreign key ("created_by_id") references "user" ("id") on update cascade;`); + + this.addSql(`alter table "config" alter column "value" type varchar(4096) using ("value"::varchar(4096));`); + + this.addSql(`alter table "user" add column "icon" varchar(255) null;`); + this.addSql(`alter table "user" rename column "is_owner" to "is_admin";`); + } + + override async down(): Promise { + this.addSql(`alter table "channel" drop constraint "channel_community_id_foreign";`); + + this.addSql(`alter table "message" drop constraint "message_channel_id_foreign";`); + + this.addSql(`drop table if exists "log" cascade;`); + + this.addSql(`drop table if exists "community" cascade;`); + + this.addSql(`drop table if exists "channel" cascade;`); + + this.addSql(`drop table if exists "message" cascade;`); + + this.addSql(`alter table "config" alter column "value" type text using ("value"::text);`); + + this.addSql(`alter table "user" drop column "icon";`); + + this.addSql(`alter table "user" rename column "is_admin" to "is_owner";`); + } + +}