@takaro/db 0.0.0-next.0da151e

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 (667) hide show
  1. package/README.md +1 -0
  2. package/dist/TakaroModel.d.ts +16 -0
  3. package/dist/TakaroModel.d.ts.map +1 -0
  4. package/dist/TakaroModel.js +25 -0
  5. package/dist/TakaroModel.js.map +1 -0
  6. package/dist/config.d.ts +120 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +99 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/encryption.d.ts +5 -0
  11. package/dist/encryption.d.ts.map +1 -0
  12. package/dist/encryption.js +23 -0
  13. package/dist/encryption.js.map +1 -0
  14. package/dist/errorTypeGuards.d.ts +3 -0
  15. package/dist/errorTypeGuards.d.ts.map +1 -0
  16. package/dist/errorTypeGuards.js +11 -0
  17. package/dist/errorTypeGuards.js.map +1 -0
  18. package/dist/knex.d.ts +9 -0
  19. package/dist/knex.d.ts.map +1 -0
  20. package/dist/knex.js +50 -0
  21. package/dist/knex.js.map +1 -0
  22. package/dist/main.d.ts +9 -0
  23. package/dist/main.d.ts.map +1 -0
  24. package/dist/main.js +9 -0
  25. package/dist/main.js.map +1 -0
  26. package/dist/migrations/index.d.ts +3 -0
  27. package/dist/migrations/index.d.ts.map +1 -0
  28. package/dist/migrations/index.js +59 -0
  29. package/dist/migrations/index.js.map +1 -0
  30. package/dist/migrations/sql/20220827191938_init.d.ts +4 -0
  31. package/dist/migrations/sql/20220827191938_init.d.ts.map +1 -0
  32. package/dist/migrations/sql/20220827191938_init.js +155 -0
  33. package/dist/migrations/sql/20220827191938_init.js.map +1 -0
  34. package/dist/migrations/sql/20221019173729_settings.d.ts +4 -0
  35. package/dist/migrations/sql/20221019173729_settings.d.ts.map +1 -0
  36. package/dist/migrations/sql/20221019173729_settings.js +61 -0
  37. package/dist/migrations/sql/20221019173729_settings.js.map +1 -0
  38. package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts +4 -0
  39. package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts.map +1 -0
  40. package/dist/migrations/sql/20221029103554_refactor_function_assignments.js +33 -0
  41. package/dist/migrations/sql/20221029103554_refactor_function_assignments.js.map +1 -0
  42. package/dist/migrations/sql/20221102190532_commands.d.ts +4 -0
  43. package/dist/migrations/sql/20221102190532_commands.d.ts.map +1 -0
  44. package/dist/migrations/sql/20221102190532_commands.js +58 -0
  45. package/dist/migrations/sql/20221102190532_commands.js.map +1 -0
  46. package/dist/migrations/sql/20221203135001-builtin_modules.d.ts +4 -0
  47. package/dist/migrations/sql/20221203135001-builtin_modules.d.ts.map +1 -0
  48. package/dist/migrations/sql/20221203135001-builtin_modules.js +44 -0
  49. package/dist/migrations/sql/20221203135001-builtin_modules.js.map +1 -0
  50. package/dist/migrations/sql/20230308183400-persistent-variables.d.ts +4 -0
  51. package/dist/migrations/sql/20230308183400-persistent-variables.d.ts.map +1 -0
  52. package/dist/migrations/sql/20230308183400-persistent-variables.js +63 -0
  53. package/dist/migrations/sql/20230308183400-persistent-variables.js.map +1 -0
  54. package/dist/migrations/sql/20230314183400-auth-ory.d.ts +4 -0
  55. package/dist/migrations/sql/20230314183400-auth-ory.d.ts.map +1 -0
  56. package/dist/migrations/sql/20230314183400-auth-ory.js +23 -0
  57. package/dist/migrations/sql/20230314183400-auth-ory.js.map +1 -0
  58. package/dist/migrations/sql/20230325156123_command-arguments.d.ts +4 -0
  59. package/dist/migrations/sql/20230325156123_command-arguments.d.ts.map +1 -0
  60. package/dist/migrations/sql/20230325156123_command-arguments.js +19 -0
  61. package/dist/migrations/sql/20230325156123_command-arguments.js.map +1 -0
  62. package/dist/migrations/sql/20230407132022-module-descriptions.d.ts +4 -0
  63. package/dist/migrations/sql/20230407132022-module-descriptions.d.ts.map +1 -0
  64. package/dist/migrations/sql/20230407132022-module-descriptions.js +11 -0
  65. package/dist/migrations/sql/20230407132022-module-descriptions.js.map +1 -0
  66. package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts +4 -0
  67. package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts.map +1 -0
  68. package/dist/migrations/sql/20230407143733-module-json-schema-config.js +14 -0
  69. package/dist/migrations/sql/20230407143733-module-json-schema-config.js.map +1 -0
  70. package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts +4 -0
  71. package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts.map +1 -0
  72. package/dist/migrations/sql/20230407173055-hook-regex-optional.js +11 -0
  73. package/dist/migrations/sql/20230407173055-hook-regex-optional.js.map +1 -0
  74. package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts +4 -0
  75. package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts.map +1 -0
  76. package/dist/migrations/sql/20230415154935-cronjob-configs.js +16 -0
  77. package/dist/migrations/sql/20230415154935-cronjob-configs.js.map +1 -0
  78. package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts +4 -0
  79. package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts.map +1 -0
  80. package/dist/migrations/sql/20230503132906-variables-extra-meta.js +26 -0
  81. package/dist/migrations/sql/20230503132906-variables-extra-meta.js.map +1 -0
  82. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts +4 -0
  83. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts.map +1 -0
  84. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js +8 -0
  85. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js.map +1 -0
  86. package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts +4 -0
  87. package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts.map +1 -0
  88. package/dist/migrations/sql/20230617081049-discordId-for-users.js +14 -0
  89. package/dist/migrations/sql/20230617081049-discordId-for-users.js.map +1 -0
  90. package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts +4 -0
  91. package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts.map +1 -0
  92. package/dist/migrations/sql/20230618053611-discord-funtionality.js +26 -0
  93. package/dist/migrations/sql/20230618053611-discord-funtionality.js.map +1 -0
  94. package/dist/migrations/sql/20230622192402-discord-hooks.d.ts +4 -0
  95. package/dist/migrations/sql/20230622192402-discord-hooks.d.ts.map +1 -0
  96. package/dist/migrations/sql/20230622192402-discord-hooks.js +14 -0
  97. package/dist/migrations/sql/20230622192402-discord-hooks.js.map +1 -0
  98. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts +4 -0
  99. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts.map +1 -0
  100. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js +19 -0
  101. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js.map +1 -0
  102. package/dist/migrations/sql/20230710174340-events.d.ts +4 -0
  103. package/dist/migrations/sql/20230710174340-events.d.ts.map +1 -0
  104. package/dist/migrations/sql/20230710174340-events.js +16 -0
  105. package/dist/migrations/sql/20230710174340-events.js.map +1 -0
  106. package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts +4 -0
  107. package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts.map +1 -0
  108. package/dist/migrations/sql/20230712061220-roles-permissions-extension.js +43 -0
  109. package/dist/migrations/sql/20230712061220-roles-permissions-extension.js.map +1 -0
  110. package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts +4 -0
  111. package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts.map +1 -0
  112. package/dist/migrations/sql/20230713184927-variables-modulescoped.js +27 -0
  113. package/dist/migrations/sql/20230713184927-variables-modulescoped.js.map +1 -0
  114. package/dist/migrations/sql/20230714045136-domain-index.d.ts +4 -0
  115. package/dist/migrations/sql/20230714045136-domain-index.d.ts.map +1 -0
  116. package/dist/migrations/sql/20230714045136-domain-index.js +37 -0
  117. package/dist/migrations/sql/20230714045136-domain-index.js.map +1 -0
  118. package/dist/migrations/sql/20230714045727-events-index.d.ts +4 -0
  119. package/dist/migrations/sql/20230714045727-events-index.d.ts.map +1 -0
  120. package/dist/migrations/sql/20230714045727-events-index.js +17 -0
  121. package/dist/migrations/sql/20230714045727-events-index.js.map +1 -0
  122. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts +4 -0
  123. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts.map +1 -0
  124. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js +32 -0
  125. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js.map +1 -0
  126. package/dist/migrations/sql/20230724062109-roles-constraints.d.ts +4 -0
  127. package/dist/migrations/sql/20230724062109-roles-constraints.d.ts.map +1 -0
  128. package/dist/migrations/sql/20230724062109-roles-constraints.js +14 -0
  129. package/dist/migrations/sql/20230724062109-roles-constraints.js.map +1 -0
  130. package/dist/migrations/sql/20230811095701-userId-on-events.d.ts +4 -0
  131. package/dist/migrations/sql/20230811095701-userId-on-events.d.ts.map +1 -0
  132. package/dist/migrations/sql/20230811095701-userId-on-events.js +12 -0
  133. package/dist/migrations/sql/20230811095701-userId-on-events.js.map +1 -0
  134. package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts +4 -0
  135. package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts.map +1 -0
  136. package/dist/migrations/sql/20230921123717-count-for-permissions.js +84 -0
  137. package/dist/migrations/sql/20230921123717-count-for-permissions.js.map +1 -0
  138. package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts +37 -0
  139. package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts.map +1 -0
  140. package/dist/migrations/sql/20231111102812-details-system-permissions.js +179 -0
  141. package/dist/migrations/sql/20231111102812-details-system-permissions.js.map +1 -0
  142. package/dist/migrations/sql/20231114151343-system-roles.d.ts +4 -0
  143. package/dist/migrations/sql/20231114151343-system-roles.d.ts.map +1 -0
  144. package/dist/migrations/sql/20231114151343-system-roles.js +41 -0
  145. package/dist/migrations/sql/20231114151343-system-roles.js.map +1 -0
  146. package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts +37 -0
  147. package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts.map +1 -0
  148. package/dist/migrations/sql/20231118082301-add-new-permissions.js +186 -0
  149. package/dist/migrations/sql/20231118082301-add-new-permissions.js.map +1 -0
  150. package/dist/migrations/sql/20231119115037-timedRoles.d.ts +4 -0
  151. package/dist/migrations/sql/20231119115037-timedRoles.d.ts.map +1 -0
  152. package/dist/migrations/sql/20231119115037-timedRoles.js +19 -0
  153. package/dist/migrations/sql/20231119115037-timedRoles.js.map +1 -0
  154. package/dist/migrations/sql/20231123150854-economy-base.d.ts +4 -0
  155. package/dist/migrations/sql/20231123150854-economy-base.d.ts.map +1 -0
  156. package/dist/migrations/sql/20231123150854-economy-base.js +13 -0
  157. package/dist/migrations/sql/20231123150854-economy-base.js.map +1 -0
  158. package/dist/migrations/sql/20231123171611-economy-settings.d.ts +4 -0
  159. package/dist/migrations/sql/20231123171611-economy-settings.d.ts.map +1 -0
  160. package/dist/migrations/sql/20231123171611-economy-settings.js +13 -0
  161. package/dist/migrations/sql/20231123171611-economy-settings.js.map +1 -0
  162. package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts +4 -0
  163. package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts.map +1 -0
  164. package/dist/migrations/sql/20231124140441-json-module-assignments.js +25 -0
  165. package/dist/migrations/sql/20231124140441-json-module-assignments.js.map +1 -0
  166. package/dist/migrations/sql/20231208114507-settings-refactor.d.ts +4 -0
  167. package/dist/migrations/sql/20231208114507-settings-refactor.d.ts.map +1 -0
  168. package/dist/migrations/sql/20231208114507-settings-refactor.js +95 -0
  169. package/dist/migrations/sql/20231208114507-settings-refactor.js.map +1 -0
  170. package/dist/migrations/sql/20231208171234-game-items.d.ts +4 -0
  171. package/dist/migrations/sql/20231208171234-game-items.d.ts.map +1 -0
  172. package/dist/migrations/sql/20231208171234-game-items.js +18 -0
  173. package/dist/migrations/sql/20231208171234-game-items.js.map +1 -0
  174. package/dist/migrations/sql/20231216100720-player-inventory.d.ts +4 -0
  175. package/dist/migrations/sql/20231216100720-player-inventory.d.ts.map +1 -0
  176. package/dist/migrations/sql/20231216100720-player-inventory.js +14 -0
  177. package/dist/migrations/sql/20231216100720-player-inventory.js.map +1 -0
  178. package/dist/migrations/sql/20231222180438-steam-data.d.ts +4 -0
  179. package/dist/migrations/sql/20231222180438-steam-data.d.ts.map +1 -0
  180. package/dist/migrations/sql/20231222180438-steam-data.js +25 -0
  181. package/dist/migrations/sql/20231222180438-steam-data.js.map +1 -0
  182. package/dist/migrations/sql/20231223132631-pog-online.d.ts +4 -0
  183. package/dist/migrations/sql/20231223132631-pog-online.d.ts.map +1 -0
  184. package/dist/migrations/sql/20231223132631-pog-online.js +11 -0
  185. package/dist/migrations/sql/20231223132631-pog-online.js.map +1 -0
  186. package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts +4 -0
  187. package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts.map +1 -0
  188. package/dist/migrations/sql/20231223212031-unique-index-item-def.js +24 -0
  189. package/dist/migrations/sql/20231223212031-unique-index-item-def.js.map +1 -0
  190. package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts +4 -0
  191. package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts.map +1 -0
  192. package/dist/migrations/sql/20231224135126-gameserver-online-status.js +11 -0
  193. package/dist/migrations/sql/20231224135126-gameserver-online-status.js.map +1 -0
  194. package/dist/migrations/sql/20231224155226-unique-pog.d.ts +4 -0
  195. package/dist/migrations/sql/20231224155226-unique-pog.d.ts.map +1 -0
  196. package/dist/migrations/sql/20231224155226-unique-pog.js +24 -0
  197. package/dist/migrations/sql/20231224155226-unique-pog.js.map +1 -0
  198. package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts +4 -0
  199. package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts.map +1 -0
  200. package/dist/migrations/sql/20231225140650-extra-ip-info.js +23 -0
  201. package/dist/migrations/sql/20231225140650-extra-ip-info.js.map +1 -0
  202. package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts +4 -0
  203. package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts.map +1 -0
  204. package/dist/migrations/sql/20231227144315-unique-constraints-player.js +67 -0
  205. package/dist/migrations/sql/20231227144315-unique-constraints-player.js.map +1 -0
  206. package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts +4 -0
  207. package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts.map +1 -0
  208. package/dist/migrations/sql/20231229144707-more-player-constraints.js +17 -0
  209. package/dist/migrations/sql/20231229144707-more-player-constraints.js.map +1 -0
  210. package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts +4 -0
  211. package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts.map +1 -0
  212. package/dist/migrations/sql/20240101162751-add-settings-constraint.js +34 -0
  213. package/dist/migrations/sql/20240101162751-add-settings-constraint.js.map +1 -0
  214. package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts +4 -0
  215. package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts.map +1 -0
  216. package/dist/migrations/sql/20240105130846-remove-some-module-perms.js +80 -0
  217. package/dist/migrations/sql/20240105130846-remove-some-module-perms.js.map +1 -0
  218. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts +4 -0
  219. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts.map +1 -0
  220. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js +11 -0
  221. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js.map +1 -0
  222. package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts +4 -0
  223. package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts.map +1 -0
  224. package/dist/migrations/sql/20240119152426-remove-hook-check.js +14 -0
  225. package/dist/migrations/sql/20240119152426-remove-hook-check.js.map +1 -0
  226. package/dist/migrations/sql/20240121142329-move-ip-history.d.ts +4 -0
  227. package/dist/migrations/sql/20240121142329-move-ip-history.d.ts.map +1 -0
  228. package/dist/migrations/sql/20240121142329-move-ip-history.js +44 -0
  229. package/dist/migrations/sql/20240121142329-move-ip-history.js.map +1 -0
  230. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts +4 -0
  231. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts.map +1 -0
  232. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js +13 -0
  233. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js.map +1 -0
  234. package/dist/migrations/sql/20240216120143-domain-state.d.ts +4 -0
  235. package/dist/migrations/sql/20240216120143-domain-state.d.ts.map +1 -0
  236. package/dist/migrations/sql/20240216120143-domain-state.js +11 -0
  237. package/dist/migrations/sql/20240216120143-domain-state.js.map +1 -0
  238. package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts +4 -0
  239. package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts.map +1 -0
  240. package/dist/migrations/sql/20240229141340-looser-fks-events.js +18 -0
  241. package/dist/migrations/sql/20240229141340-looser-fks-events.js.map +1 -0
  242. package/dist/migrations/sql/20240301063505-module-functions.d.ts +4 -0
  243. package/dist/migrations/sql/20240301063505-module-functions.d.ts.map +1 -0
  244. package/dist/migrations/sql/20240301063505-module-functions.js +14 -0
  245. package/dist/migrations/sql/20240301063505-module-functions.js.map +1 -0
  246. package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts +4 -0
  247. package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts.map +1 -0
  248. package/dist/migrations/sql/20240613175009-lastseen-users-pog.js +17 -0
  249. package/dist/migrations/sql/20240613175009-lastseen-users-pog.js.map +1 -0
  250. package/dist/migrations/sql/20240614143517-shop.d.ts +4 -0
  251. package/dist/migrations/sql/20240614143517-shop.d.ts.map +1 -0
  252. package/dist/migrations/sql/20240614143517-shop.js +29 -0
  253. package/dist/migrations/sql/20240614143517-shop.js.map +1 -0
  254. package/dist/migrations/sql/20240615145045-user-player-link.d.ts +4 -0
  255. package/dist/migrations/sql/20240615145045-user-player-link.d.ts.map +1 -0
  256. package/dist/migrations/sql/20240615145045-user-player-link.js +17 -0
  257. package/dist/migrations/sql/20240615145045-user-player-link.js.map +1 -0
  258. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts +4 -0
  259. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts.map +1 -0
  260. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js +11 -0
  261. package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js.map +1 -0
  262. package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts +4 -0
  263. package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts.map +1 -0
  264. package/dist/migrations/sql/20240626200803-player-inventory-idx.js +11 -0
  265. package/dist/migrations/sql/20240626200803-player-inventory-idx.js.map +1 -0
  266. package/dist/migrations/sql/20240628174914-shop-orders.d.ts +4 -0
  267. package/dist/migrations/sql/20240628174914-shop-orders.d.ts.map +1 -0
  268. package/dist/migrations/sql/20240628174914-shop-orders.js +16 -0
  269. package/dist/migrations/sql/20240628174914-shop-orders.js.map +1 -0
  270. package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts +4 -0
  271. package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts.map +1 -0
  272. package/dist/migrations/sql/20240705140358-teleports-public-refactor.js +26 -0
  273. package/dist/migrations/sql/20240705140358-teleports-public-refactor.js.map +1 -0
  274. package/dist/migrations/sql/20240710181429-events-name-idx.d.ts +4 -0
  275. package/dist/migrations/sql/20240710181429-events-name-idx.d.ts.map +1 -0
  276. package/dist/migrations/sql/20240710181429-events-name-idx.js +11 -0
  277. package/dist/migrations/sql/20240710181429-events-name-idx.js.map +1 -0
  278. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts +4 -0
  279. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts.map +1 -0
  280. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js +26 -0
  281. package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js.map +1 -0
  282. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts +4 -0
  283. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts.map +1 -0
  284. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.js +7 -0
  285. package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.js.map +1 -0
  286. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts +4 -0
  287. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts.map +1 -0
  288. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js +13 -0
  289. package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js.map +1 -0
  290. package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts +4 -0
  291. package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts.map +1 -0
  292. package/dist/migrations/sql/20240720135010-acting-user-and-module.js +19 -0
  293. package/dist/migrations/sql/20240720135010-acting-user-and-module.js.map +1 -0
  294. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts +4 -0
  295. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts.map +1 -0
  296. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js +14 -0
  297. package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js.map +1 -0
  298. package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts +4 -0
  299. package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts.map +1 -0
  300. package/dist/migrations/sql/20240814133931-domain-ext-ref.js +16 -0
  301. package/dist/migrations/sql/20240814133931-domain-ext-ref.js.map +1 -0
  302. package/dist/migrations/sql/20240816171220-player-steam-level.d.ts +4 -0
  303. package/dist/migrations/sql/20240816171220-player-steam-level.d.ts.map +1 -0
  304. package/dist/migrations/sql/20240816171220-player-steam-level.js +11 -0
  305. package/dist/migrations/sql/20240816171220-player-steam-level.js.map +1 -0
  306. package/dist/migrations/sql/20240830081157-variable-expiry.d.ts +4 -0
  307. package/dist/migrations/sql/20240830081157-variable-expiry.d.ts.map +1 -0
  308. package/dist/migrations/sql/20240830081157-variable-expiry.js +11 -0
  309. package/dist/migrations/sql/20240830081157-variable-expiry.js.map +1 -0
  310. package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts +4 -0
  311. package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts.map +1 -0
  312. package/dist/migrations/sql/20240906125101-gameserver-enable.js +11 -0
  313. package/dist/migrations/sql/20240906125101-gameserver-enable.js.map +1 -0
  314. package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts +4 -0
  315. package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts.map +1 -0
  316. package/dist/migrations/sql/20240908185212-domain-name-not-unique.js +9 -0
  317. package/dist/migrations/sql/20240908185212-domain-name-not-unique.js.map +1 -0
  318. package/dist/migrations/sql/20240922110414-player-playtime.d.ts +4 -0
  319. package/dist/migrations/sql/20240922110414-player-playtime.d.ts.map +1 -0
  320. package/dist/migrations/sql/20240922110414-player-playtime.js +11 -0
  321. package/dist/migrations/sql/20240922110414-player-playtime.js.map +1 -0
  322. package/dist/migrations/sql/20240922133738-add-bans.d.ts +4 -0
  323. package/dist/migrations/sql/20240922133738-add-bans.d.ts.map +1 -0
  324. package/dist/migrations/sql/20240922133738-add-bans.js +20 -0
  325. package/dist/migrations/sql/20240922133738-add-bans.js.map +1 -0
  326. package/dist/migrations/sql/20240929090313-global-playtime.d.ts +4 -0
  327. package/dist/migrations/sql/20240929090313-global-playtime.d.ts.map +1 -0
  328. package/dist/migrations/sql/20240929090313-global-playtime.js +11 -0
  329. package/dist/migrations/sql/20240929090313-global-playtime.js.map +1 -0
  330. package/dist/migrations/sql/20240929143849-player-name-null.d.ts +4 -0
  331. package/dist/migrations/sql/20240929143849-player-name-null.d.ts.map +1 -0
  332. package/dist/migrations/sql/20240929143849-player-name-null.js +11 -0
  333. package/dist/migrations/sql/20240929143849-player-name-null.js.map +1 -0
  334. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts +4 -0
  335. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts.map +1 -0
  336. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.js +38 -0
  337. package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.js.map +1 -0
  338. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts +4 -0
  339. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts.map +1 -0
  340. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.js +52 -0
  341. package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.js.map +1 -0
  342. package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts +4 -0
  343. package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts.map +1 -0
  344. package/dist/migrations/sql/20241020133133-make-listing-name-required.js +13 -0
  345. package/dist/migrations/sql/20241020133133-make-listing-name-required.js.map +1 -0
  346. package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts +4 -0
  347. package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts.map +1 -0
  348. package/dist/migrations/sql/20241024164331-events-fk-fix.js +14 -0
  349. package/dist/migrations/sql/20241024164331-events-fk-fix.js.map +1 -0
  350. package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts +4 -0
  351. package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts.map +1 -0
  352. package/dist/migrations/sql/20241030130613-index-for-roleId.js +25 -0
  353. package/dist/migrations/sql/20241030130613-index-for-roleId.js.map +1 -0
  354. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts +4 -0
  355. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts.map +1 -0
  356. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js +11 -0
  357. package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js.map +1 -0
  358. package/dist/migrations/sql/20241330200212-module-versions.d.ts +4 -0
  359. package/dist/migrations/sql/20241330200212-module-versions.d.ts.map +1 -0
  360. package/dist/migrations/sql/20241330200212-module-versions.js +329 -0
  361. package/dist/migrations/sql/20241330200212-module-versions.js.map +1 -0
  362. package/dist/migrations/sql/20250112102308-generic-gameserver.d.ts +4 -0
  363. package/dist/migrations/sql/20250112102308-generic-gameserver.d.ts.map +1 -0
  364. package/dist/migrations/sql/20250112102308-generic-gameserver.js +47 -0
  365. package/dist/migrations/sql/20250112102308-generic-gameserver.js.map +1 -0
  366. package/dist/migrations/sql/20250128200529-version-fixes.d.ts +4 -0
  367. package/dist/migrations/sql/20250128200529-version-fixes.d.ts.map +1 -0
  368. package/dist/migrations/sql/20250128200529-version-fixes.js +11 -0
  369. package/dist/migrations/sql/20250128200529-version-fixes.js.map +1 -0
  370. package/dist/migrations/sql/20250131183251-domain-settings.d.ts +4 -0
  371. package/dist/migrations/sql/20250131183251-domain-settings.d.ts.map +1 -0
  372. package/dist/migrations/sql/20250131183251-domain-settings.js +45 -0
  373. package/dist/migrations/sql/20250131183251-domain-settings.js.map +1 -0
  374. package/dist/migrations/sql/20250221130042-variable-length.d.ts +17 -0
  375. package/dist/migrations/sql/20250221130042-variable-length.d.ts.map +1 -0
  376. package/dist/migrations/sql/20250221130042-variable-length.js +30 -0
  377. package/dist/migrations/sql/20250221130042-variable-length.js.map +1 -0
  378. package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts +10 -0
  379. package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts.map +1 -0
  380. package/dist/migrations/sql/20250221193144-versions-perf-improvements.js +61 -0
  381. package/dist/migrations/sql/20250221193144-versions-perf-improvements.js.map +1 -0
  382. package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts +4 -0
  383. package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts.map +1 -0
  384. package/dist/migrations/sql/20250223143705-fix-ban-constraint.js +37 -0
  385. package/dist/migrations/sql/20250223143705-fix-ban-constraint.js.map +1 -0
  386. package/dist/migrations/sql/20250305210650-more-module-metadata.d.ts +4 -0
  387. package/dist/migrations/sql/20250305210650-more-module-metadata.d.ts.map +1 -0
  388. package/dist/migrations/sql/20250305210650-more-module-metadata.js +37 -0
  389. package/dist/migrations/sql/20250305210650-more-module-metadata.js.map +1 -0
  390. package/dist/migrations/sql/20250307162855-default-systemconfig.d.ts +4 -0
  391. package/dist/migrations/sql/20250307162855-default-systemconfig.d.ts.map +1 -0
  392. package/dist/migrations/sql/20250307162855-default-systemconfig.js +11 -0
  393. package/dist/migrations/sql/20250307162855-default-systemconfig.js.map +1 -0
  394. package/dist/migrations/sql/20250312184104-unique-external-reference.d.ts +4 -0
  395. package/dist/migrations/sql/20250312184104-unique-external-reference.d.ts.map +1 -0
  396. package/dist/migrations/sql/20250312184104-unique-external-reference.js +11 -0
  397. package/dist/migrations/sql/20250312184104-unique-external-reference.js.map +1 -0
  398. package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.d.ts +4 -0
  399. package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.d.ts.map +1 -0
  400. package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.js +15 -0
  401. package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.js.map +1 -0
  402. package/dist/migrations/sql/20250315191707-fix-constraint-module-items.d.ts +8 -0
  403. package/dist/migrations/sql/20250315191707-fix-constraint-module-items.d.ts.map +1 -0
  404. package/dist/migrations/sql/20250315191707-fix-constraint-module-items.js +17 -0
  405. package/dist/migrations/sql/20250315191707-fix-constraint-module-items.js.map +1 -0
  406. package/dist/migrations/sql/20250519185149-add-item-indexes.d.ts +13 -0
  407. package/dist/migrations/sql/20250519185149-add-item-indexes.d.ts.map +1 -0
  408. package/dist/migrations/sql/20250519185149-add-item-indexes.js +40 -0
  409. package/dist/migrations/sql/20250519185149-add-item-indexes.js.map +1 -0
  410. package/dist/migrations/sql/20250524054924-tracking.d.ts +4 -0
  411. package/dist/migrations/sql/20250524054924-tracking.d.ts.map +1 -0
  412. package/dist/migrations/sql/20250524054924-tracking.js +75 -0
  413. package/dist/migrations/sql/20250524054924-tracking.js.map +1 -0
  414. package/dist/migrations/sql/20250525135204-ban-reason-length.d.ts +4 -0
  415. package/dist/migrations/sql/20250525135204-ban-reason-length.d.ts.map +1 -0
  416. package/dist/migrations/sql/20250525135204-ban-reason-length.js +30 -0
  417. package/dist/migrations/sql/20250525135204-ban-reason-length.js.map +1 -0
  418. package/dist/migrations/sql/20250605201140-shop-permissions-missing.d.ts +4 -0
  419. package/dist/migrations/sql/20250605201140-shop-permissions-missing.d.ts.map +1 -0
  420. package/dist/migrations/sql/20250605201140-shop-permissions-missing.js +18 -0
  421. package/dist/migrations/sql/20250605201140-shop-permissions-missing.js.map +1 -0
  422. package/dist/migrations/sql/20250606060546-inventory-tracking.d.ts +4 -0
  423. package/dist/migrations/sql/20250606060546-inventory-tracking.d.ts.map +1 -0
  424. package/dist/migrations/sql/20250606060546-inventory-tracking.js +82 -0
  425. package/dist/migrations/sql/20250606060546-inventory-tracking.js.map +1 -0
  426. package/dist/migrations/sql/20250613110835-add-platform-id-to-players.d.ts +4 -0
  427. package/dist/migrations/sql/20250613110835-add-platform-id-to-players.d.ts.map +1 -0
  428. package/dist/migrations/sql/20250613110835-add-platform-id-to-players.js +43 -0
  429. package/dist/migrations/sql/20250613110835-add-platform-id-to-players.js.map +1 -0
  430. package/dist/migrations/sql/20250613203142-add-dimension-to-position.d.ts +4 -0
  431. package/dist/migrations/sql/20250613203142-add-dimension-to-position.d.ts.map +1 -0
  432. package/dist/migrations/sql/20250613203142-add-dimension-to-position.js +21 -0
  433. package/dist/migrations/sql/20250613203142-add-dimension-to-position.js.map +1 -0
  434. package/dist/migrations/sql/20250614113157-entities.d.ts +4 -0
  435. package/dist/migrations/sql/20250614113157-entities.d.ts.map +1 -0
  436. package/dist/migrations/sql/20250614113157-entities.js +36 -0
  437. package/dist/migrations/sql/20250614113157-entities.js.map +1 -0
  438. package/dist/migrations/sql/20250629090822-player-query-performance-indices.d.ts +4 -0
  439. package/dist/migrations/sql/20250629090822-player-query-performance-indices.d.ts.map +1 -0
  440. package/dist/migrations/sql/20250629090822-player-query-performance-indices.js +31 -0
  441. package/dist/migrations/sql/20250629090822-player-query-performance-indices.js.map +1 -0
  442. package/dist/migrations/sql/20250701-command-query-performance-indices.d.ts +4 -0
  443. package/dist/migrations/sql/20250701-command-query-performance-indices.d.ts.map +1 -0
  444. package/dist/migrations/sql/20250701-command-query-performance-indices.js +42 -0
  445. package/dist/migrations/sql/20250701-command-query-performance-indices.js.map +1 -0
  446. package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.d.ts +4 -0
  447. package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.d.ts.map +1 -0
  448. package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.js +27 -0
  449. package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.js.map +1 -0
  450. package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.d.ts +4 -0
  451. package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.d.ts.map +1 -0
  452. package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.js +11 -0
  453. package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.js.map +1 -0
  454. package/dist/migrations/sql/20250707205720-items-permissions-missing.d.ts +4 -0
  455. package/dist/migrations/sql/20250707205720-items-permissions-missing.d.ts.map +1 -0
  456. package/dist/migrations/sql/20250707205720-items-permissions-missing.js +18 -0
  457. package/dist/migrations/sql/20250707205720-items-permissions-missing.js.map +1 -0
  458. package/dist/migrations/sql/20250708095623-command-required-permissions.d.ts +4 -0
  459. package/dist/migrations/sql/20250708095623-command-required-permissions.d.ts.map +1 -0
  460. package/dist/migrations/sql/20250708095623-command-required-permissions.js +11 -0
  461. package/dist/migrations/sql/20250708095623-command-required-permissions.js.map +1 -0
  462. package/dist/migrations/sql/20250710131445-add-shop-categories.d.ts +4 -0
  463. package/dist/migrations/sql/20250710131445-add-shop-categories.d.ts.map +1 -0
  464. package/dist/migrations/sql/20250710131445-add-shop-categories.js +80 -0
  465. package/dist/migrations/sql/20250710131445-add-shop-categories.js.map +1 -0
  466. package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.d.ts +4 -0
  467. package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.d.ts.map +1 -0
  468. package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.js +150 -0
  469. package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.js.map +1 -0
  470. package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.d.ts +8 -0
  471. package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.d.ts.map +1 -0
  472. package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.js +26 -0
  473. package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.js.map +1 -0
  474. package/dist/migrations/sql/20250719175542-add-discord-permissions.d.ts +4 -0
  475. package/dist/migrations/sql/20250719175542-add-discord-permissions.d.ts.map +1 -0
  476. package/dist/migrations/sql/20250719175542-add-discord-permissions.js +18 -0
  477. package/dist/migrations/sql/20250719175542-add-discord-permissions.js.map +1 -0
  478. package/dist/migrations/sql/20250726000000-discord-role-sync.d.ts +4 -0
  479. package/dist/migrations/sql/20250726000000-discord-role-sync.d.ts.map +1 -0
  480. package/dist/migrations/sql/20250726000000-discord-role-sync.js +13 -0
  481. package/dist/migrations/sql/20250726000000-discord-role-sync.js.map +1 -0
  482. package/dist/migrations/sql/20250727092719-add-quality-to-inventory.d.ts +4 -0
  483. package/dist/migrations/sql/20250727092719-add-quality-to-inventory.d.ts.map +1 -0
  484. package/dist/migrations/sql/20250727092719-add-quality-to-inventory.js +11 -0
  485. package/dist/migrations/sql/20250727092719-add-quality-to-inventory.js.map +1 -0
  486. package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.d.ts +4 -0
  487. package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.d.ts.map +1 -0
  488. package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.js +11 -0
  489. package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.js.map +1 -0
  490. package/dist/migrations/sql/20250809122020-add-player-name-history.d.ts +4 -0
  491. package/dist/migrations/sql/20250809122020-add-player-name-history.d.ts.map +1 -0
  492. package/dist/migrations/sql/20250809122020-add-player-name-history.js +26 -0
  493. package/dist/migrations/sql/20250809122020-add-player-name-history.js.map +1 -0
  494. package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.d.ts +4 -0
  495. package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.d.ts.map +1 -0
  496. package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.js +17 -0
  497. package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.js.map +1 -0
  498. package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.d.ts +4 -0
  499. package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.d.ts.map +1 -0
  500. package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.js +23 -0
  501. package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.js.map +1 -0
  502. package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.d.ts +4 -0
  503. package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.d.ts.map +1 -0
  504. package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.js +40 -0
  505. package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.js.map +1 -0
  506. package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.d.ts +4 -0
  507. package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.d.ts.map +1 -0
  508. package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.js +70 -0
  509. package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.js.map +1 -0
  510. package/dist/migrations/sql/20251101000000-add-deleted-domain-state.d.ts +4 -0
  511. package/dist/migrations/sql/20251101000000-add-deleted-domain-state.d.ts.map +1 -0
  512. package/dist/migrations/sql/20251101000000-add-deleted-domain-state.js +33 -0
  513. package/dist/migrations/sql/20251101000000-add-deleted-domain-state.js.map +1 -0
  514. package/dist/migrations/sql/20251108214824-unique-player-per-server.d.ts +4 -0
  515. package/dist/migrations/sql/20251108214824-unique-player-per-server.d.ts.map +1 -0
  516. package/dist/migrations/sql/20251108214824-unique-player-per-server.js +27 -0
  517. package/dist/migrations/sql/20251108214824-unique-player-per-server.js.map +1 -0
  518. package/dist/migrations/util/alterEnum.d.ts +2 -0
  519. package/dist/migrations/util/alterEnum.d.ts.map +1 -0
  520. package/dist/migrations/util/alterEnum.js +8 -0
  521. package/dist/migrations/util/alterEnum.js.map +1 -0
  522. package/dist/queryBuilder.d.ts +43 -0
  523. package/dist/queryBuilder.d.ts.map +1 -0
  524. package/dist/queryBuilder.js +224 -0
  525. package/dist/queryBuilder.js.map +1 -0
  526. package/dist/redis.d.ts +21 -0
  527. package/dist/redis.d.ts.map +1 -0
  528. package/dist/redis.js +50 -0
  529. package/dist/redis.js.map +1 -0
  530. package/package.json +16 -0
  531. package/src/TakaroModel.ts +33 -0
  532. package/src/__tests__/encryption.integration.test.ts +57 -0
  533. package/src/__tests__/queryBuilder.integration.test.ts +208 -0
  534. package/src/config.ts +122 -0
  535. package/src/encryption.ts +26 -0
  536. package/src/errorTypeGuards.ts +11 -0
  537. package/src/knex.ts +59 -0
  538. package/src/main.ts +15 -0
  539. package/src/migrations/index.ts +70 -0
  540. package/src/migrations/sql/20220827191938_init.ts +183 -0
  541. package/src/migrations/sql/20221019173729_settings.ts +70 -0
  542. package/src/migrations/sql/20221029103554_refactor_function_assignments.ts +41 -0
  543. package/src/migrations/sql/20221102190532_commands.ts +66 -0
  544. package/src/migrations/sql/20221203135001-builtin_modules.ts +56 -0
  545. package/src/migrations/sql/20230308183400-persistent-variables.ts +74 -0
  546. package/src/migrations/sql/20230314183400-auth-ory.ts +27 -0
  547. package/src/migrations/sql/20230325156123_command-arguments.ts +24 -0
  548. package/src/migrations/sql/20230407132022-module-descriptions.ts +13 -0
  549. package/src/migrations/sql/20230407143733-module-json-schema-config.ts +16 -0
  550. package/src/migrations/sql/20230407173055-hook-regex-optional.ts +13 -0
  551. package/src/migrations/sql/20230415154935-cronjob-configs.ts +18 -0
  552. package/src/migrations/sql/20230503132906-variables-extra-meta.ts +31 -0
  553. package/src/migrations/sql/20230604130951-fix-hook-eventtypes.ts +12 -0
  554. package/src/migrations/sql/20230617081049-discordId-for-users.ts +16 -0
  555. package/src/migrations/sql/20230618053611-discord-funtionality.ts +34 -0
  556. package/src/migrations/sql/20230622192402-discord-hooks.ts +20 -0
  557. package/src/migrations/sql/20230707081218-playerOnGameServerExtension.ts +21 -0
  558. package/src/migrations/sql/20230710174340-events.ts +21 -0
  559. package/src/migrations/sql/20230712061220-roles-permissions-extension.ts +50 -0
  560. package/src/migrations/sql/20230713184927-variables-modulescoped.ts +32 -0
  561. package/src/migrations/sql/20230714045136-domain-index.ts +40 -0
  562. package/src/migrations/sql/20230714045727-events-index.ts +19 -0
  563. package/src/migrations/sql/20230715102519-module-permissions-extra-fields.ts +38 -0
  564. package/src/migrations/sql/20230724062109-roles-constraints.ts +16 -0
  565. package/src/migrations/sql/20230811095701-userId-on-events.ts +14 -0
  566. package/src/migrations/sql/20230921123717-count-for-permissions.ts +101 -0
  567. package/src/migrations/sql/20231111102812-details-system-permissions.ts +192 -0
  568. package/src/migrations/sql/20231114151343-system-roles.ts +46 -0
  569. package/src/migrations/sql/20231118082301-add-new-permissions.ts +200 -0
  570. package/src/migrations/sql/20231119115037-timedRoles.ts +23 -0
  571. package/src/migrations/sql/20231123150854-economy-base.ts +15 -0
  572. package/src/migrations/sql/20231123171611-economy-settings.ts +15 -0
  573. package/src/migrations/sql/20231124140441-json-module-assignments.ts +29 -0
  574. package/src/migrations/sql/20231208114507-settings-refactor.ts +114 -0
  575. package/src/migrations/sql/20231208171234-game-items.ts +20 -0
  576. package/src/migrations/sql/20231216100720-player-inventory.ts +16 -0
  577. package/src/migrations/sql/20231222180438-steam-data.ts +27 -0
  578. package/src/migrations/sql/20231223132631-pog-online.ts +13 -0
  579. package/src/migrations/sql/20231223212031-unique-index-item-def.ts +27 -0
  580. package/src/migrations/sql/20231224135126-gameserver-online-status.ts +13 -0
  581. package/src/migrations/sql/20231224155226-unique-pog.ts +27 -0
  582. package/src/migrations/sql/20231225140650-extra-ip-info.ts +27 -0
  583. package/src/migrations/sql/20231227144315-unique-constraints-player.ts +74 -0
  584. package/src/migrations/sql/20231229144707-more-player-constraints.ts +20 -0
  585. package/src/migrations/sql/20240101162751-add-settings-constraint.ts +39 -0
  586. package/src/migrations/sql/20240105130846-remove-some-module-perms.ts +104 -0
  587. package/src/migrations/sql/20240116141936-add-ui-schema-to-module.ts +13 -0
  588. package/src/migrations/sql/20240119152426-remove-hook-check.ts +18 -0
  589. package/src/migrations/sql/20240121142329-move-ip-history.ts +53 -0
  590. package/src/migrations/sql/20240202101208-rename-economy-to-economyUtils.ts +15 -0
  591. package/src/migrations/sql/20240216120143-domain-state.ts +13 -0
  592. package/src/migrations/sql/20240229141340-looser-fks-events.ts +20 -0
  593. package/src/migrations/sql/20240301063505-module-functions.ts +17 -0
  594. package/src/migrations/sql/20240613175009-lastseen-users-pog.ts +21 -0
  595. package/src/migrations/sql/20240614143517-shop.ts +39 -0
  596. package/src/migrations/sql/20240615145045-user-player-link.ts +20 -0
  597. package/src/migrations/sql/20240622132552-fix-ip-history-fk.ts +13 -0
  598. package/src/migrations/sql/20240626200803-player-inventory-idx.ts +13 -0
  599. package/src/migrations/sql/20240628174914-shop-orders.ts +20 -0
  600. package/src/migrations/sql/20240705140358-teleports-public-refactor.ts +31 -0
  601. package/src/migrations/sql/20240710181429-events-name-idx.ts +13 -0
  602. package/src/migrations/sql/20240711181423-shop-orders-multi-listing.ts +34 -0
  603. package/src/migrations/sql/20240718121004-delete-read-gameservers-perm.ts +9 -0
  604. package/src/migrations/sql/20240718150807-listing-deleted-and-draft-status.ts +15 -0
  605. package/src/migrations/sql/20240720135010-acting-user-and-module.ts +24 -0
  606. package/src/migrations/sql/20240811061243-domain-rate-limit-setting.ts +16 -0
  607. package/src/migrations/sql/20240814133931-domain-ext-ref.ts +24 -0
  608. package/src/migrations/sql/20240816171220-player-steam-level.ts +14 -0
  609. package/src/migrations/sql/20240830081157-variable-expiry.ts +14 -0
  610. package/src/migrations/sql/20240906125101-gameserver-enable.ts +14 -0
  611. package/src/migrations/sql/20240908185212-domain-name-not-unique.ts +12 -0
  612. package/src/migrations/sql/20240922110414-player-playtime.ts +13 -0
  613. package/src/migrations/sql/20240922133738-add-bans.ts +25 -0
  614. package/src/migrations/sql/20240929090313-global-playtime.ts +13 -0
  615. package/src/migrations/sql/20240929143849-player-name-null.ts +13 -0
  616. package/src/migrations/sql/20241012183754-shop-orders-belong-to-player.ts +44 -0
  617. package/src/migrations/sql/20241013173159-add-indexen-for-moduleId.ts +57 -0
  618. package/src/migrations/sql/20241020133133-make-listing-name-required.ts +16 -0
  619. package/src/migrations/sql/20241024164331-events-fk-fix.ts +16 -0
  620. package/src/migrations/sql/20241030130613-index-for-roleId.ts +31 -0
  621. package/src/migrations/sql/20241205201123-gameserver-deletedAt.ts +13 -0
  622. package/src/migrations/sql/20241330200212-module-versions.ts +384 -0
  623. package/src/migrations/sql/20250112102308-generic-gameserver.ts +55 -0
  624. package/src/migrations/sql/20250128200529-version-fixes.ts +13 -0
  625. package/src/migrations/sql/20250131183251-domain-settings.ts +55 -0
  626. package/src/migrations/sql/20250221130042-variable-length.ts +35 -0
  627. package/src/migrations/sql/20250221193144-versions-perf-improvements.ts +79 -0
  628. package/src/migrations/sql/20250223143705-fix-ban-constraint.ts +43 -0
  629. package/src/migrations/sql/20250305210650-more-module-metadata.ts +49 -0
  630. package/src/migrations/sql/20250307162855-default-systemconfig.ts +13 -0
  631. package/src/migrations/sql/20250312184104-unique-external-reference.ts +13 -0
  632. package/src/migrations/sql/20250314185501-root-users-not-dashboard-user.ts +17 -0
  633. package/src/migrations/sql/20250315191707-fix-constraint-module-items.ts +26 -0
  634. package/src/migrations/sql/20250519185149-add-item-indexes.ts +42 -0
  635. package/src/migrations/sql/20250524054924-tracking.ts +79 -0
  636. package/src/migrations/sql/20250525135204-ban-reason-length.ts +35 -0
  637. package/src/migrations/sql/20250605201140-shop-permissions-missing.ts +20 -0
  638. package/src/migrations/sql/20250606060546-inventory-tracking.ts +96 -0
  639. package/src/migrations/sql/20250613110835-add-platform-id-to-players.ts +51 -0
  640. package/src/migrations/sql/20250613203142-add-dimension-to-position.ts +25 -0
  641. package/src/migrations/sql/20250614113157-entities.ts +40 -0
  642. package/src/migrations/sql/20250629090822-player-query-performance-indices.ts +38 -0
  643. package/src/migrations/sql/20250701-command-query-performance-indices.ts +53 -0
  644. package/src/migrations/sql/20250702181214-platform-id-and-pog-indexes.ts +31 -0
  645. package/src/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.ts +13 -0
  646. package/src/migrations/sql/20250707205720-items-permissions-missing.ts +20 -0
  647. package/src/migrations/sql/20250708095623-command-required-permissions.ts +13 -0
  648. package/src/migrations/sql/20250710131445-add-shop-categories.ts +98 -0
  649. package/src/migrations/sql/20250718-fix-player-inventory-history-pk.ts +161 -0
  650. package/src/migrations/sql/20250719160409-add-module-author-supportedgames.ts +31 -0
  651. package/src/migrations/sql/20250719175542-add-discord-permissions.ts +20 -0
  652. package/src/migrations/sql/20250726000000-discord-role-sync.ts +15 -0
  653. package/src/migrations/sql/20250727092719-add-quality-to-inventory.ts +13 -0
  654. package/src/migrations/sql/20250802124307-add-playeriphistory-composite-index.ts +13 -0
  655. package/src/migrations/sql/20250809122020-add-player-name-history.ts +31 -0
  656. package/src/migrations/sql/20250812163648-add-kpi-performance-indexes.ts +20 -0
  657. package/src/migrations/sql/20250814163747-shop-order-cascade-delete.ts +27 -0
  658. package/src/migrations/sql/20250815120000-optimize-shop-analytics-indexes.ts +46 -0
  659. package/src/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.ts +75 -0
  660. package/src/migrations/sql/20251101000000-add-deleted-domain-state.ts +43 -0
  661. package/src/migrations/sql/20251108214824-unique-player-per-server.ts +30 -0
  662. package/src/migrations/util/alterEnum.ts +9 -0
  663. package/src/queryBuilder.ts +263 -0
  664. package/src/redis.ts +59 -0
  665. package/tsconfig.build.json +9 -0
  666. package/tsconfig.json +8 -0
  667. package/typedoc.json +3 -0
