From 20069aa2c0d4659b5b0342a843263212fb0c7e97 Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Thu, 20 Feb 2025 19:08:59 -0800 Subject: [PATCH 1/5] hahaha --- .nvmrc | 2 +- DataSource.ts | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.nvmrc b/.nvmrc index 7b768e0b..5802c69c 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -14.17.6 \ No newline at end of file +20.12.2 \ No newline at end of file diff --git a/DataSource.ts b/DataSource.ts index 3ab404c9..8f39113a 100644 --- a/DataSource.ts +++ b/DataSource.ts @@ -12,7 +12,7 @@ export const dataSource = new DataSource({ password: process.env.RDS_PASSWORD, database: process.env.RDS_DATABASE, entities: models, - migrations: ['migrations/*.ts'], + migrations: ['build/migrations/*.js'], // synchronize: true, // DO NOT USE IN PRODUCTION, make migrations }); diff --git a/package.json b/package.json index ca34b4d5..8d9de304 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ ], "scripts": { "build": "tsc && cp -r templates build/templates", - "start": "cp .env build && cd build/ && node --env-file=.env index.js", + "start": "node --env-file=.env build/index.js", "test": "jest --config jest.config.json --runInBand", "dev": "node -r ts-node/register --env-file=.env index.ts", "release": "ts-node ./node_modules/typeorm/cli.js migration:run -d DataSource.ts && cp .env build && cd build/ && node --env-file=.env index.js", From 0b2c70448caa1e832b03d91673f5ba0465f88cf1 Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Fri, 21 Feb 2025 11:06:57 -0800 Subject: [PATCH 2/5] fix --- DataSource.ts | 2 +- tsconfig.json | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DataSource.ts b/DataSource.ts index 8f39113a..73066e59 100644 --- a/DataSource.ts +++ b/DataSource.ts @@ -12,7 +12,7 @@ export const dataSource = new DataSource({ password: process.env.RDS_PASSWORD, database: process.env.RDS_DATABASE, entities: models, - migrations: ['build/migrations/*.js'], + migrations: ['/migrations/*.ts'], // synchronize: true, // DO NOT USE IN PRODUCTION, make migrations }); diff --git a/tsconfig.json b/tsconfig.json index 4d254e26..2229bf9f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,4 +14,7 @@ "include": [ "**/*.ts" ], + "exclude": [ + "migrations/**" + ] } From ffdda6a1d6d488c4d6a04af16f04bbe451904d5b Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Fri, 21 Feb 2025 11:11:52 -0800 Subject: [PATCH 3/5] fix linting: --- eslint.config.js | 2 +- tsconfig.eslint.json | 17 +++++++++++++++++ tsconfig.json | 3 ++- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 tsconfig.eslint.json diff --git a/eslint.config.js b/eslint.config.js index 0978e102..47b3b4d1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -8,7 +8,7 @@ module.exports = [ languageOptions: { parser: eslintParser, parserOptions: { - project: './tsconfig.json', + project: './tsconfig.eslint.json', ecmaVersion: 2020, sourceType: 'module', }, diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 00000000..4d254e26 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "declaration": true, + "outDir": "./build", + "strict": false, + "strictPropertyInitialization": false, + "skipLibCheck": true + }, + "include": [ + "**/*.ts" + ], +} diff --git a/tsconfig.json b/tsconfig.json index 2229bf9f..9e44f82a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,7 @@ "**/*.ts" ], "exclude": [ - "migrations/**" + "migrations/**", + "build" ] } From 2895c5bfe218e931e2c1f47b231fd8ea8506cdce Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Fri, 21 Feb 2025 11:33:37 -0800 Subject: [PATCH 4/5] here we go --- DataSource.ts | 3 +- eslint.config.js | 2 +- migrations/index.ts | 102 +++++++++++++++++++++++++++++++++++++++++++ tsconfig.eslint.json | 17 -------- tsconfig.json | 4 -- 5 files changed, 105 insertions(+), 23 deletions(-) create mode 100644 migrations/index.ts delete mode 100644 tsconfig.eslint.json diff --git a/DataSource.ts b/DataSource.ts index 73066e59..e338ba9e 100644 --- a/DataSource.ts +++ b/DataSource.ts @@ -1,6 +1,7 @@ import Container from 'typedi'; import { DataSource } from 'typeorm'; import { models } from './models'; +import { migrations } from './migrations' require('dotenv').config(); @@ -12,7 +13,7 @@ export const dataSource = new DataSource({ password: process.env.RDS_PASSWORD, database: process.env.RDS_DATABASE, entities: models, - migrations: ['/migrations/*.ts'], + migrations: migrations, // synchronize: true, // DO NOT USE IN PRODUCTION, make migrations }); diff --git a/eslint.config.js b/eslint.config.js index 47b3b4d1..0978e102 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -8,7 +8,7 @@ module.exports = [ languageOptions: { parser: eslintParser, parserOptions: { - project: './tsconfig.eslint.json', + project: './tsconfig.json', ecmaVersion: 2020, sourceType: 'module', }, diff --git a/migrations/index.ts b/migrations/index.ts new file mode 100644 index 00000000..7229b144 --- /dev/null +++ b/migrations/index.ts @@ -0,0 +1,102 @@ +import { AddUsersTable1595474487693 } from "./0001-add-users-table"; +import { AddEventsTable1595474505142 } from "./0002-add-events-table"; +import { AddAttendancesTable1595474511242 } from "./0003-add-attendances-table"; +import { AddActivitiesTable1595474518615 } from "./0004-add-activities-table"; +import { AddBonusPoints1595474528982 } from "./0005-add-bonus-points"; +import { AddStaffRole1595474540818 } from "./0006-add-staff-role"; +import { AddStaffedEvents1595474545484 } from "./0007-add-staffed-events"; +import { AddStaffAttendance1595474552159 } from "./0008-add-staff-attendance"; +import { AddStaffActivity1595474561776 } from "./0009-add-staff-activity"; +import { AddProfileBio1595474568734 } from "./0010-add-profile-bio"; +import { AddSpendableCredits1598589020508 } from "./0011-add-spendable-credits"; +import { AddMerchActivity1598589697701 } from "./0012-add-merch-activity"; +import { AddMerchCollectionsTable1598590154911 } from "./0013-add-merchCollections-table"; +import { AddMerchTable1598590965470 } from "./0014-add-merch-table"; +import { AddOrdersTable1598590986254 } from "./0015-add-orders-table"; +import { AddOrderItemsTable1598590991046 } from "./0016-add-orderItems-table"; +import { MergeOldSchema1598743920351 } from "./0017-merge-old-schema"; +import { AddItemOptionsTable1600648017504 } from "./0018-add-merch-item-options"; +import { AddSlidingLeaderboardIndex1601840868173 } from "./0019-add-sliding-leaderboard-index"; +import { ReplaceEnumsWithStrings1602914093929 } from "./0020-replace-enums-with-strings"; +import { FixUserEnumDefaults1603649172865 } from "./0021-fix-user-enum-defaults"; +import { SubmitEventFeedback1603825909623 } from "./0022-add-eventFeedback"; +import { SubmitFeedbackTable1603825929793 } from "./0023-add-feedback-table"; +import { ChangePublicActivityType1605316601032 } from "./0024-change-public-activity-type"; +import { AddActivityScopeIndex1608574428247 } from "./0025-add-public-activity-scope-index"; +import { AddMerchCollectionTheme1621463276136 } from "./0026-add-merch-collection-theme"; +import { SpecifyMerchItemVariants1621463589936 } from "./0027-specify-merch-item-variants"; +import { AddOrderPickupEventTable1631941497968 } from "./0028-add-orderPickupEvent-table"; +import { AddOrderPickupEventField1631941813500 } from "./0029-add-order-pickupEvent-field"; +import { AddOrderStatusField1633030219180 } from "./0030-add-order-status-field"; +import { AddOrderPickupEventOrderLimitField1633494827092 } from "./0031-add-orderPickupEvent-orderLimit-field"; +import { AddCreatedAtColumnToMerchCollection1640851101278 } from "./0032-add-created-at-column-to-merch-collection"; +import { AddPickupEventStatusField1642898108471 } from "./0033-add-pickup-event-status-field"; +import { AddResumeTable1663900724564 } from "./0034-add-resume-table"; +import { UserSocialMedia1676064415533 } from "./0035-add-userSocialMedia-table"; +import { AddHandleColumnToUsersTable1680150373509 } from "./0036-add-handle-column-to-users-table"; +import { AddUserAttendancePermissionToUserTable1691286073346 } from "./0037-add-userAttendancePermission-to-userTable"; +import { AddMerchItemImageTable1691286073347 } from "./0038-add-merch-item-image-table"; +import { AddCollectionImageTable1696990832868 } from "./0039-add-collection-image-table"; +import { + AddLinkedEventColumnToOrderPickupEventTable1704352457840 +} from "./0040-add-linkedEvent-column-to-orderPickupEvent-table"; +import { AddExpressCheckinsTable1708807643314 } from "./0041-add-expressCheckins-table"; +import { RemoveUsersLastLoginColumn1711518997063 } from "./0042-remove-users-lastLogin-column"; +import { AddFeedbackEventColum1711860173561 } from "./0043-add-feedback-event-colum"; +import { + AddDiscordAndGoogleCalendarEventColumns1712185658430 +} from "./0044-add-discord-and-google-calendar-event-columns"; +import { FixDiscordGcalField1714770061929 } from "./0045-fix-discord-gcal-field"; +import { AddFoodItemsColumn1728959627663 } from "./0046-add-food-items-column"; +import { AddOnboardingSeen1730353019494 } from "./0047-add-onboarding-seen"; + +// Organize all migrations into an array +export const migrations = [ + AddUsersTable1595474487693, + AddEventsTable1595474505142, + AddAttendancesTable1595474511242, + AddActivitiesTable1595474518615, + AddBonusPoints1595474528982, + AddStaffRole1595474540818, + AddStaffedEvents1595474545484, + AddStaffAttendance1595474552159, + AddStaffActivity1595474561776, + AddProfileBio1595474568734, + AddSpendableCredits1598589020508, + AddMerchActivity1598589697701, + AddMerchCollectionsTable1598590154911, + AddMerchTable1598590965470, + AddOrdersTable1598590986254, + AddOrderItemsTable1598590991046, + MergeOldSchema1598743920351, + AddItemOptionsTable1600648017504, + AddSlidingLeaderboardIndex1601840868173, + ReplaceEnumsWithStrings1602914093929, + FixUserEnumDefaults1603649172865, + SubmitEventFeedback1603825909623, + SubmitFeedbackTable1603825929793, + ChangePublicActivityType1605316601032, + AddActivityScopeIndex1608574428247, + AddMerchCollectionTheme1621463276136, + SpecifyMerchItemVariants1621463589936, + AddOrderPickupEventTable1631941497968, + AddOrderPickupEventField1631941813500, + AddOrderStatusField1633030219180, + AddOrderPickupEventOrderLimitField1633494827092, + AddCreatedAtColumnToMerchCollection1640851101278, + AddPickupEventStatusField1642898108471, + AddResumeTable1663900724564, + UserSocialMedia1676064415533, + AddHandleColumnToUsersTable1680150373509, + AddUserAttendancePermissionToUserTable1691286073346, + AddMerchItemImageTable1691286073347, + AddCollectionImageTable1696990832868, + AddLinkedEventColumnToOrderPickupEventTable1704352457840, + AddExpressCheckinsTable1708807643314, + RemoveUsersLastLoginColumn1711518997063, + AddFeedbackEventColum1711860173561, + AddDiscordAndGoogleCalendarEventColumns1712185658430, + FixDiscordGcalField1714770061929, + AddFoodItemsColumn1728959627663, + AddOnboardingSeen1730353019494, +]; diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json deleted file mode 100644 index 4d254e26..00000000 --- a/tsconfig.eslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "declaration": true, - "outDir": "./build", - "strict": false, - "strictPropertyInitialization": false, - "skipLibCheck": true - }, - "include": [ - "**/*.ts" - ], -} diff --git a/tsconfig.json b/tsconfig.json index 9e44f82a..4d254e26 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,8 +14,4 @@ "include": [ "**/*.ts" ], - "exclude": [ - "migrations/**", - "build" - ] } From 37c188da655ad21af6bf229ed373b4c9e333b395 Mon Sep 17 00:00:00 2001 From: Alex Zhang Date: Fri, 21 Feb 2025 11:37:46 -0800 Subject: [PATCH 5/5] fix unit test --- tests/migrations.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/migrations.test.ts b/tests/migrations.test.ts index b2ba0f47..1d618025 100644 --- a/tests/migrations.test.ts +++ b/tests/migrations.test.ts @@ -6,7 +6,11 @@ describe('order of migrations', () => { const migrations = fs .readdirSync(dirname) .map((filename) => `./migrations/${filename}`) - .filter((filename) => filename.endsWith('.ts')); + .filter((filename) => + filename.endsWith('.ts') && filename !== './migrations/index.ts' + ); + + console.log(migrations) test('filename prefixes are incremented and not duplicated', () => { const filenameOffset = dirname.length;