@takaro/db 0.0.14 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/TakaroModel.d.ts +1 -0
  2. package/dist/TakaroModel.d.ts.map +1 -0
  3. package/dist/config.d.ts +1 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/encryption.d.ts +1 -0
  6. package/dist/encryption.d.ts.map +1 -0
  7. package/dist/errorTypeGuards.d.ts +1 -0
  8. package/dist/errorTypeGuards.d.ts.map +1 -0
  9. package/dist/knex.d.ts +1 -0
  10. package/dist/knex.d.ts.map +1 -0
  11. package/dist/main.d.ts +1 -0
  12. package/dist/main.d.ts.map +1 -0
  13. package/dist/migrations/index.d.ts +1 -0
  14. package/dist/migrations/index.d.ts.map +1 -0
  15. package/dist/migrations/sql/20220827191938_init.d.ts +1 -0
  16. package/dist/migrations/sql/20220827191938_init.d.ts.map +1 -0
  17. package/dist/migrations/sql/20221019173729_settings.d.ts +1 -0
  18. package/dist/migrations/sql/20221019173729_settings.d.ts.map +1 -0
  19. package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts +1 -0
  20. package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts.map +1 -0
  21. package/dist/migrations/sql/20221102190532_commands.d.ts +1 -0
  22. package/dist/migrations/sql/20221102190532_commands.d.ts.map +1 -0
  23. package/dist/migrations/sql/20221203135001-builtin_modules.d.ts +1 -0
  24. package/dist/migrations/sql/20221203135001-builtin_modules.d.ts.map +1 -0
  25. package/dist/migrations/sql/20230308183400-persistent-variables.d.ts +1 -0
  26. package/dist/migrations/sql/20230308183400-persistent-variables.d.ts.map +1 -0
  27. package/dist/migrations/sql/20230314183400-auth-ory.d.ts +1 -0
  28. package/dist/migrations/sql/20230314183400-auth-ory.d.ts.map +1 -0
  29. package/dist/migrations/sql/20230325156123_command-arguments.d.ts +1 -0
  30. package/dist/migrations/sql/20230325156123_command-arguments.d.ts.map +1 -0
  31. package/dist/migrations/sql/20230407132022-module-descriptions.d.ts +1 -0
  32. package/dist/migrations/sql/20230407132022-module-descriptions.d.ts.map +1 -0
  33. package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts +1 -0
  34. package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts.map +1 -0
  35. package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts +1 -0
  36. package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts.map +1 -0
  37. package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts +1 -0
  38. package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts.map +1 -0
  39. package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts +1 -0
  40. package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts.map +1 -0
  41. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts +1 -0
  42. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts.map +1 -0
  43. package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts +1 -0
  44. package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts.map +1 -0
  45. package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts +1 -0
  46. package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts.map +1 -0
  47. package/dist/migrations/sql/20230622192402-discord-hooks.d.ts +1 -0
  48. package/dist/migrations/sql/20230622192402-discord-hooks.d.ts.map +1 -0
  49. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts +1 -0
  50. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts.map +1 -0
  51. package/dist/migrations/sql/20230710174340-events.d.ts +1 -0
  52. package/dist/migrations/sql/20230710174340-events.d.ts.map +1 -0
  53. package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts +1 -0
  54. package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts.map +1 -0
  55. package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts +1 -0
  56. package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts.map +1 -0
  57. package/dist/migrations/sql/20230714045136-domain-index.d.ts +1 -0
  58. package/dist/migrations/sql/20230714045136-domain-index.d.ts.map +1 -0
  59. package/dist/migrations/sql/20230714045727-events-index.d.ts +1 -0
  60. package/dist/migrations/sql/20230714045727-events-index.d.ts.map +1 -0
  61. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts +1 -0
  62. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts.map +1 -0
  63. package/dist/migrations/sql/20230724062109-roles-constraints.d.ts +1 -0
  64. package/dist/migrations/sql/20230724062109-roles-constraints.d.ts.map +1 -0
  65. package/dist/migrations/sql/20230811095701-userId-on-events.d.ts +1 -0
  66. package/dist/migrations/sql/20230811095701-userId-on-events.d.ts.map +1 -0
  67. package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts +1 -0
  68. package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts.map +1 -0
  69. package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts +1 -0
  70. package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts.map +1 -0
  71. package/dist/migrations/sql/20231114151343-system-roles.d.ts +1 -0
  72. package/dist/migrations/sql/20231114151343-system-roles.d.ts.map +1 -0
  73. package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts +1 -0
  74. package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts.map +1 -0
  75. package/dist/migrations/sql/20231119115037-timedRoles.d.ts +1 -0
  76. package/dist/migrations/sql/20231119115037-timedRoles.d.ts.map +1 -0
  77. package/dist/migrations/sql/20231123150854-economy-base.d.ts +1 -0
  78. package/dist/migrations/sql/20231123150854-economy-base.d.ts.map +1 -0
  79. package/dist/migrations/sql/20231123171611-economy-settings.d.ts +1 -0
  80. package/dist/migrations/sql/20231123171611-economy-settings.d.ts.map +1 -0
  81. package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts +1 -0
  82. package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts.map +1 -0
  83. package/dist/migrations/sql/20231208114507-settings-refactor.d.ts +1 -0
  84. package/dist/migrations/sql/20231208114507-settings-refactor.d.ts.map +1 -0
  85. package/dist/migrations/sql/20231208171234-game-items.d.ts +1 -0
  86. package/dist/migrations/sql/20231208171234-game-items.d.ts.map +1 -0
  87. package/dist/migrations/sql/20231216100720-player-inventory.d.ts +1 -0
  88. package/dist/migrations/sql/20231216100720-player-inventory.d.ts.map +1 -0
  89. package/dist/migrations/sql/20231222180438-steam-data.d.ts +1 -0
  90. package/dist/migrations/sql/20231222180438-steam-data.d.ts.map +1 -0
  91. package/dist/migrations/sql/20231223132631-pog-online.d.ts +1 -0
  92. package/dist/migrations/sql/20231223132631-pog-online.d.ts.map +1 -0
  93. package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts +1 -0
  94. package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts.map +1 -0
  95. package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts +1 -0
  96. package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts.map +1 -0
  97. package/dist/migrations/sql/20231224155226-unique-pog.d.ts +1 -0
  98. package/dist/migrations/sql/20231224155226-unique-pog.d.ts.map +1 -0
  99. package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts +1 -0
  100. package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts.map +1 -0
  101. package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts +1 -0
  102. package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts.map +1 -0
  103. package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts +1 -0
  104. package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts.map +1 -0
  105. package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts +1 -0
  106. package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts.map +1 -0
  107. package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts +1 -0
  108. package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts.map +1 -0
  109. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts +1 -0
  110. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts.map +1 -0
  111. package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts +1 -0
  112. package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts.map +1 -0
  113. package/dist/migrations/sql/20240121142329-move-ip-history.d.ts +1 -0
  114. package/dist/migrations/sql/20240121142329-move-ip-history.d.ts.map +1 -0
  115. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts +1 -0
  116. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts.map +1 -0
  117. package/dist/migrations/sql/20240216120143-domain-state.d.ts +1 -0
  118. package/dist/migrations/sql/20240216120143-domain-state.d.ts.map +1 -0
  119. package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts +1 -0
  120. package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts.map +1 -0
  121. package/dist/migrations/sql/20240301063505-module-functions.d.ts +1 -0
  122. package/dist/migrations/sql/20240301063505-module-functions.d.ts.map +1 -0
  123. package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts +1 -0
  124. package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts.map +1 -0
  125. package/dist/migrations/sql/20240614143517-shop.d.ts +1 -0
  126. package/dist/migrations/sql/20240614143517-shop.d.ts.map +1 -0
  127. package/dist/migrations/sql/20240615145045-user-player-link.d.ts +1 -0
  128. package/dist/migrations/sql/20240615145045-user-player-link.d.ts.map +1 -0
  129. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts +1 -0
  130. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts.map +1 -0
  131. package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts +1 -0
  132. package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts.map +1 -0
  133. package/dist/migrations/sql/20240628174914-shop-orders.d.ts +1 -0
  134. package/dist/migrations/sql/20240628174914-shop-orders.d.ts.map +1 -0
  135. package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts +1 -0
  136. package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts.map +1 -0
  137. package/dist/migrations/sql/20240710181429-events-name-idx.d.ts +1 -0
  138. package/dist/migrations/sql/20240710181429-events-name-idx.d.ts.map +1 -0
  139. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts +1 -0
  140. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts.map +1 -0
  141. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts +1 -0
  142. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts.map +1 -0
  143. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts +1 -0
  144. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts.map +1 -0
  145. package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts +1 -0
  146. package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts.map +1 -0
  147. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts +1 -0
  148. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts.map +1 -0
  149. package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts +1 -0
  150. package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts.map +1 -0
  151. package/dist/migrations/sql/20240816171220-player-steam-level.d.ts +1 -0
  152. package/dist/migrations/sql/20240816171220-player-steam-level.d.ts.map +1 -0
  153. package/dist/migrations/sql/20240830081157-variable-expiry.d.ts +1 -0
  154. package/dist/migrations/sql/20240830081157-variable-expiry.d.ts.map +1 -0
  155. package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts +1 -0
  156. package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts.map +1 -0
  157. package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts +1 -0
  158. package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts.map +1 -0
  159. package/dist/migrations/sql/20240922110414-player-playtime.d.ts +1 -0
  160. package/dist/migrations/sql/20240922110414-player-playtime.d.ts.map +1 -0
  161. package/dist/migrations/sql/20240922133738-add-bans.d.ts +1 -0
  162. package/dist/migrations/sql/20240922133738-add-bans.d.ts.map +1 -0
  163. package/dist/migrations/sql/20240929090313-global-playtime.d.ts +1 -0
  164. package/dist/migrations/sql/20240929090313-global-playtime.d.ts.map +1 -0
  165. package/dist/migrations/sql/20240929143849-player-name-null.d.ts +1 -0
  166. package/dist/migrations/sql/20240929143849-player-name-null.d.ts.map +1 -0
  167. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts +1 -0
  168. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts.map +1 -0
  169. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts +1 -0
  170. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts.map +1 -0
  171. package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts +4 -0
  172. package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts.map +1 -0
  173. package/dist/migrations/sql/20241020133133-make-listing-name-required.js +13 -0
  174. package/dist/migrations/sql/20241020133133-make-listing-name-required.js.map +1 -0
  175. package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts +4 -0
  176. package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts.map +1 -0
  177. package/dist/migrations/sql/20241024164331-events-fk-fix.js +14 -0
  178. package/dist/migrations/sql/20241024164331-events-fk-fix.js.map +1 -0
  179. package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts +4 -0
  180. package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts.map +1 -0
  181. package/dist/migrations/sql/20241030130613-index-for-roleId.js +25 -0
  182. package/dist/migrations/sql/20241030130613-index-for-roleId.js.map +1 -0
  183. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts +4 -0
  184. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts.map +1 -0
  185. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js +11 -0
  186. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js.map +1 -0
  187. package/dist/migrations/sql/20241330200212-module-versions.d.ts +4 -0
  188. package/dist/migrations/sql/20241330200212-module-versions.d.ts.map +1 -0
  189. package/dist/migrations/sql/20241330200212-module-versions.js +329 -0
  190. package/dist/migrations/sql/20241330200212-module-versions.js.map +1 -0
  191. package/dist/migrations/sql/20250128200529-version-fixes.d.ts +4 -0
  192. package/dist/migrations/sql/20250128200529-version-fixes.d.ts.map +1 -0
  193. package/dist/migrations/sql/20250128200529-version-fixes.js +11 -0
  194. package/dist/migrations/sql/20250128200529-version-fixes.js.map +1 -0
  195. package/dist/migrations/sql/20250131183251-domain-settings.d.ts +4 -0
  196. package/dist/migrations/sql/20250131183251-domain-settings.d.ts.map +1 -0
  197. package/dist/migrations/sql/20250131183251-domain-settings.js +45 -0
  198. package/dist/migrations/sql/20250131183251-domain-settings.js.map +1 -0
  199. package/dist/migrations/sql/20250221130042-variable-length.d.ts +17 -0
  200. package/dist/migrations/sql/20250221130042-variable-length.d.ts.map +1 -0
  201. package/dist/migrations/sql/20250221130042-variable-length.js +30 -0
  202. package/dist/migrations/sql/20250221130042-variable-length.js.map +1 -0
  203. package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts +10 -0
  204. package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts.map +1 -0
  205. package/dist/migrations/sql/20250221193144-versions-perf-improvements.js +61 -0
  206. package/dist/migrations/sql/20250221193144-versions-perf-improvements.js.map +1 -0
  207. package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts +4 -0
  208. package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts.map +1 -0
  209. package/dist/migrations/sql/20250223143705-fix-ban-constraint.js +37 -0
  210. package/dist/migrations/sql/20250223143705-fix-ban-constraint.js.map +1 -0
  211. package/dist/migrations/util/alterEnum.d.ts +1 -0
  212. package/dist/migrations/util/alterEnum.d.ts.map +1 -0
  213. package/dist/queryBuilder.d.ts +1 -0
  214. package/dist/queryBuilder.d.ts.map +1 -0
  215. package/dist/redis.d.ts +1 -0
  216. package/dist/redis.d.ts.map +1 -0
  217. package/package.json +1 -4
  218. package/src/__tests__/encryption.integration.test.ts +1 -0
  219. package/src/__tests__/queryBuilder.integration.test.ts +1 -0
  220. package/src/migrations/sql/20241020133133-make-listing-name-required.ts +16 -0
  221. package/src/migrations/sql/20241024164331-events-fk-fix.ts +16 -0
  222. package/src/migrations/sql/20241030130613-index-for-roleId.ts +31 -0
  223. package/src/migrations/sql/20241205201123-gameserver-deletedAt.ts +13 -0
  224. package/src/migrations/sql/20241330200212-module-versions.ts +384 -0
  225. package/src/migrations/sql/20250128200529-version-fixes.ts +13 -0
  226. package/src/migrations/sql/20250131183251-domain-settings.ts +55 -0
  227. package/src/migrations/sql/20250221130042-variable-length.ts +35 -0
  228. package/src/migrations/sql/20250221193144-versions-perf-improvements.ts +79 -0
  229. package/src/migrations/sql/20250223143705-fix-ban-constraint.ts +43 -0
  230. package/tsconfig.json +1 -1
