add testimony migration

This commit is contained in:
ItsMalma
2025-12-08 11:03:09 +07:00
parent 0887b7c94b
commit 678ca3c192
2 changed files with 174 additions and 0 deletions

View File

@@ -2007,6 +2007,86 @@
}, },
"nativeEnums": {} "nativeEnums": {}
}, },
{
"columns": {
"id": {
"name": "id",
"type": "varchar(30)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 30,
"mappedType": "string"
},
"review": {
"name": "review",
"type": "varchar(200)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 200,
"mappedType": "string"
},
"reviewer": {
"name": "reviewer",
"type": "varchar(100)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 100,
"mappedType": "string"
},
"rating": {
"name": "rating",
"type": "int",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "integer"
},
"created_at": {
"name": "created_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"mappedType": "datetime"
},
"updated_at": {
"name": "updated_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"mappedType": "datetime"
}
},
"name": "testimony",
"schema": "public",
"indexes": [
{
"keyName": "testimony_pkey",
"columnNames": [
"id"
],
"composite": false,
"constraint": true,
"primary": true,
"unique": true
}
],
"checks": [],
"foreignKeys": {},
"nativeEnums": {}
},
{ {
"columns": { "columns": {
"id": { "id": {
@@ -3511,6 +3591,9 @@
"partner:create", "partner:create",
"partner:update", "partner:update",
"partner:delete", "partner:delete",
"testimony:create",
"testimony:update",
"testimony:delete",
"tag:create", "tag:create",
"tag:update", "tag:update",
"tag:delete", "tag:delete",

View File

@@ -0,0 +1,91 @@
import { Migration } from "@mikro-orm/migrations";
export class Migration20251208034953 extends Migration {
override async up(): Promise<void> {
const knex = this.getKnex();
await knex.schema.createTable("testimonies", (table) => {
// Columns
table.string("id", 30).notNullable();
table.string("review", 200).notNullable();
table.string("reviewer", 100).notNullable();
table.integer("rating").notNullable();
table.timestamp("created_at", { useTz: true }).notNullable();
table.timestamp("updated_at", { useTz: true }).notNullable();
// Constraints
table.primary(["id"], { constraintName: "testimonies_pkey" });
});
await knex.raw(`
alter type "admin_permission" add value if not exists 'testimony:create';
alter type "admin_permission" add value if not exists 'testimony:update';
alter type "admin_permission" add value if not exists 'testimony:delete';
`);
}
override async down(): Promise<void> {
const knex = this.getKnex();
await knex.schema.dropTable("testimonies");
await knex.raw(`
update "admin" set "permissions" = array_remove("permissions", 'testimony:create'::"admin_permission") where 'testimony:create' = any("permissions");
update "admin" set "permissions" = array_remove("permissions", 'testimony:update'::"admin_permission") where 'testimony:update' = any("permissions");
update "admin" set "permissions" = array_remove("permissions", 'testimony:delete'::"admin_permission") where 'testimony:delete' = any("permissions");
alter type "admin_permission" rename to "admin_permission_old";
create type "admin_permission" as enum (
'country:create',
'country:update',
'country:delete',
'city:create',
'city:update',
'city:delete',
'airline:create',
'airline:update',
'airline:delete',
'airport:create',
'airport:update',
'airport:delete',
'flight:create',
'flight:update',
'flight:delete',
'flight-class:create',
'flight-class:update',
'flight-class:delete',
'hotel-facility:create',
'hotel-facility:update',
'hotel-facility:delete',
'hotel:create',
'hotel:update',
'hotel:delete',
'transportation:create',
'transportation:update',
'transportation:delete',
'transportation-class:create',
'transportation-class:update',
'transportation-class:delete',
'package:create',
'package:update',
'package:delete',
'package-detail:create',
'package-detail:update',
'package-detail:delete',
'admin:create',
'admin:update',
'admin:delete',
'partner:create',
'partner:update',
'partner:delete',
'tag:create',
'tag:update',
'tag:delete'
);
alter table "admin" alter column "permissions" type "admin_permission"[] using "permissions"::text[]::"admin_permission"[];
drop type "admin_permission_old";
`);
}
}