@@ -0,0 +1,96 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.raw(`
5
+ CREATE TABLE "playerInventoryHistory" (
6
+ id UUID DEFAULT gen_random_uuid() NOT NULL,
7
+ "createdAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
8
+ "updatedAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
9
+ domain VARCHAR(255) NOT NULL,
10
+ "playerId" UUID NOT NULL,
11
+ "itemId" UUID NOT NULL,
12
+ quantity INTEGER NOT NULL,
13
+ CONSTRAINT "playerInventoryHistory_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId"),
14
+ CONSTRAINT "playerInventoryHistory_domain_foreign" FOREIGN KEY (domain) REFERENCES domains(id) ON DELETE CASCADE,
15
+ CONSTRAINT "playerInventoryHistory_playerId_foreign" FOREIGN KEY ("playerId") REFERENCES "playerOnGameServer"(id) ON DELETE CASCADE,
16
+ CONSTRAINT "playerInventoryHistory_itemId_foreign" FOREIGN KEY ("itemId") REFERENCES items(id) ON DELETE CASCADE,
17
+ CONSTRAINT "playerInventoryHistory_quantity_check" CHECK (quantity >= 0)
18
+ ) PARTITION BY RANGE ("createdAt")
19
+ `);
20
+
21
+ await knex.raw(`
22
+ CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
23
+ RETURNS VOID AS $$
24
+ DECLARE
25
+ current_day_start DATE;
26
+ next_day_start DATE;
27
+ partition_name TEXT;
28
+ partition_exists BOOLEAN;
29
+ target_date DATE;
30
+ BEGIN
31
+ IF date_param IS NOT NULL THEN
32
+ target_date := DATE(date_param::TIMESTAMP);
33
+ ELSE
34
+ target_date := CURRENT_DATE;
35
+ END IF;
36
+
37
+ current_day_start := DATE_TRUNC('day', target_date);
38
+ next_day_start := current_day_start + INTERVAL '1 day';
39
+
40
+ partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
41
+
42
+ SELECT EXISTS (
43
+ SELECT 1 FROM pg_class c
44
+ JOIN pg_namespace n ON n.oid = c.relnamespace
45
+ WHERE c.relname = partition_name
46
+ AND n.nspname = 'public'
47
+ ) INTO partition_exists;
48
+
49
+ IF NOT partition_exists THEN
50
+ EXECUTE format(
51
+ 'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
52
+ FOR VALUES FROM (%L) TO (%L)',
53
+ partition_name,
54
+ current_day_start,
55
+ next_day_start
56
+ );
57
+
58
+ RAISE NOTICE 'Created partition: % for date: %',
59
+ partition_name, current_day_start;
60
+ END IF;
61
+ END;
62
+ $$ LANGUAGE plpgsql;
63
+ `);
64
+
65
+ await knex.raw(
66
+ `CREATE INDEX "playerInventoryHistory_domain_createdAt_idx" ON "playerInventoryHistory" (domain, "createdAt")`,
67
+ );
68
+ await knex.raw(`CREATE INDEX "playerInventoryHistory_playerId_idx" ON "playerInventoryHistory" ("playerId")`);
69
+ await knex.raw(`CREATE INDEX "playerInventoryHistory_itemId_idx" ON "playerInventoryHistory" ("itemId")`);
70
+ await knex.raw(
71
+ `CREATE INDEX "playerInventoryHistory_playerId_createdAt_idx" ON "playerInventoryHistory" ("playerId", "createdAt" DESC)`,
72
+ );
73
+ await knex.raw(
74
+ `CREATE INDEX "playerInventoryHistory_itemId_createdAt_idx" ON "playerInventoryHistory" ("itemId", "createdAt" DESC)`,
75
+ );
76
+ await knex.raw(
77
+ `CREATE INDEX "playerInventoryHistory_domain_itemId_createdAt_idx" ON "playerInventoryHistory" (domain, "itemId", "createdAt" DESC)`,
78
+ );
79
+
80
+ // Delete the old playerInventory table
81
+ await knex.raw('DROP TABLE IF EXISTS "playerInventory" CASCADE');
82
+ }
83
+
84
+ export async function down(knex: Knex): Promise<void> {
85
+ await knex.schema.createTable('playerInventory', (table) => {
86
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
87
+ table.timestamps(true, true, true);
88
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
89
+ table.uuid('playerId').references('playerOnGameServer.id').onDelete('CASCADE').notNullable();
90
+ table.uuid('itemId').references('items.id').onDelete('CASCADE').notNullable();
91
+ table.integer('quantity').notNullable();
92
+ });
93
+
94
+ await knex.raw('DROP FUNCTION IF EXISTS ensure_player_inventory_history_partition(VARCHAR)');
95
+ await knex.raw('DROP TABLE IF EXISTS "playerInventoryHistory" CASCADE');
96
+ }
@@ -0,0 +1,51 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Add platformId column to players table
5
+ await knex.schema.alterTable('players', (table) => {
6
+ table.string('platformId').nullable();
7
+ });
8
+
9
+ // Add unique constraint for domain + platformId
10
+ await knex.schema.alterTable('players', (table) => {
11
+ table.unique(['domain', 'platformId']);
12
+ });
13
+
14
+ // Drop the existing unique constraint
15
+ await knex.raw(`
16
+ ALTER TABLE players
17
+ DROP CONSTRAINT players_domain_steam_xbox_eos_unique;
18
+ `);
19
+
20
+ // Add new unique constraint that includes platformId
21
+ await knex.raw(`
22
+ ALTER TABLE players
23
+ ADD CONSTRAINT players_domain_steam_xbox_eos_platform_unique
24
+ UNIQUE NULLS NOT DISTINCT (domain, "steamId", "xboxLiveId", "epicOnlineServicesId", "platformId");
25
+ `);
26
+ }
27
+
28
+ export async function down(knex: Knex): Promise<void> {
29
+ // Drop the new unique constraint
30
+ await knex.raw(`
31
+ ALTER TABLE players
32
+ DROP CONSTRAINT players_domain_steam_xbox_eos_platform_unique;
33
+ `);
34
+
35
+ // Drop the individual platformId unique constraint
36
+ await knex.schema.alterTable('players', (table) => {
37
+ table.dropUnique(['domain', 'platformId']);
38
+ });
39
+
40
+ // Remove platformId column
41
+ await knex.schema.alterTable('players', (table) => {
42
+ table.dropColumn('platformId');
43
+ });
44
+
45
+ // Re-add the original unique constraint
46
+ await knex.raw(`
47
+ ALTER TABLE players
48
+ ADD CONSTRAINT players_domain_steam_xbox_eos_unique
49
+ UNIQUE NULLS NOT DISTINCT (domain, "steamId", "xboxLiveId", "epicOnlineServicesId");
50
+ `);
51
+ }
@@ -0,0 +1,25 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Add dimension column to playerOnGameServer table
5
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
6
+ table.string('dimension').nullable();
7
+ });
8
+
9
+ // Add dimension column to playerLocation table
10
+ await knex.schema.alterTable('playerLocation', (table) => {
11
+ table.string('dimension').nullable();
12
+ });
13
+ }
14
+
15
+ export async function down(knex: Knex): Promise<void> {
16
+ // Remove dimension column from playerOnGameServer table
17
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
18
+ table.dropColumn('dimension');
19
+ });
20
+
21
+ // Remove dimension column from playerLocation table
22
+ await knex.schema.alterTable('playerLocation', (table) => {
23
+ table.dropColumn('dimension');
24
+ });
25
+ }
@@ -0,0 +1,40 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.createTable('entities', (table) => {
5
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
6
+ table.timestamps(true, true, true);
7
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
8
+ table.uuid('gameserverId').references('gameservers.id').onDelete('CASCADE').notNullable();
9
+ table.string('name').notNullable();
10
+ table.string('code').notNullable();
11
+ table.text('description').nullable();
12
+ table.enum('type', ['hostile', 'friendly', 'neutral']).nullable();
13
+ table.jsonb('metadata').nullable();
14
+ // Add index on code since we'll use that in queries a lot
15
+ table.index('code');
16
+ // Add unique constraint to prevent duplicates
17
+ table.unique(['code', 'gameserverId', 'domain']);
18
+ });
19
+
20
+ // Insert entity permissions
21
+ await knex('permission').insert([
22
+ {
23
+ permission: 'READ_ENTITIES',
24
+ description: 'Can view entity details',
25
+ friendlyName: 'Read Entities',
26
+ },
27
+ {
28
+ permission: 'MANAGE_ENTITIES',
29
+ description: 'Can create, update, and delete entities',
30
+ friendlyName: 'Manage Entities',
31
+ },
32
+ ]);
33
+ }
34
+
35
+ export async function down(knex: Knex): Promise<void> {
36
+ // Remove entity permissions
37
+ await knex('permission').whereIn('permission', ['READ_ENTITIES', 'MANAGE_ENTITIES']).del();
38
+
39
+ await knex.schema.dropTable('entities');
40
+ }
@@ -0,0 +1,38 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Create optimized indices for the slow player count query:
5
+ // SELECT COUNT(DISTINCT players.id)
6
+ // FROM players
7
+ // INNER JOIN playerOnGameServer ON playerOnGameServer.playerId = players.id
8
+ // WHERE players.domain = $1 AND playerOnGameServer.lastSeen > $2
9
+
10
+ // Primary optimization: Composite index on playerOnGameServer for efficient join + filter
11
+ // This allows PostgreSQL to use the index for both the JOIN and WHERE clause
12
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
13
+ table.index(['playerId', 'lastSeen'], 'idx_playerongameserver_playerid_lastseen');
14
+ });
15
+
16
+ // Secondary optimization: Index on players.domain for the WHERE clause
17
+ await knex.schema.alterTable('players', (table) => {
18
+ table.index(['domain'], 'idx_players_domain');
19
+ });
20
+
21
+ // Covering index on players(domain, id) to avoid table lookups after index scan
22
+ await knex.schema.alterTable('players', (table) => {
23
+ table.index(['domain', 'id'], 'idx_players_domain_id');
24
+ });
25
+ }
26
+
27
+ export async function down(knex: Knex): Promise<void> {
28
+ // Drop all indices created in the up function
29
+
30
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
31
+ table.dropIndex([], 'idx_playerongameserver_playerid_lastseen');
32
+ });
33
+
34
+ await knex.schema.alterTable('players', (table) => {
35
+ table.dropIndex([], 'idx_players_domain');
36
+ table.dropIndex([], 'idx_players_domain_id');
37
+ });
38
+ }
@@ -0,0 +1,53 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Optimize the getTriggeredCommands query performance
5
+ // The query joins multiple tables and performs complex JSONB operations
6
+
7
+ // 1. Case-insensitive index on commands.trigger for efficient trigger matching
8
+ // This allows the LOWER(commands.trigger) = ? condition to use an index
9
+ await knex.raw('CREATE INDEX idx_commands_trigger_lower ON commands (LOWER(trigger))');
10
+
11
+ // 2. Index on moduleInstallations.gameserverId for efficient filtering
12
+ // The query filters by gameserverId through the join chain
13
+ await knex.schema.alterTable('moduleInstallations', (table) => {
14
+ table.index(['gameserverId'], 'idx_moduleinstallations_gameserverid');
15
+ });
16
+
17
+ // 3. Index on moduleInstallations.versionId for join optimization
18
+ // This helps the join between moduleInstallations and moduleVersions
19
+ await knex.schema.alterTable('moduleInstallations', (table) => {
20
+ table.index(['versionId'], 'idx_moduleinstallations_versionid');
21
+ });
22
+
23
+ // 4. GIN index on moduleInstallations.systemConfig for JSONB queries
24
+ // This optimizes the complex EXISTS subquery that searches command aliases
25
+ await knex.raw(`
26
+ CREATE INDEX idx_moduleinstallations_systemconfig_commands_gin
27
+ ON "moduleInstallations"
28
+ USING gin (("systemConfig" -> 'commands'))
29
+ `);
30
+
31
+ // 5. Composite index on commands for better join performance
32
+ // This helps when joining from moduleVersions to commands
33
+ await knex.schema.alterTable('commands', (table) => {
34
+ table.index(['versionId', 'domain'], 'idx_commands_versionid_domain');
35
+ });
36
+ }
37
+
38
+ export async function down(knex: Knex): Promise<void> {
39
+ // Drop all indices created in the up function
40
+
41
+ await knex.raw('DROP INDEX IF EXISTS idx_commands_trigger_lower');
42
+
43
+ await knex.schema.alterTable('moduleInstallations', (table) => {
44
+ table.dropIndex([], 'idx_moduleinstallations_gameserverid');
45
+ table.dropIndex([], 'idx_moduleinstallations_versionid');
46
+ });
47
+
48
+ await knex.raw('DROP INDEX IF EXISTS idx_moduleinstallations_systemconfig_commands_gin');
49
+
50
+ await knex.schema.alterTable('commands', (table) => {
51
+ table.dropIndex([], 'idx_commands_versionid_domain');
52
+ });
53
+ }
@@ -0,0 +1,31 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Add indexes for platform ID lookups in resolveRef
5
+ await knex.schema.alterTable('players', (table) => {
6
+ table.index(['domain', 'steamId'], 'idx_players_domain_steamid');
7
+ table.index(['domain', 'epicOnlineServicesId'], 'idx_players_domain_epiconlineservicesid');
8
+ table.index(['domain', 'xboxLiveId'], 'idx_players_domain_xboxliveid');
9
+ table.index(['domain', 'platformId'], 'idx_players_domain_platformid');
10
+ });
11
+
12
+ // Add composite index for playerOnGameServer findAssociations query
13
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
14
+ table.index(['domain', 'gameId', 'gameServerId'], 'idx_pog_domain_gameid_gameserverid');
15
+ });
16
+ }
17
+
18
+ export async function down(knex: Knex): Promise<void> {
19
+ // Drop platform ID indexes
20
+ await knex.schema.alterTable('players', (table) => {
21
+ table.dropIndex([], 'idx_players_domain_steamid');
22
+ table.dropIndex([], 'idx_players_domain_epiconlineservicesid');
23
+ table.dropIndex([], 'idx_players_domain_xboxliveid');
24
+ table.dropIndex([], 'idx_players_domain_platformid');
25
+ });
26
+
27
+ // Drop playerOnGameServer composite index
28
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
29
+ table.dropIndex([], 'idx_pog_domain_gameid_gameserverid');
30
+ });
31
+ }
@@ -0,0 +1,13 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
5
+ table.string('ip').nullable();
6
+ });
7
+ }
8
+
9
+ export async function down(knex: Knex): Promise<void> {
10
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
11
+ table.dropColumn('ip');
12
+ });
13
+ }
@@ -0,0 +1,20 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex('permission').insert([
5
+ {
6
+ permission: 'READ_ITEMS',
7
+ description: 'Can view item details',
8
+ friendlyName: 'Read Items',
9
+ },
10
+ {
11
+ permission: 'MANAGE_ITEMS',
12
+ description: 'Can create, update, and delete items',
13
+ friendlyName: 'Manage Items',
14
+ },
15
+ ]);
16
+ }
17
+
18
+ export async function down(knex: Knex): Promise<void> {
19
+ await knex('permission').whereIn('permission', ['READ_ITEMS', 'MANAGE_ITEMS']).del();
20
+ }
@@ -0,0 +1,13 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable('commands', (table) => {
5
+ table.jsonb('requiredPermissions').defaultTo('[]').notNullable();
6
+ });
7
+ }
8
+
9
+ export async function down(knex: Knex): Promise<void> {
10
+ await knex.schema.alterTable('commands', (table) => {
11
+ table.dropColumn('requiredPermissions');
12
+ });
13
+ }
@@ -0,0 +1,98 @@
1
+ import { Knex } from 'knex';
2
+
3
+ const SHOP_CATEGORY_TABLE_NAME = 'shopCategory';
4
+ const SHOP_LISTING_CATEGORY_TABLE_NAME = 'shopListingCategory';
5
+
6
+ const DEFAULT_CATEGORIES = [
7
+ { name: 'Weapons', emoji: '⚔️' },
8
+ { name: 'Armor', emoji: '🛡️' },
9
+ { name: 'Building', emoji: '🏗️' },
10
+ { name: 'Tools', emoji: '🔧' },
11
+ { name: 'Consumables', emoji: '💊' },
12
+ { name: 'Resources', emoji: '📦' },
13
+ { name: 'Base', emoji: '🏠' },
14
+ { name: 'Vehicles', emoji: '🚗' },
15
+ ];
16
+
17
+ export async function up(knex: Knex): Promise<void> {
18
+ // Create shopCategory table (hierarchical categories)
19
+ await knex.schema.createTable(SHOP_CATEGORY_TABLE_NAME, (table) => {
20
+ table.timestamps(true, true, true);
21
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
22
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
23
+ table.string('name', 50).notNullable();
24
+ table.string('emoji', 10).notNullable();
25
+ table.uuid('parentId').nullable();
26
+
27
+ // Add self-referencing foreign key for parent category
28
+ table.foreign('parentId').references('id').inTable(SHOP_CATEGORY_TABLE_NAME).onDelete('SET NULL');
29
+
30
+ // Indexes for performance
31
+ table.index('domain');
32
+ table.index('parentId');
33
+ table.index(['domain', 'name']);
34
+ });
35
+
36
+ // Add case-insensitive unique constraint on domain + name
37
+ await knex.raw(`
38
+ CREATE UNIQUE INDEX shopCategory_domain_name_unique
39
+ ON "${SHOP_CATEGORY_TABLE_NAME}" ("domain", LOWER("name"))
40
+ `);
41
+
42
+ // Create shopListingCategory junction table (many-to-many)
43
+ await knex.schema.createTable(SHOP_LISTING_CATEGORY_TABLE_NAME, (table) => {
44
+ table.timestamps(true, true, true);
45
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
46
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
47
+ table.uuid('shopListingId').references('shopListing.id').onDelete('CASCADE').notNullable();
48
+ table.uuid('shopCategoryId').references('shopCategory.id').onDelete('CASCADE').notNullable();
49
+
50
+ // Indexes for performance
51
+ table.index('domain');
52
+ table.index('shopListingId');
53
+ table.index('shopCategoryId');
54
+ table.index(['shopListingId', 'shopCategoryId']);
55
+
56
+ // Ensure a listing can only be in a category once
57
+ table.unique(['shopListingId', 'shopCategoryId']);
58
+ });
59
+
60
+ // Insert default categories for all existing domains
61
+ const domains = await knex('domains').select('id');
62
+
63
+ for (const domain of domains) {
64
+ const categoriesToInsert = DEFAULT_CATEGORIES.map((cat) => ({
65
+ ...cat,
66
+ domain: domain.id,
67
+ parentId: null,
68
+ }));
69
+
70
+ // Insert categories, ignoring duplicates (in case some domains already have categories with these names)
71
+ for (const category of categoriesToInsert) {
72
+ const existing = await knex(SHOP_CATEGORY_TABLE_NAME)
73
+ .where('domain', category.domain)
74
+ .where('name', category.name)
75
+ .whereNull('parentId')
76
+ .first();
77
+
78
+ if (!existing) {
79
+ await knex(SHOP_CATEGORY_TABLE_NAME).insert(category);
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ export async function down(knex: Knex): Promise<void> {
86
+ // Remove default categories from all domains
87
+ await knex(SHOP_CATEGORY_TABLE_NAME)
88
+ .whereIn(
89
+ 'name',
90
+ DEFAULT_CATEGORIES.map((c) => c.name),
91
+ )
92
+ .whereNull('parentId')
93
+ .delete();
94
+
95
+ // Drop tables in reverse dependency order
96
+ await knex.schema.dropTable(SHOP_LISTING_CATEGORY_TABLE_NAME);
97
+ await knex.schema.dropTable(SHOP_CATEGORY_TABLE_NAME);
98
+ }
@@ -0,0 +1,161 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // First, drop the primary key constraint from the parent table
5
+ await knex.raw(`
6
+ ALTER TABLE "playerInventoryHistory"
7
+ DROP CONSTRAINT IF EXISTS "playerInventoryHistory_pkey"
8
+ `);
9
+
10
+ // Get all existing partitions and drop their primary key constraints
11
+ const partitions = await knex.raw(`
12
+ SELECT
13
+ inhrelid::regclass AS partition_name
14
+ FROM pg_inherits
15
+ WHERE inhparent = '"playerInventoryHistory"'::regclass
16
+ `);
17
+
18
+ for (const partition of partitions.rows) {
19
+ // partition_name already includes schema, need to extract just the table name
20
+ const fullName = partition.partition_name;
21
+ const partitionName = fullName.includes('.')
22
+ ? fullName.split('.').pop().replace(/"/g, '')
23
+ : fullName.replace(/"/g, '');
24
+ await knex.raw(`
25
+ ALTER TABLE "${partitionName}"
26
+ DROP CONSTRAINT IF EXISTS "${partitionName}_pkey"
27
+ `);
28
+ }
29
+
30
+ // Create a regular (non-unique) composite index for query performance
31
+ // This replaces the primary key constraint functionality for lookups
32
+ await knex.raw(`
33
+ CREATE INDEX IF NOT EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
34
+ ON "playerInventoryHistory" ("createdAt", "playerId", "itemId")
35
+ `);
36
+
37
+ // Update the partition creation function to not include the composite primary key
38
+ await knex.raw(`
39
+ CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
40
+ RETURNS VOID AS $$
41
+ DECLARE
42
+ current_day_start DATE;
43
+ next_day_start DATE;
44
+ partition_name TEXT;
45
+ partition_exists BOOLEAN;
46
+ target_date DATE;
47
+ BEGIN
48
+ IF date_param IS NOT NULL THEN
49
+ target_date := DATE(date_param::TIMESTAMP);
50
+ ELSE
51
+ target_date := CURRENT_DATE;
52
+ END IF;
53
+
54
+ current_day_start := DATE_TRUNC('day', target_date);
55
+ next_day_start := current_day_start + INTERVAL '1 day';
56
+
57
+ partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
58
+
59
+ SELECT EXISTS (
60
+ SELECT 1 FROM pg_class c
61
+ JOIN pg_namespace n ON n.oid = c.relnamespace
62
+ WHERE c.relname = partition_name
63
+ AND n.nspname = 'public'
64
+ ) INTO partition_exists;
65
+
66
+ IF NOT partition_exists THEN
67
+ EXECUTE format(
68
+ 'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
69
+ FOR VALUES FROM (%L) TO (%L)',
70
+ partition_name,
71
+ current_day_start,
72
+ next_day_start
73
+ );
74
+
75
+ RAISE NOTICE 'Created partition: % for date: %',
76
+ partition_name, current_day_start;
77
+ END IF;
78
+ END;
79
+ $$ LANGUAGE plpgsql;
80
+ `);
81
+ }
82
+
83
+ export async function down(knex: Knex): Promise<void> {
84
+ // Drop the new index
85
+ await knex.raw(`
86
+ DROP INDEX IF EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
87
+ `);
88
+
89
+ // No need to drop any primary key since we didn't add one in the up migration
90
+
91
+ // Restore the original composite primary key on the parent table
92
+ await knex.raw(`
93
+ ALTER TABLE "playerInventoryHistory"
94
+ ADD CONSTRAINT "playerInventoryHistory_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
95
+ `);
96
+
97
+ // Get all existing partitions and restore their primary key constraints
98
+ const partitions = await knex.raw(`
99
+ SELECT
100
+ inhrelid::regclass AS partition_name
101
+ FROM pg_inherits
102
+ WHERE inhparent = '"playerInventoryHistory"'::regclass
103
+ `);
104
+
105
+ for (const partition of partitions.rows) {
106
+ // partition_name already includes schema, need to extract just the table name
107
+ const fullName = partition.partition_name;
108
+ const partitionName = fullName.includes('.')
109
+ ? fullName.split('.').pop().replace(/"/g, '')
110
+ : fullName.replace(/"/g, '');
111
+ await knex.raw(`
112
+ ALTER TABLE "${partitionName}"
113
+ ADD CONSTRAINT "${partitionName}_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
114
+ `);
115
+ }
116
+
117
+ // Restore the original partition creation function with the composite primary key
118
+ await knex.raw(`
119
+ CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
120
+ RETURNS VOID AS $$
121
+ DECLARE
122
+ current_day_start DATE;
123
+ next_day_start DATE;
124
+ partition_name TEXT;
125
+ partition_exists BOOLEAN;
126
+ target_date DATE;
127
+ BEGIN
128
+ IF date_param IS NOT NULL THEN
129
+ target_date := DATE(date_param::TIMESTAMP);
130
+ ELSE
131
+ target_date := CURRENT_DATE;
132
+ END IF;
133
+
134
+ current_day_start := DATE_TRUNC('day', target_date);
135
+ next_day_start := current_day_start + INTERVAL '1 day';
136
+
137
+ partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
138
+
139
+ SELECT EXISTS (
140
+ SELECT 1 FROM pg_class c
141
+ JOIN pg_namespace n ON n.oid = c.relnamespace
142
+ WHERE c.relname = partition_name
143
+ AND n.nspname = 'public'
144
+ ) INTO partition_exists;
145
+
146
+ IF NOT partition_exists THEN
147
+ EXECUTE format(
148
+ 'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
149
+ FOR VALUES FROM (%L) TO (%L)',
150
+ partition_name,
151
+ current_day_start,
152
+ next_day_start
153
+ );
154
+
155
+ RAISE NOTICE 'Created partition: % for date: %',
156
+ partition_name, current_day_start;
157
+ END IF;
158
+ END;
159
+ $$ LANGUAGE plpgsql;
160
+ `);
161
+ }