diff --git a/packages/server/src/entities/BaseEntitySchemaPart.ts b/packages/server/src/entities/BaseEntitySchemaPart.ts index 900125a..7c27934 100644 --- a/packages/server/src/entities/BaseEntitySchemaPart.ts +++ b/packages/server/src/entities/BaseEntitySchemaPart.ts @@ -5,20 +5,23 @@ const transformer = { to: (value: undefined | null | string) => value ? new Date(value) : value, } -export const BaseEntitySchemaPart: Record< - 'id' | 'createDate' | 'updateDate', EntitySchemaColumnOptions> = { +export const BaseEntitySchemaPart: { + id: EntitySchemaColumnOptions + createDate: EntitySchemaColumnOptions + updateDate: EntitySchemaColumnOptions +} = { id: { - type: 'integer', + type: Number, primary: true, generated: true, }, createDate: { - type: 'datetime', + type: Date, createDate: true, transformer, }, updateDate: { - type: 'datetime', + type: Date, updateDate: true, transformer, }, diff --git a/packages/server/src/entities/SessionEntity.ts b/packages/server/src/entities/SessionEntity.ts index 7933f9a..982efe3 100644 --- a/packages/server/src/entities/SessionEntity.ts +++ b/packages/server/src/entities/SessionEntity.ts @@ -9,7 +9,7 @@ export const SessionEntity = new EntitySchema({ primary: true, }, expiredAt: { - type: Number, + type: 'bigint', // default: () => Date.now(), }, userId: { diff --git a/packages/server/src/migrations/1569211662484-session_expiredAt_bigint.ts b/packages/server/src/migrations/1569211662484-session_expiredAt_bigint.ts new file mode 100644 index 0000000..a660482 --- /dev/null +++ b/packages/server/src/migrations/1569211662484-session_expiredAt_bigint.ts @@ -0,0 +1,35 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class sessionExpiredAtBigint1569211662484 implements MigrationInterface { + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_28c5d1d16da7908c97c9bc2f74"`, undefined); + await queryRunner.query(`CREATE TABLE "temporary_session" ("id" varchar PRIMARY KEY NOT NULL, "expiredAt" integer NOT NULL, "userId" integer, "json" text NOT NULL, CONSTRAINT "FK_3d2f174ef04fb312fdebd0ddc53" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined); + await queryRunner.query(`INSERT INTO "temporary_session"("id", "expiredAt", "userId", "json") SELECT "id", "expiredAt", "userId", "json" FROM "session"`, undefined); + await queryRunner.query(`DROP TABLE "session"`, undefined); + await queryRunner.query(`ALTER TABLE "temporary_session" RENAME TO "session"`, undefined); + await queryRunner.query(`CREATE INDEX "IDX_28c5d1d16da7908c97c9bc2f74" ON "session" ("expiredAt") `, undefined); + await queryRunner.query(`DROP INDEX "IDX_28c5d1d16da7908c97c9bc2f74"`, undefined); + await queryRunner.query(`CREATE TABLE "temporary_session" ("id" varchar PRIMARY KEY NOT NULL, "expiredAt" bigint NOT NULL, "userId" integer, "json" text NOT NULL, CONSTRAINT "FK_3d2f174ef04fb312fdebd0ddc53" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined); + await queryRunner.query(`INSERT INTO "temporary_session"("id", "expiredAt", "userId", "json") SELECT "id", "expiredAt", "userId", "json" FROM "session"`, undefined); + await queryRunner.query(`DROP TABLE "session"`, undefined); + await queryRunner.query(`ALTER TABLE "temporary_session" RENAME TO "session"`, undefined); + await queryRunner.query(`CREATE INDEX "IDX_28c5d1d16da7908c97c9bc2f74" ON "session" ("expiredAt") `, undefined); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_28c5d1d16da7908c97c9bc2f74"`, undefined); + await queryRunner.query(`ALTER TABLE "session" RENAME TO "temporary_session"`, undefined); + await queryRunner.query(`CREATE TABLE "session" ("id" varchar PRIMARY KEY NOT NULL, "expiredAt" integer NOT NULL, "userId" integer, "json" text NOT NULL, CONSTRAINT "FK_3d2f174ef04fb312fdebd0ddc53" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined); + await queryRunner.query(`INSERT INTO "session"("id", "expiredAt", "userId", "json") SELECT "id", "expiredAt", "userId", "json" FROM "temporary_session"`, undefined); + await queryRunner.query(`DROP TABLE "temporary_session"`, undefined); + await queryRunner.query(`CREATE INDEX "IDX_28c5d1d16da7908c97c9bc2f74" ON "session" ("expiredAt") `, undefined); + await queryRunner.query(`DROP INDEX "IDX_28c5d1d16da7908c97c9bc2f74"`, undefined); + await queryRunner.query(`ALTER TABLE "session" RENAME TO "temporary_session"`, undefined); + await queryRunner.query(`CREATE TABLE "session" ("id" varchar PRIMARY KEY NOT NULL, "expiredAt" integer NOT NULL, "userId" integer, "json" text NOT NULL, CONSTRAINT "FK_3d2f174ef04fb312fdebd0ddc53" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)`, undefined); + await queryRunner.query(`INSERT INTO "session"("id", "expiredAt", "userId", "json") SELECT "id", "expiredAt", "userId", "json" FROM "temporary_session"`, undefined); + await queryRunner.query(`DROP TABLE "temporary_session"`, undefined); + await queryRunner.query(`CREATE INDEX "IDX_28c5d1d16da7908c97c9bc2f74" ON "session" ("expiredAt") `, undefined); + } + +} diff --git a/packages/server/src/migrations/index.ts b/packages/server/src/migrations/index.ts index 9cee5a0..f9e72c8 100644 --- a/packages/server/src/migrations/index.ts +++ b/packages/server/src/migrations/index.ts @@ -9,3 +9,4 @@ export * from './1548412884820-role-unique' export * from './1552227347990-comment-parentid-nullable' export * from './1552227652042-nullable' export * from './1552899385211-user-first-last-name' +export * from './1569211662484-session_expiredAt_bigint'