From 113434f8dec928b1b0bfef74b24e21bf7d9622f6 Mon Sep 17 00:00:00 2001 From: ItsMalma Date: Mon, 1 Dec 2025 19:00:14 +0700 Subject: [PATCH] add news migrations --- .../migrations/.snapshot-goumrah.json | 930 +++++++++++++++++- .../migrations/Migration20251201115952.ts | 59 ++ 2 files changed, 961 insertions(+), 28 deletions(-) create mode 100644 src/database/migrations/Migration20251201115952.ts diff --git a/src/database/migrations/.snapshot-goumrah.json b/src/database/migrations/.snapshot-goumrah.json index 99e207f..46c3e04 100644 --- a/src/database/migrations/.snapshot-goumrah.json +++ b/src/database/migrations/.snapshot-goumrah.json @@ -193,7 +193,213 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" + ] + } + } + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + }, + "thumbnail": { + "name": "thumbnail", + "type": "varchar(100)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 100, + "mappedType": "string" + }, + "slug": { + "name": "slug", + "type": "varchar(100)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 100, + "mappedType": "string" + }, + "title": { + "name": "title", + "type": "varchar(100)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 100, + "mappedType": "string" + }, + "content": { + "name": "content", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "text" + }, + "views": { + "name": "views", + "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": "article", + "schema": "public", + "indexes": [ + { + "columnNames": ["slug"], + "composite": false, + "keyName": "article_slug_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "article_pkey", + "columnNames": ["id"], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": { + "skytrax_type": { + "name": "skytrax_type", + "schema": "public", + "items": ["full_service", "low_cost"] + }, + "package_itinerary_widget_type": { + "name": "package_itinerary_widget_type", + "schema": "public", + "items": ["hotel", "information", "transport"] + }, + "verification_type": { + "name": "verification_type", + "schema": "public", + "items": [ + "admin:create", + "admin:changeEmail", + "admin:changePassword", + "admin:update", + "partner:create", + "partner:changeEmail", + "partner:changePassword", + "partner:update", + "order:create" + ] + }, + "package_type": { + "name": "package_type", + "schema": "public", + "items": ["reguler", "plus"] + }, + "package_class": { + "name": "package_class", + "schema": "public", + "items": ["silver", "gold", "platinum"] + }, + "room_type": { + "name": "room_type", + "schema": "public", + "items": ["double", "triple", "quad", "infant"] + }, + "admin_permission": { + "name": "admin_permission", + "schema": "public", + "items": [ + "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", + "article:create", + "article:update", + "article:delete" ] } } @@ -341,7 +547,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -508,7 +720,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -693,7 +911,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -972,7 +1196,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -1175,7 +1405,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -1350,7 +1586,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -1626,7 +1868,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -1784,7 +2032,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -1931,7 +2185,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -2098,7 +2358,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -2275,7 +2541,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -2460,7 +2732,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -2627,7 +2905,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -2862,7 +3146,338 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" + ] + } + } + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + }, + "slug": { + "name": "slug", + "type": "varchar(100)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 100, + "mappedType": "string" + }, + "name": { + "name": "name", + "type": "varchar(100)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 100, + "mappedType": "string" + }, + "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": "tag", + "schema": "public", + "indexes": [ + { + "columnNames": ["slug"], + "composite": false, + "keyName": "tag_slug_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "tag_pkey", + "columnNames": ["id"], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": { + "skytrax_type": { + "name": "skytrax_type", + "schema": "public", + "items": ["full_service", "low_cost"] + }, + "package_itinerary_widget_type": { + "name": "package_itinerary_widget_type", + "schema": "public", + "items": ["hotel", "information", "transport"] + }, + "verification_type": { + "name": "verification_type", + "schema": "public", + "items": [ + "admin:create", + "admin:changeEmail", + "admin:changePassword", + "admin:update", + "partner:create", + "partner:changeEmail", + "partner:changePassword", + "partner:update", + "order:create" + ] + }, + "package_type": { + "name": "package_type", + "schema": "public", + "items": ["reguler", "plus"] + }, + "package_class": { + "name": "package_class", + "schema": "public", + "items": ["silver", "gold", "platinum"] + }, + "room_type": { + "name": "room_type", + "schema": "public", + "items": ["double", "triple", "quad", "infant"] + }, + "admin_permission": { + "name": "admin_permission", + "schema": "public", + "items": [ + "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", + "article:create", + "article:update", + "article:delete" + ] + } + } + }, + { + "columns": { + "article_id": { + "name": "article_id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + }, + "tag_id": { + "name": "tag_id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + } + }, + "name": "article_tags", + "schema": "public", + "indexes": [ + { + "keyName": "article_tags_pkey", + "columnNames": ["article_id", "tag_id"], + "composite": true, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "article_tags_article_id_foreign": { + "constraintName": "article_tags_article_id_foreign", + "columnNames": ["article_id"], + "localTableName": "public.article_tags", + "referencedColumnNames": ["id"], + "referencedTableName": "public.article", + "deleteRule": "cascade", + "updateRule": "cascade" + }, + "article_tags_tag_id_foreign": { + "constraintName": "article_tags_tag_id_foreign", + "columnNames": ["tag_id"], + "localTableName": "public.article_tags", + "referencedColumnNames": ["id"], + "referencedTableName": "public.tag", + "deleteRule": "cascade", + "updateRule": "cascade" + } + }, + "nativeEnums": { + "skytrax_type": { + "name": "skytrax_type", + "schema": "public", + "items": ["full_service", "low_cost"] + }, + "package_itinerary_widget_type": { + "name": "package_itinerary_widget_type", + "schema": "public", + "items": ["hotel", "information", "transport"] + }, + "verification_type": { + "name": "verification_type", + "schema": "public", + "items": [ + "admin:create", + "admin:changeEmail", + "admin:changePassword", + "admin:update", + "partner:create", + "partner:changeEmail", + "partner:changePassword", + "partner:update", + "order:create" + ] + }, + "package_type": { + "name": "package_type", + "schema": "public", + "items": ["reguler", "plus"] + }, + "package_class": { + "name": "package_class", + "schema": "public", + "items": ["silver", "gold", "platinum"] + }, + "room_type": { + "name": "room_type", + "schema": "public", + "items": ["double", "triple", "quad", "infant"] + }, + "admin_permission": { + "name": "admin_permission", + "schema": "public", + "items": [ + "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", + "article:create", + "article:update", + "article:delete" ] } } @@ -3020,7 +3635,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -3204,7 +3825,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -3371,7 +3998,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -3550,7 +4183,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -3773,7 +4412,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -3999,7 +4644,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -4344,7 +4995,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -4491,7 +5148,194 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" + ] + } + } + }, + { + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + }, + "code": { + "name": "code", + "type": "varchar(6)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "mappedType": "string" + }, + "package_id": { + "name": "package_id", + "type": "varchar(30)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 30, + "mappedType": "string" + }, + "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": "package_consult_session", + "schema": "public", + "indexes": [ + { + "columnNames": ["code"], + "composite": false, + "keyName": "package_consult_session_code_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "package_consult_session_pkey", + "columnNames": ["id"], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "package_consult_session_package_id_foreign": { + "constraintName": "package_consult_session_package_id_foreign", + "columnNames": ["package_id"], + "localTableName": "public.package_consult_session", + "referencedColumnNames": ["id"], + "referencedTableName": "public.package", + "updateRule": "cascade" + } + }, + "nativeEnums": { + "skytrax_type": { + "name": "skytrax_type", + "schema": "public", + "items": ["full_service", "low_cost"] + }, + "package_itinerary_widget_type": { + "name": "package_itinerary_widget_type", + "schema": "public", + "items": ["hotel", "information", "transport"] + }, + "verification_type": { + "name": "verification_type", + "schema": "public", + "items": [ + "admin:create", + "admin:changeEmail", + "admin:changePassword", + "admin:update", + "partner:create", + "partner:changeEmail", + "partner:changePassword", + "partner:update", + "order:create" + ] + }, + "package_type": { + "name": "package_type", + "schema": "public", + "items": ["reguler", "plus"] + }, + "package_class": { + "name": "package_class", + "schema": "public", + "items": ["silver", "gold", "platinum"] + }, + "room_type": { + "name": "room_type", + "schema": "public", + "items": ["double", "triple", "quad", "infant"] + }, + "admin_permission": { + "name": "admin_permission", + "schema": "public", + "items": [ + "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", + "article:create", + "article:update", + "article:delete" ] } } @@ -4736,7 +5580,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -4904,7 +5754,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -5010,7 +5866,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ], "mappedType": "array" }, @@ -5163,7 +6025,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } @@ -5255,7 +6123,13 @@ "admin:delete", "partner:create", "partner:update", - "partner:delete" + "partner:delete", + "tag:create", + "tag:update", + "tag:delete", + "article:create", + "article:update", + "article:delete" ] } } diff --git a/src/database/migrations/Migration20251201115952.ts b/src/database/migrations/Migration20251201115952.ts new file mode 100644 index 0000000..7d844e0 --- /dev/null +++ b/src/database/migrations/Migration20251201115952.ts @@ -0,0 +1,59 @@ +import { Migration } from "@mikro-orm/migrations"; + +export class Migration20251201115952 extends Migration { + override async up(): Promise { + this.addSql( + `create table "article" ("id" varchar(30) not null, "thumbnail" varchar(100) not null, "slug" varchar(100) not null, "title" varchar(100) not null, "content" text not null, "views" int not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, constraint "article_pkey" primary key ("id"));`, + ); + this.addSql( + `alter table "article" add constraint "article_slug_unique" unique ("slug");`, + ); + + this.addSql( + `create table "tag" ("id" varchar(30) not null, "slug" varchar(100) not null, "name" varchar(100) not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, constraint "tag_pkey" primary key ("id"));`, + ); + this.addSql( + `alter table "tag" add constraint "tag_slug_unique" unique ("slug");`, + ); + + this.addSql( + `create table "article_tags" ("article_id" varchar(30) not null, "tag_id" varchar(30) not null, constraint "article_tags_pkey" primary key ("article_id", "tag_id"));`, + ); + + this.addSql( + `create table "package_consult_session" ("id" varchar(30) not null, "code" varchar(6) not null, "package_id" varchar(30) not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, constraint "package_consult_session_pkey" primary key ("id"));`, + ); + this.addSql( + `alter table "package_consult_session" add constraint "package_consult_session_code_unique" unique ("code");`, + ); + + this.addSql( + `alter table "article_tags" add constraint "article_tags_article_id_foreign" foreign key ("article_id") references "article" ("id") on update cascade on delete cascade;`, + ); + this.addSql( + `alter table "article_tags" add constraint "article_tags_tag_id_foreign" foreign key ("tag_id") references "tag" ("id") on update cascade on delete cascade;`, + ); + + this.addSql( + `alter table "package_consult_session" add constraint "package_consult_session_package_id_foreign" foreign key ("package_id") references "package" ("id") on update cascade;`, + ); + } + + override async down(): Promise { + this.addSql( + `alter table "article_tags" drop constraint "article_tags_article_id_foreign";`, + ); + + this.addSql( + `alter table "article_tags" drop constraint "article_tags_tag_id_foreign";`, + ); + + this.addSql(`drop table if exists "article" cascade;`); + + this.addSql(`drop table if exists "tag" cascade;`); + + this.addSql(`drop table if exists "article_tags" cascade;`); + + this.addSql(`drop table if exists "package_consult_session" cascade;`); + } +}