@@ -0,0 +1,329 @@
1
+ export async function up(knex) {
2
+ // Create a new table for module versions
3
+ await knex.schema.createTable('moduleVersions', (table) => {
4
+ table.timestamps(true, true, true);
5
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
6
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
7
+ table.index('domain');
8
+ table.uuid('moduleId').notNullable().references('modules.id').onDelete('CASCADE');
9
+ table.string('tag').notNullable().defaultTo('0.0.1');
10
+ table.unique(['moduleId', 'tag']);
11
+ table.text('description').nullable();
12
+ table.text('configSchema').nullable();
13
+ table.text('uiSchema').nullable();
14
+ });
15
+ // Copy over all existing modules
16
+ const modules = await knex('modules').select('id', 'domain', 'description', 'configSchema', 'uiSchema');
17
+ console.log(`Migrating ${modules.length} modules to moduleVersions`);
18
+ for (const mod of modules) {
19
+ await knex('moduleVersions').insert({
20
+ domain: mod.domain,
21
+ moduleId: mod.id,
22
+ description: mod.description,
23
+ configSchema: mod.configSchema,
24
+ uiSchema: mod.uiSchema,
25
+ tag: 'latest',
26
+ });
27
+ }
28
+ // Delete the old columns
29
+ await knex.schema.table('modules', (table) => {
30
+ table.dropColumn('description');
31
+ table.dropColumn('configSchema');
32
+ table.dropColumn('uiSchema');
33
+ });
34
+ // Rename table moduleAssignments to moduleInstallations
35
+ await knex.schema.renameTable('moduleAssignments', 'moduleInstallations');
36
+ // Prepare versionId column in moduleInstallations
37
+ await knex.schema.table('moduleInstallations', (table) => {
38
+ table.uuid('versionId');
39
+ table.dropUnique(['gameserverId', 'moduleId', 'domain'], 'moduleassignments_gameserverid_moduleid_domain_unique');
40
+ });
41
+ // For each module installation, find the latest version and set it as the versionId
42
+ // There's a lot of installs, so we'll do this in batches
43
+ const batchSize = 100;
44
+ let offset = 0;
45
+ let installs;
46
+ do {
47
+ installs = await knex('moduleInstallations')
48
+ .select('id', 'moduleId')
49
+ .limit(batchSize)
50
+ .offset(offset)
51
+ .orderBy('createdAt');
52
+ for (const install of installs) {
53
+ const latestVersion = await knex('moduleVersions')
54
+ .select('id')
55
+ .where('moduleId', install.moduleId)
56
+ .orderBy('createdAt', 'desc')
57
+ .first();
58
+ await knex('moduleInstallations').where('id', install.id).update({ versionId: latestVersion.id });
59
+ }
60
+ offset += batchSize;
61
+ } while (installs.length === batchSize);
62
+ await knex('moduleInstallations').whereNull('versionId').delete();
63
+ // Set versionId as not nullable and add foreign key constraint
64
+ await knex.schema.alterTable('moduleInstallations', (table) => {
65
+ table.uuid('versionId').notNullable().alter();
66
+ table.foreign('versionId').references('moduleVersions.id').onDelete('CASCADE');
67
+ });
68
+ // Now, we also need to move the commands,hooks and cronjobs to the moduleVersions table
69
+ // Currently, they have an FK to modules, but we need to replace them with moduleVersions
70
+ // Same logic here, let's just link all of them to the latest version of the module (which is the only one that should exist)
71
+ // First, let's remove the old FKs
72
+ // And add a new column for the versionId
73
+ await knex.schema.alterTable('commands', (table) => {
74
+ table.dropForeign('moduleId');
75
+ table.uuid('versionId');
76
+ });
77
+ await knex.schema.alterTable('hooks', (table) => {
78
+ table.dropForeign('moduleId');
79
+ table.uuid('versionId');
80
+ });
81
+ await knex.schema.alterTable('cronJobs', (table) => {
82
+ table.dropForeign('moduleId');
83
+ table.uuid('versionId');
84
+ });
85
+ await knex.schema.alterTable('permission', (table) => {
86
+ table.dropForeign('moduleId', 'modulepermission_moduleid_foreign');
87
+ table.uuid('moduleVersionId');
88
+ });
89
+ await knex.schema.alterTable('functions', (table) => {
90
+ table.dropForeign('moduleId');
91
+ table.uuid('versionId');
92
+ });
93
+ offset = 0;
94
+ let commands;
95
+ do {
96
+ commands = await knex('commands').select('id', 'moduleId').limit(batchSize).offset(offset).orderBy('createdAt');
97
+ for (const command of commands) {
98
+ const latestVersion = await knex('moduleVersions')
99
+ .select('id')
100
+ .where('moduleId', command.moduleId)
101
+ .orderBy('createdAt', 'desc')
102
+ .first();
103
+ await knex('commands').where('id', command.id).update({ versionId: latestVersion.id });
104
+ }
105
+ offset += batchSize;
106
+ } while (commands.length === batchSize);
107
+ offset = 0;
108
+ let hooks;
109
+ do {
110
+ hooks = await knex('hooks').select('id', 'moduleId').limit(batchSize).offset(offset).orderBy('createdAt');
111
+ for (const hook of hooks) {
112
+ const latestVersion = await knex('moduleVersions')
113
+ .select('id')
114
+ .where('moduleId', hook.moduleId)
115
+ .orderBy('createdAt', 'desc')
116
+ .first();
117
+ await knex('hooks').where('id', hook.id).update({ versionId: latestVersion.id });
118
+ }
119
+ offset += batchSize;
120
+ } while (hooks.length === batchSize);
121
+ offset = 0;
122
+ let cronjobs;
123
+ do {
124
+ cronjobs = await knex('cronJobs').select('id', 'moduleId').limit(batchSize).offset(offset).orderBy('createdAt');
125
+ for (const cronjob of cronjobs) {
126
+ const latestVersion = await knex('moduleVersions')
127
+ .select('id')
128
+ .where('moduleId', cronjob.moduleId)
129
+ .orderBy('createdAt', 'desc')
130
+ .first();
131
+ await knex('cronJobs').where('id', cronjob.id).update({ versionId: latestVersion.id });
132
+ }
133
+ offset += batchSize;
134
+ } while (cronjobs.length === batchSize);
135
+ offset = 0;
136
+ let permissions;
137
+ do {
138
+ permissions = await knex('permission')
139
+ .select('id', 'moduleId')
140
+ .limit(batchSize)
141
+ .offset(offset)
142
+ .orderBy('createdAt');
143
+ for (const permission of permissions) {
144
+ if (!permission.moduleId) {
145
+ // Not a module scoped permission, so skip
146
+ continue;
147
+ }
148
+ const latestVersion = await knex('moduleVersions')
149
+ .select('id')
150
+ .where('moduleId', permission.moduleId)
151
+ .orderBy('createdAt', 'desc')
152
+ .first();
153
+ await knex('permission').where('id', permission.id).update({ moduleVersionId: latestVersion.id });
154
+ }
155
+ offset += batchSize;
156
+ } while (permissions.length === batchSize);
157
+ offset = 0;
158
+ let functions;
159
+ do {
160
+ functions = await knex('functions').select('id', 'moduleId').limit(batchSize).offset(offset).orderBy('createdAt');
161
+ for (const func of functions) {
162
+ if (!func.moduleId) {
163
+ // Not module scoped, so skip
164
+ continue;
165
+ }
166
+ const latestVersion = await knex('moduleVersions')
167
+ .select('id')
168
+ .where('moduleId', func.moduleId)
169
+ .orderBy('createdAt', 'desc')
170
+ .first();
171
+ await knex('functions').where('id', func.id).update({ versionId: latestVersion.id });
172
+ }
173
+ offset += batchSize;
174
+ } while (functions.length === batchSize);
175
+ // Finally, let's drop old columns and ensure new FK is in place
176
+ const orphanedCommands = await knex('commands').delete().whereNull('versionId');
177
+ console.log(`Deleted ${orphanedCommands} orphaned commands`);
178
+ const orphanedHooks = await knex('hooks').delete().whereNull('versionId');
179
+ console.log(`Deleted ${orphanedHooks} orphaned hooks`);
180
+ const orphanedCronjobs = await knex('cronJobs').delete().whereNull('versionId');
181
+ console.log(`Deleted ${orphanedCronjobs} orphaned cronjobs`);
182
+ await knex.schema.alterTable('commands', (table) => {
183
+ table.dropColumn('moduleId');
184
+ table.uuid('versionId').notNullable().alter();
185
+ table.foreign('versionId').references('moduleVersions.id').onDelete('CASCADE');
186
+ });
187
+ await knex.schema.alterTable('hooks', (table) => {
188
+ table.dropColumn('moduleId');
189
+ table.uuid('versionId').notNullable().alter();
190
+ table.foreign('versionId').references('moduleVersions.id').onDelete('CASCADE');
191
+ });
192
+ await knex.schema.alterTable('cronJobs', (table) => {
193
+ table.dropColumn('moduleId');
194
+ table.uuid('versionId').notNullable().alter();
195
+ table.foreign('versionId').references('moduleVersions.id').onDelete('CASCADE');
196
+ });
197
+ await knex.schema.alterTable('permission', (table) => {
198
+ table.dropColumn('moduleId');
199
+ table.uuid('moduleVersionId').nullable().alter();
200
+ table.foreign('moduleVersionId').references('moduleVersions.id').onDelete('CASCADE');
201
+ });
202
+ await knex.schema.alterTable('functions', (table) => {
203
+ table.dropColumn('moduleId');
204
+ table.uuid('versionId').nullable().alter();
205
+ table.foreign('versionId').references('moduleVersions.id').onDelete('CASCADE');
206
+ });
207
+ await knex.schema.alterTable('moduleInstallations', (table) => {
208
+ table.unique(['moduleId', 'gameserverId', 'domain'], { indexName: 'unique_module_per_gameserver' });
209
+ table.index(['moduleId', 'gameserverId', 'domain'], 'idx_moduleinstallations_module_gameserver');
210
+ });
211
+ // Hook name must be unique inside a version
212
+ await knex.schema.alterTable('hooks', (table) => {
213
+ table.unique(['name', 'versionId']);
214
+ });
215
+ }
216
+ export async function down(knex) {
217
+ await knex.schema.alterTable('hooks', (table) => {
218
+ table.dropUnique(['name', 'versionId']);
219
+ });
220
+ await knex.schema.alterTable('moduleInstallations', (table) => {
221
+ table.dropUnique(['moduleId', 'gameserverId', 'domain'], 'unique_module_per_gameserver');
222
+ table.dropIndex(['moduleId', 'gameserverId', 'domain'], 'idx_moduleinstallations_module_gameserver');
223
+ });
224
+ // Remove the FKs from commands, hooks and cronjobs
225
+ await knex.schema.alterTable('commands', (table) => {
226
+ table.dropForeign('versionId');
227
+ });
228
+ await knex.schema.alterTable('hooks', (table) => {
229
+ table.dropForeign('versionId');
230
+ });
231
+ await knex.schema.alterTable('cronJobs', (table) => {
232
+ table.dropForeign('versionId');
233
+ });
234
+ await knex.schema.alterTable('permission', (table) => {
235
+ table.dropForeign('moduleVersionId');
236
+ });
237
+ await knex.schema.alterTable('functions', (table) => {
238
+ table.dropForeign('versionId');
239
+ });
240
+ // Drop the new columns
241
+ await knex.schema.alterTable('moduleInstallations', (table) => {
242
+ table.dropForeign('versionId');
243
+ table.dropColumn('versionId');
244
+ table.unique(['gameserverId', 'moduleId', 'domain'], {
245
+ indexName: 'moduleassignments_gameserverid_moduleid_domain_unique',
246
+ });
247
+ });
248
+ // Rename table moduleInstallations to moduleAssignments
249
+ await knex.schema.renameTable('moduleInstallations', 'moduleAssignments');
250
+ // Add back the old columns
251
+ await knex.schema.table('modules', (table) => {
252
+ table.text('description').nullable();
253
+ table.text('configSchema').nullable();
254
+ table.text('uiSchema').nullable();
255
+ });
256
+ // Add the old column back
257
+ await knex.schema.alterTable('commands', (table) => {
258
+ table.uuid('moduleId');
259
+ });
260
+ await knex.schema.alterTable('hooks', (table) => {
261
+ table.uuid('moduleId');
262
+ });
263
+ await knex.schema.alterTable('cronJobs', (table) => {
264
+ table.uuid('moduleId');
265
+ });
266
+ await knex.schema.alterTable('permission', (table) => {
267
+ table.uuid('moduleId').nullable();
268
+ });
269
+ await knex.schema.alterTable('functions', (table) => {
270
+ table.uuid('moduleId').nullable();
271
+ });
272
+ // Copy over the latest version of each module
273
+ const versions = await knex('moduleVersions')
274
+ .select('id', 'moduleId', 'createdAt', 'description', 'configSchema', 'uiSchema')
275
+ .distinct('moduleId')
276
+ .orderBy('createdAt', 'desc');
277
+ for (const version of versions) {
278
+ await knex('modules').where('id', version.moduleId).update({
279
+ description: version.description,
280
+ configSchema: version.configSchema,
281
+ uiSchema: version.uiSchema,
282
+ });
283
+ // Copy over the commands, hooks, cronjobs and permissions
284
+ const commands = await knex('commands').select('id').where('versionId', version.id);
285
+ for (const command of commands) {
286
+ await knex('commands').where('id', command.id).update({ moduleId: version.moduleId });
287
+ }
288
+ const hooks = await knex('hooks').select('id').where('versionId', version.id);
289
+ for (const hook of hooks) {
290
+ await knex('hooks').where('id', hook.id).update({ moduleId: version.moduleId });
291
+ }
292
+ const cronjobs = await knex('cronJobs').select('id').where('versionId', version.id);
293
+ for (const cronjob of cronjobs) {
294
+ await knex('cronJobs').where('id', cronjob.id).update({ moduleId: version.moduleId });
295
+ }
296
+ const permissions = await knex('permission').select('id').where('moduleVersionId', version.id);
297
+ for (const permission of permissions) {
298
+ await knex('permission').where('id', permission.id).update({ moduleId: version.moduleId });
299
+ }
300
+ const functions = await knex('functions').select('id').where('versionId', version.id);
301
+ for (const func of functions) {
302
+ await knex('functions').where('id', func.id).update({ moduleId: version.moduleId });
303
+ }
304
+ }
305
+ // Enable the old FKs
306
+ await knex.schema.alterTable('commands', (table) => {
307
+ table.foreign('moduleId').references('modules.id').onDelete('CASCADE');
308
+ table.dropColumn('versionId');
309
+ });
310
+ await knex.schema.alterTable('hooks', (table) => {
311
+ table.foreign('moduleId').references('modules.id').onDelete('CASCADE');
312
+ table.dropColumn('versionId');
313
+ });
314
+ await knex.schema.alterTable('cronJobs', (table) => {
315
+ table.foreign('moduleId').references('modules.id').onDelete('CASCADE');
316
+ table.dropColumn('versionId');
317
+ });
318
+ await knex.schema.alterTable('permission', (table) => {
319
+ table.foreign('moduleId', 'modulepermission_moduleid_foreign').references('modules.id').onDelete('CASCADE');
320
+ table.dropColumn('moduleVersionId');
321
+ });
322
+ await knex.schema.alterTable('functions', (table) => {
323
+ table.foreign('moduleId').references('modules.id').onDelete('CASCADE');
324
+ table.dropColumn('versionId');
325
+ });
326
+ // Drop the moduleVersions table
327
+ await knex.schema.dropTable('moduleVersions');
328
+ }
329
+ //# sourceMappingURL=20241330200212-module-versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20241330200212-module-versions.js","sourceRoot":"","sources":["../../../src/migrations/sql/20241330200212-module-versions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
4
+ //# sourceMappingURL=20250128200529-version-fixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250128200529-version-fixes.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/20250128200529-version-fixes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD"}
@@ -0,0 +1,11 @@
1
+ export async function up(knex) {
2
+ await knex.schema.alterTable('moduleVersions', (table) => {
3
+ table.text('description').notNullable().defaultTo('No description').alter();
4
+ });
5
+ }
6
+ export async function down(knex) {
7
+ await knex.schema.alterTable('moduleVersions', (table) => {
8
+ table.text('description').nullable().alter();
9
+ });
10
+ }
11
+ //# sourceMappingURL=20250128200529-version-fixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250128200529-version-fixes.js","sourceRoot":"","sources":["../../../src/migrations/sql/20250128200529-version-fixes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
4
+ //# sourceMappingURL=20250131183251-domain-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250131183251-domain-settings.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/20250131183251-domain-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqClD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAapD"}
@@ -0,0 +1,45 @@
1
+ export async function up(knex) {
2
+ await knex.schema.alterTable('domains', (table) => {
3
+ table.integer('maxGameservers').defaultTo(1);
4
+ table.integer('maxUsers').defaultTo(1);
5
+ table.integer('eventRetentionDays').defaultTo(7);
6
+ table.integer('maxVariables').defaultTo(10000);
7
+ table.integer('maxModules').defaultTo(1000);
8
+ table.integer('maxFunctionsInModule').defaultTo(50);
9
+ });
10
+ await knex.schema.alterTable('users', (table) => {
11
+ table.boolean('isDashboardUser').defaultTo(false);
12
+ });
13
+ /**
14
+ * We need to find all the 'root' users and make them dashboard users. Root users have name === 'root'
15
+ * Also, we need to find any users with the "ROOT"" permission and make them dashboard users
16
+ */
17
+ await knex('users').where('name', 'root').update({ isDashboardUser: true });
18
+ // Then update users with ROOT permission
19
+ const usersWithRootPermission = await knex('users as u')
20
+ .distinct('u.id')
21
+ .join('roleOnUser as ru', 'u.id', 'ru.userId')
22
+ .join('permissionOnRole as pr', 'ru.roleId', 'pr.roleId')
23
+ .join('permission as p', 'pr.permissionId', 'p.id')
24
+ .where('p.permission', 'ROOT')
25
+ .select('u.id');
26
+ if (usersWithRootPermission.length > 0) {
27
+ await knex('users')
28
+ .whereIn('id', usersWithRootPermission.map((user) => user.id))
29
+ .update({ isDashboardUser: true });
30
+ }
31
+ }
32
+ export async function down(knex) {
33
+ await knex.schema.alterTable('domains', (table) => {
34
+ table.dropColumn('maxGameservers');
35
+ table.dropColumn('maxUsers');
36
+ table.dropColumn('eventRetentionDays');
37
+ table.dropColumn('maxVariables');
38
+ table.dropColumn('maxModules');
39
+ table.dropColumn('maxFunctionsInModule');
40
+ });
41
+ await knex.schema.alterTable('users', (table) => {
42
+ table.dropColumn('isDashboardUser');
43
+ });
44
+ }
45
+ //# sourceMappingURL=20250131183251-domain-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250131183251-domain-settings.js","sourceRoot":"","sources":["../../../src/migrations/sql/20250131183251-domain-settings.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAChD,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH;;;OAGG;IACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,yCAAyC;IACzC,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;SACrD,QAAQ,CAAC,MAAM,CAAC;SAChB,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC;SAC7C,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,WAAW,CAAC;SACxD,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,CAAC;SAClD,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC;SAC7B,MAAM,CAAC,MAAM,CAAC,CAAC;IAElB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC;aAChB,OAAO,CACN,IAAI,EACJ,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAC/C;aACA,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAChD,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACnC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7B,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACvC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACjC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/B,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC9C,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Knex } from 'knex';
2
+ /**
3
+ * Alters the variables.value column from varchat to text
4
+ * Reason being is that users frequently want to store strings longer than 255 characters
5
+ * And length of this doesn't really matter for us...
6
+ * We still add a constraint to ensure that there's an upper bound
7
+ * Otherwise, users could upload 1TB of data to a single variable and crash postgres :)
8
+ */
9
+ export declare function up(knex: Knex): Promise<void>;
10
+ /**
11
+ * Reverts the variables.value column back to varchar(255)
12
+ * Removes the CHECK constraint
13
+ *
14
+ * @param knex Knex instance
15
+ */
16
+ export declare function down(knex: Knex): Promise<void>;
17
+ //# sourceMappingURL=20250221130042-variable-length.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250221130042-variable-length.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/20250221130042-variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;;;GAMG;AAEH,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlD;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Alters the variables.value column from varchat to text
3
+ * Reason being is that users frequently want to store strings longer than 255 characters
4
+ * And length of this doesn't really matter for us...
5
+ * We still add a constraint to ensure that there's an upper bound
6
+ * Otherwise, users could upload 1TB of data to a single variable and crash postgres :)
7
+ */
8
+ export async function up(knex) {
9
+ await knex.schema.alterTable('variables', (table) => {
10
+ // Alter column type to text
11
+ table.text('value').alter();
12
+ });
13
+ // Add CHECK constraint to prevent extremely large values (128KB)
14
+ await knex.raw('ALTER TABLE variables ADD CONSTRAINT value_length_check CHECK (length(value) <= 131072)');
15
+ }
16
+ /**
17
+ * Reverts the variables.value column back to varchar(255)
18
+ * Removes the CHECK constraint
19
+ *
20
+ * @param knex Knex instance
21
+ */
22
+ export async function down(knex) {
23
+ // Remove CHECK constraint first
24
+ await knex.raw('ALTER TABLE variables DROP CONSTRAINT value_length_check');
25
+ await knex.schema.alterTable('variables', (table) => {
26
+ // Revert column type to varchar(255)
27
+ table.string('value', 255).alter();
28
+ });
29
+ }
30
+ //# sourceMappingURL=20250221130042-variable-length.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250221130042-variable-length.js","sourceRoot":"","sources":["../../../src/migrations/sql/20250221130042-variable-length.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,4BAA4B;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,MAAM,IAAI,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;AAC5G,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,gCAAgC;IAChC,MAAM,IAAI,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAE3E,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,qCAAqC;QACrC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Knex } from 'knex';
2
+ /**
3
+ * Adds performance optimization indices for module version querying
4
+ */
5
+ export declare function up(knex: Knex): Promise<void>;
6
+ /**
7
+ * Removes performance optimization indices
8
+ */
9
+ export declare function down(knex: Knex): Promise<void>;
10
+ //# sourceMappingURL=20250221193144-versions-perf-improvements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250221193144-versions-perf-improvements.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/20250221193144-versions-perf-improvements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;GAEG;AACH,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClD;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Adds performance optimization indices for module version querying
3
+ */
4
+ export async function up(knex) {
5
+ // ModuleVersions composite index
6
+ await knex.schema.raw('CREATE INDEX IF NOT EXISTS idx_moduleversions_moduleid_tag ON "moduleVersions" ("moduleId", tag)');
7
+ // Add indices on versionId foreign keys
8
+ await knex.schema.alterTable('functions', (table) => {
9
+ table.index(['versionId'], 'idx_functions_versionid');
10
+ });
11
+ await knex.schema.alterTable('commands', (table) => {
12
+ table.index(['versionId'], 'idx_commands_versionid');
13
+ });
14
+ await knex.schema.alterTable('hooks', (table) => {
15
+ table.index(['versionId'], 'idx_hooks_versionid');
16
+ });
17
+ await knex.schema.alterTable('cronJobs', (table) => {
18
+ table.index(['versionId'], 'idx_cronjobs_versionid');
19
+ });
20
+ // Add indices on functionId foreign keys
21
+ await knex.schema.alterTable('hooks', (table) => {
22
+ table.index(['functionId'], 'idx_hooks_functionid');
23
+ });
24
+ await knex.schema.alterTable('cronJobs', (table) => {
25
+ table.index(['functionId'], 'idx_cronjobs_functionid');
26
+ });
27
+ await knex.schema.alterTable('commands', (table) => {
28
+ table.index(['functionId'], 'idx_commands_functionid');
29
+ });
30
+ }
31
+ /**
32
+ * Removes performance optimization indices
33
+ */
34
+ export async function down(knex) {
35
+ // Drop ModuleVersions composite index
36
+ await knex.schema.raw('DROP INDEX IF EXISTS idx_moduleversions_moduleid_tag');
37
+ // Drop versionId indices
38
+ await knex.schema.alterTable('functions', (table) => {
39
+ table.dropIndex(['versionId'], 'idx_functions_versionid');
40
+ });
41
+ await knex.schema.alterTable('commands', (table) => {
42
+ table.dropIndex(['versionId'], 'idx_commands_versionid');
43
+ });
44
+ await knex.schema.alterTable('hooks', (table) => {
45
+ table.dropIndex(['versionId'], 'idx_hooks_versionid');
46
+ });
47
+ await knex.schema.alterTable('cronJobs', (table) => {
48
+ table.dropIndex(['versionId'], 'idx_cronjobs_versionid');
49
+ });
50
+ // Drop functionId indices
51
+ await knex.schema.alterTable('hooks', (table) => {
52
+ table.dropIndex(['functionId'], 'idx_hooks_functionid');
53
+ });
54
+ await knex.schema.alterTable('cronJobs', (table) => {
55
+ table.dropIndex(['functionId'], 'idx_cronjobs_functionid');
56
+ });
57
+ await knex.schema.alterTable('commands', (table) => {
58
+ table.dropIndex(['functionId'], 'idx_commands_functionid');
59
+ });
60
+ }
61
+ //# sourceMappingURL=20250221193144-versions-perf-improvements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250221193144-versions-perf-improvements.js","sourceRoot":"","sources":["../../../src/migrations/sql/20250221193144-versions-perf-improvements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
4
+ //# sourceMappingURL=20250223143705-fix-ban-constraint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250223143705-fix-ban-constraint.d.ts","sourceRoot":"","sources":["../../../src/migrations/sql/20250223143705-fix-ban-constraint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBpD"}