Chg: tsxをdevDependenciesに移動 / Del: MikroORM公式CLIを廃止 / Feat: scriptsのmigrator

This commit is contained in:
2026-03-27 22:53:18 +09:00
parent d66ab803bc
commit 6b54ae4306
6 changed files with 359 additions and 17 deletions
+2 -1
View File
@@ -10,7 +10,8 @@
"scripts": {
"start": "pnpm -F backend start",
"dev": "pnpm -r --parallel --no-bail dev",
"build": "pnpm -r --parallel build"
"build": "pnpm -r --parallel build",
"migrator": "pnpm -F backend migrator"
},
"packageManager": "pnpm@10.29.1"
}
+3 -3
View File
@@ -7,7 +7,7 @@
"start": "cross-env NODE_ENV=production node .",
"build": "tsc && tsc-alias",
"dev": "tsx watch src/index.ts",
"mikro": "tsx ./node_modules/@mikro-orm/cli/esm.js"
"migrator": "node scripts/migrator.js"
},
"author": {
"name": "Last2014",
@@ -30,7 +30,6 @@
"fs": "0.0.1-security",
"os": "^0.1.2",
"tsc-alias": "^1.8.16",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
"util": "^0.12.5",
"uuid": "^13.0.0",
@@ -39,6 +38,7 @@
"zod": "^4.3.6"
},
"devDependencies": {
"@types/node": "^24.1.0"
"@types/node": "^24.1.0",
"tsx": "^4.21.0"
}
}
+23
View File
@@ -0,0 +1,23 @@
import config from "../dist/mikro-orm.config.js";
import { MikroORM } from "@mikro-orm/postgresql";
const orm = await MikroORM.init({
...config,
logger: (msg) => console.log(msg),
});
switch (process.argv[2]) {
case "up":
await orm.migrator.up();
break;
case "down":
await orm.migrator.down();
break;
case "create":
await orm.migrator.createMigration();
break;
default:
console.log("Only the options up, down, and create are available.");
}
process.exit();
@@ -11,20 +11,32 @@
"type": "varchar(255)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"primary": true,
"nullable": false,
"unique": false,
"length": 255,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"value": {
"name": "value",
"type": "varchar(255)",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 255,
"mappedType": "string"
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "text"
}
},
"name": "config",
@@ -47,6 +59,22 @@
},
{
"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"
},
"userid": {
"name": "userid",
"type": "varchar(20)",
@@ -54,7 +82,13 @@
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": 20,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"username": {
@@ -64,33 +98,141 @@
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": 30,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"profile": {
"name": "profile",
"type": "varchar(4096)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": 4096,
"precision": null,
"scale": null,
"default": "''",
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"email": {
"name": "email",
"type": "varchar(254)",
"type": "varchar(256)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 254,
"unique": false,
"length": 256,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"password": {
"name": "password",
"type": "varchar(60)",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 60,
"mappedType": "string"
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "text"
},
"is_owner": {
"name": "is_owner",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": "false",
"comment": null,
"enumItems": [],
"mappedType": "boolean"
},
"is_suspended": {
"name": "is_suspended",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": "false",
"comment": null,
"enumItems": [],
"mappedType": "boolean"
},
"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"
},
"last_used_at": {
"name": "last_used_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"unique": false,
"length": 6,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "datetime"
}
},
"name": "user",
"schema": "public",
"indexes": [
{
"columnNames": [
"userid"
],
"composite": false,
"keyName": "user_userid_unique",
"constraint": true,
"primary": false,
"unique": true
},
{
"columnNames": [
"email"
@@ -104,7 +246,7 @@
{
"keyName": "user_pkey",
"columnNames": [
"userid"
"id"
],
"composite": false,
"constraint": true,
@@ -115,6 +257,146 @@
"checks": [],
"foreignKeys": {},
"nativeEnums": {}
},
{
"columns": {
"name": {
"name": "name",
"type": "varchar(64)",
"unsigned": false,
"autoincrement": false,
"primary": true,
"nullable": false,
"unique": false,
"length": 64,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "string"
},
"passphrase": {
"name": "passphrase",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "text"
},
"user_id": {
"name": "user_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"
},
"is_native": {
"name": "is_native",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"unique": false,
"length": null,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "boolean"
},
"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"
},
"last_used_at": {
"name": "last_used_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"unique": false,
"length": 6,
"precision": null,
"scale": null,
"default": null,
"comment": null,
"enumItems": [],
"mappedType": "datetime"
}
},
"name": "token",
"schema": "public",
"indexes": [
{
"columnNames": [
"user_id"
],
"composite": false,
"keyName": "token_user_id_index",
"constraint": false,
"primary": false,
"unique": false
},
{
"keyName": "token_pkey",
"columnNames": [
"name"
],
"composite": false,
"constraint": true,
"primary": true,
"unique": true
}
],
"checks": [],
"foreignKeys": {
"token_user_id_foreign": {
"constraintName": "token_user_id_foreign",
"columnNames": [
"user_id"
],
"localTableName": "public.token",
"referencedColumnNames": [
"id"
],
"referencedTableName": "public.user",
"updateRule": "cascade"
}
},
"nativeEnums": {}
}
],
"nativeEnums": {}
@@ -0,0 +1,36 @@
import { Migration } from '@mikro-orm/migrations';
export class Migration20260327135046 extends Migration {
override async up(): Promise<void> {
this.addSql(`create table "token" ("name" varchar(64) not null, "passphrase" text not null, "user_id" varchar(10) not null, "is_native" boolean not null, "created_at" timestamptz not null, "last_used_at" timestamptz null, constraint "token_pkey" primary key ("name"));`);
this.addSql(`create index "token_user_id_index" on "token" ("user_id");`);
this.addSql(`alter table "token" add constraint "token_user_id_foreign" foreign key ("user_id") references "user" ("id") on update cascade;`);
this.addSql(`alter table "config" alter column "value" type text using ("value"::text);`);
this.addSql(`alter table "user" drop constraint "user_pkey";`);
this.addSql(`alter table "user" add column "id" varchar(10) not null, add column "profile" varchar(4096) not null default '', add column "is_owner" boolean not null default false, add column "is_suspended" boolean not null default false, add column "created_at" timestamptz not null, add column "last_used_at" timestamptz null;`);
this.addSql(`alter table "user" alter column "email" type varchar(256) using ("email"::varchar(256));`);
this.addSql(`alter table "user" alter column "password" type text using ("password"::text);`);
this.addSql(`alter table "user" add constraint "user_userid_unique" unique ("userid");`);
this.addSql(`alter table "user" add constraint "user_pkey" primary key ("id");`);
}
override async down(): Promise<void> {
this.addSql(`drop table if exists "token" cascade;`);
this.addSql(`alter table "config" alter column "value" type varchar(255) using ("value"::varchar(255));`);
this.addSql(`alter table "user" drop constraint "user_userid_unique";`);
this.addSql(`alter table "user" drop constraint "user_pkey";`);
this.addSql(`alter table "user" drop column "id", drop column "profile", drop column "is_owner", drop column "is_suspended", drop column "created_at", drop column "last_used_at";`);
this.addSql(`alter table "user" alter column "email" type varchar(254) using ("email"::varchar(254));`);
this.addSql(`alter table "user" alter column "password" type varchar(60) using ("password"::varchar(60));`);
this.addSql(`alter table "user" add constraint "user_pkey" primary key ("userid");`);
}
}
+3 -3
View File
@@ -50,9 +50,6 @@ importers:
tsc-alias:
specifier: ^1.8.16
version: 1.8.16
tsx:
specifier: ^4.21.0
version: 4.21.0
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -75,6 +72,9 @@ importers:
'@types/node':
specifier: ^24.1.0
version: 24.1.0
tsx:
specifier: ^4.21.0
version: 4.21.0
packages/frontend:
dependencies: