@takaro/db 0.0.1

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 (263) hide show
  1. package/README.md +1 -0
  2. package/dist/TakaroModel.d.ts +15 -0
  3. package/dist/TakaroModel.js +23 -0
  4. package/dist/TakaroModel.js.map +1 -0
  5. package/dist/config.d.ts +98 -0
  6. package/dist/config.js +81 -0
  7. package/dist/config.js.map +1 -0
  8. package/dist/encryption.d.ts +4 -0
  9. package/dist/encryption.js +24 -0
  10. package/dist/encryption.js.map +1 -0
  11. package/dist/errorTypeGuards.d.ts +2 -0
  12. package/dist/errorTypeGuards.js +11 -0
  13. package/dist/errorTypeGuards.js.map +1 -0
  14. package/dist/knex.d.ts +16 -0
  15. package/dist/knex.js +46 -0
  16. package/dist/knex.js.map +1 -0
  17. package/dist/main.d.ts +8 -0
  18. package/dist/main.js +9 -0
  19. package/dist/main.js.map +1 -0
  20. package/dist/migrations/index.d.ts +2 -0
  21. package/dist/migrations/index.js +59 -0
  22. package/dist/migrations/index.js.map +1 -0
  23. package/dist/migrations/sql/20220827191938_init.d.ts +3 -0
  24. package/dist/migrations/sql/20220827191938_init.js +155 -0
  25. package/dist/migrations/sql/20220827191938_init.js.map +1 -0
  26. package/dist/migrations/sql/20221019173729_settings.d.ts +3 -0
  27. package/dist/migrations/sql/20221019173729_settings.js +61 -0
  28. package/dist/migrations/sql/20221019173729_settings.js.map +1 -0
  29. package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts +3 -0
  30. package/dist/migrations/sql/20221029103554_refactor_function_assignments.js +33 -0
  31. package/dist/migrations/sql/20221029103554_refactor_function_assignments.js.map +1 -0
  32. package/dist/migrations/sql/20221102190532_commands.d.ts +3 -0
  33. package/dist/migrations/sql/20221102190532_commands.js +58 -0
  34. package/dist/migrations/sql/20221102190532_commands.js.map +1 -0
  35. package/dist/migrations/sql/20221203135001-builtin_modules.d.ts +3 -0
  36. package/dist/migrations/sql/20221203135001-builtin_modules.js +44 -0
  37. package/dist/migrations/sql/20221203135001-builtin_modules.js.map +1 -0
  38. package/dist/migrations/sql/20230308183400-persistent-variables.d.ts +3 -0
  39. package/dist/migrations/sql/20230308183400-persistent-variables.js +63 -0
  40. package/dist/migrations/sql/20230308183400-persistent-variables.js.map +1 -0
  41. package/dist/migrations/sql/20230314183400-auth-ory.d.ts +3 -0
  42. package/dist/migrations/sql/20230314183400-auth-ory.js +23 -0
  43. package/dist/migrations/sql/20230314183400-auth-ory.js.map +1 -0
  44. package/dist/migrations/sql/20230325156123_command-arguments.d.ts +3 -0
  45. package/dist/migrations/sql/20230325156123_command-arguments.js +19 -0
  46. package/dist/migrations/sql/20230325156123_command-arguments.js.map +1 -0
  47. package/dist/migrations/sql/20230407132022-module-descriptions.d.ts +3 -0
  48. package/dist/migrations/sql/20230407132022-module-descriptions.js +11 -0
  49. package/dist/migrations/sql/20230407132022-module-descriptions.js.map +1 -0
  50. package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts +3 -0
  51. package/dist/migrations/sql/20230407143733-module-json-schema-config.js +14 -0
  52. package/dist/migrations/sql/20230407143733-module-json-schema-config.js.map +1 -0
  53. package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts +3 -0
  54. package/dist/migrations/sql/20230407173055-hook-regex-optional.js +11 -0
  55. package/dist/migrations/sql/20230407173055-hook-regex-optional.js.map +1 -0
  56. package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts +3 -0
  57. package/dist/migrations/sql/20230415154935-cronjob-configs.js +16 -0
  58. package/dist/migrations/sql/20230415154935-cronjob-configs.js.map +1 -0
  59. package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts +3 -0
  60. package/dist/migrations/sql/20230503132906-variables-extra-meta.js +26 -0
  61. package/dist/migrations/sql/20230503132906-variables-extra-meta.js.map +1 -0
  62. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts +3 -0
  63. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js +8 -0
  64. package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js.map +1 -0
  65. package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts +3 -0
  66. package/dist/migrations/sql/20230617081049-discordId-for-users.js +14 -0
  67. package/dist/migrations/sql/20230617081049-discordId-for-users.js.map +1 -0
  68. package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts +3 -0
  69. package/dist/migrations/sql/20230618053611-discord-funtionality.js +26 -0
  70. package/dist/migrations/sql/20230618053611-discord-funtionality.js.map +1 -0
  71. package/dist/migrations/sql/20230622192402-discord-hooks.d.ts +3 -0
  72. package/dist/migrations/sql/20230622192402-discord-hooks.js +14 -0
  73. package/dist/migrations/sql/20230622192402-discord-hooks.js.map +1 -0
  74. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts +3 -0
  75. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js +19 -0
  76. package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js.map +1 -0
  77. package/dist/migrations/sql/20230710174340-events.d.ts +3 -0
  78. package/dist/migrations/sql/20230710174340-events.js +16 -0
  79. package/dist/migrations/sql/20230710174340-events.js.map +1 -0
  80. package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts +3 -0
  81. package/dist/migrations/sql/20230712061220-roles-permissions-extension.js +43 -0
  82. package/dist/migrations/sql/20230712061220-roles-permissions-extension.js.map +1 -0
  83. package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts +3 -0
  84. package/dist/migrations/sql/20230713184927-variables-modulescoped.js +27 -0
  85. package/dist/migrations/sql/20230713184927-variables-modulescoped.js.map +1 -0
  86. package/dist/migrations/sql/20230714045136-domain-index.d.ts +3 -0
  87. package/dist/migrations/sql/20230714045136-domain-index.js +37 -0
  88. package/dist/migrations/sql/20230714045136-domain-index.js.map +1 -0
  89. package/dist/migrations/sql/20230714045727-events-index.d.ts +3 -0
  90. package/dist/migrations/sql/20230714045727-events-index.js +17 -0
  91. package/dist/migrations/sql/20230714045727-events-index.js.map +1 -0
  92. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts +3 -0
  93. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js +32 -0
  94. package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js.map +1 -0
  95. package/dist/migrations/sql/20230724062109-roles-constraints.d.ts +3 -0
  96. package/dist/migrations/sql/20230724062109-roles-constraints.js +14 -0
  97. package/dist/migrations/sql/20230724062109-roles-constraints.js.map +1 -0
  98. package/dist/migrations/sql/20230811095701-userId-on-events.d.ts +3 -0
  99. package/dist/migrations/sql/20230811095701-userId-on-events.js +12 -0
  100. package/dist/migrations/sql/20230811095701-userId-on-events.js.map +1 -0
  101. package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts +3 -0
  102. package/dist/migrations/sql/20230921123717-count-for-permissions.js +84 -0
  103. package/dist/migrations/sql/20230921123717-count-for-permissions.js.map +1 -0
  104. package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts +36 -0
  105. package/dist/migrations/sql/20231111102812-details-system-permissions.js +179 -0
  106. package/dist/migrations/sql/20231111102812-details-system-permissions.js.map +1 -0
  107. package/dist/migrations/sql/20231114151343-system-roles.d.ts +3 -0
  108. package/dist/migrations/sql/20231114151343-system-roles.js +41 -0
  109. package/dist/migrations/sql/20231114151343-system-roles.js.map +1 -0
  110. package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts +36 -0
  111. package/dist/migrations/sql/20231118082301-add-new-permissions.js +186 -0
  112. package/dist/migrations/sql/20231118082301-add-new-permissions.js.map +1 -0
  113. package/dist/migrations/sql/20231119115037-timedRoles.d.ts +3 -0
  114. package/dist/migrations/sql/20231119115037-timedRoles.js +19 -0
  115. package/dist/migrations/sql/20231119115037-timedRoles.js.map +1 -0
  116. package/dist/migrations/sql/20231123150854-economy-base.d.ts +3 -0
  117. package/dist/migrations/sql/20231123150854-economy-base.js +13 -0
  118. package/dist/migrations/sql/20231123150854-economy-base.js.map +1 -0
  119. package/dist/migrations/sql/20231123171611-economy-settings.d.ts +3 -0
  120. package/dist/migrations/sql/20231123171611-economy-settings.js +13 -0
  121. package/dist/migrations/sql/20231123171611-economy-settings.js.map +1 -0
  122. package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts +3 -0
  123. package/dist/migrations/sql/20231124140441-json-module-assignments.js +25 -0
  124. package/dist/migrations/sql/20231124140441-json-module-assignments.js.map +1 -0
  125. package/dist/migrations/sql/20231208114507-settings-refactor.d.ts +3 -0
  126. package/dist/migrations/sql/20231208114507-settings-refactor.js +95 -0
  127. package/dist/migrations/sql/20231208114507-settings-refactor.js.map +1 -0
  128. package/dist/migrations/sql/20231208171234-game-items.d.ts +3 -0
  129. package/dist/migrations/sql/20231208171234-game-items.js +18 -0
  130. package/dist/migrations/sql/20231208171234-game-items.js.map +1 -0
  131. package/dist/migrations/sql/20231216100720-player-inventory.d.ts +3 -0
  132. package/dist/migrations/sql/20231216100720-player-inventory.js +14 -0
  133. package/dist/migrations/sql/20231216100720-player-inventory.js.map +1 -0
  134. package/dist/migrations/sql/20231222180438-steam-data.d.ts +3 -0
  135. package/dist/migrations/sql/20231222180438-steam-data.js +25 -0
  136. package/dist/migrations/sql/20231222180438-steam-data.js.map +1 -0
  137. package/dist/migrations/sql/20231223132631-pog-online.d.ts +3 -0
  138. package/dist/migrations/sql/20231223132631-pog-online.js +11 -0
  139. package/dist/migrations/sql/20231223132631-pog-online.js.map +1 -0
  140. package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts +3 -0
  141. package/dist/migrations/sql/20231223212031-unique-index-item-def.js +24 -0
  142. package/dist/migrations/sql/20231223212031-unique-index-item-def.js.map +1 -0
  143. package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts +3 -0
  144. package/dist/migrations/sql/20231224135126-gameserver-online-status.js +11 -0
  145. package/dist/migrations/sql/20231224135126-gameserver-online-status.js.map +1 -0
  146. package/dist/migrations/sql/20231224155226-unique-pog.d.ts +3 -0
  147. package/dist/migrations/sql/20231224155226-unique-pog.js +24 -0
  148. package/dist/migrations/sql/20231224155226-unique-pog.js.map +1 -0
  149. package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts +3 -0
  150. package/dist/migrations/sql/20231225140650-extra-ip-info.js +23 -0
  151. package/dist/migrations/sql/20231225140650-extra-ip-info.js.map +1 -0
  152. package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts +3 -0
  153. package/dist/migrations/sql/20231227144315-unique-constraints-player.js +67 -0
  154. package/dist/migrations/sql/20231227144315-unique-constraints-player.js.map +1 -0
  155. package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts +3 -0
  156. package/dist/migrations/sql/20231229144707-more-player-constraints.js +17 -0
  157. package/dist/migrations/sql/20231229144707-more-player-constraints.js.map +1 -0
  158. package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts +3 -0
  159. package/dist/migrations/sql/20240101162751-add-settings-constraint.js +34 -0
  160. package/dist/migrations/sql/20240101162751-add-settings-constraint.js.map +1 -0
  161. package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts +3 -0
  162. package/dist/migrations/sql/20240105130846-remove-some-module-perms.js +80 -0
  163. package/dist/migrations/sql/20240105130846-remove-some-module-perms.js.map +1 -0
  164. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts +3 -0
  165. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js +11 -0
  166. package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js.map +1 -0
  167. package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts +3 -0
  168. package/dist/migrations/sql/20240119152426-remove-hook-check.js +14 -0
  169. package/dist/migrations/sql/20240119152426-remove-hook-check.js.map +1 -0
  170. package/dist/migrations/sql/20240121142329-move-ip-history.d.ts +3 -0
  171. package/dist/migrations/sql/20240121142329-move-ip-history.js +44 -0
  172. package/dist/migrations/sql/20240121142329-move-ip-history.js.map +1 -0
  173. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts +3 -0
  174. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js +13 -0
  175. package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js.map +1 -0
  176. package/dist/migrations/sql/20240216120143-domain-state.d.ts +3 -0
  177. package/dist/migrations/sql/20240216120143-domain-state.js +11 -0
  178. package/dist/migrations/sql/20240216120143-domain-state.js.map +1 -0
  179. package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts +3 -0
  180. package/dist/migrations/sql/20240229141340-looser-fks-events.js +18 -0
  181. package/dist/migrations/sql/20240229141340-looser-fks-events.js.map +1 -0
  182. package/dist/migrations/sql/20240301063505-module-functions.d.ts +3 -0
  183. package/dist/migrations/sql/20240301063505-module-functions.js +14 -0
  184. package/dist/migrations/sql/20240301063505-module-functions.js.map +1 -0
  185. package/dist/migrations/util/alterEnum.d.ts +1 -0
  186. package/dist/migrations/util/alterEnum.js +9 -0
  187. package/dist/migrations/util/alterEnum.js.map +1 -0
  188. package/dist/queryBuilder.d.ts +28 -0
  189. package/dist/queryBuilder.js +132 -0
  190. package/dist/queryBuilder.js.map +1 -0
  191. package/dist/redis.d.ts +20 -0
  192. package/dist/redis.js +49 -0
  193. package/dist/redis.js.map +1 -0
  194. package/package.json +29 -0
  195. package/src/TakaroModel.ts +32 -0
  196. package/src/__tests__/encryption.integration.test.ts +56 -0
  197. package/src/__tests__/queryBuilder.integration.test.ts +202 -0
  198. package/src/config.ts +101 -0
  199. package/src/encryption.ts +27 -0
  200. package/src/errorTypeGuards.ts +11 -0
  201. package/src/knex.ts +54 -0
  202. package/src/main.ts +15 -0
  203. package/src/migrations/index.ts +70 -0
  204. package/src/migrations/sql/20220827191938_init.ts +183 -0
  205. package/src/migrations/sql/20221019173729_settings.ts +70 -0
  206. package/src/migrations/sql/20221029103554_refactor_function_assignments.ts +41 -0
  207. package/src/migrations/sql/20221102190532_commands.ts +66 -0
  208. package/src/migrations/sql/20221203135001-builtin_modules.ts +56 -0
  209. package/src/migrations/sql/20230308183400-persistent-variables.ts +74 -0
  210. package/src/migrations/sql/20230314183400-auth-ory.ts +27 -0
  211. package/src/migrations/sql/20230325156123_command-arguments.ts +24 -0
  212. package/src/migrations/sql/20230407132022-module-descriptions.ts +13 -0
  213. package/src/migrations/sql/20230407143733-module-json-schema-config.ts +16 -0
  214. package/src/migrations/sql/20230407173055-hook-regex-optional.ts +13 -0
  215. package/src/migrations/sql/20230415154935-cronjob-configs.ts +18 -0
  216. package/src/migrations/sql/20230503132906-variables-extra-meta.ts +31 -0
  217. package/src/migrations/sql/20230604130951-fix-hook-eventtypes.ts +12 -0
  218. package/src/migrations/sql/20230617081049-discordId-for-users.ts +16 -0
  219. package/src/migrations/sql/20230618053611-discord-funtionality.ts +34 -0
  220. package/src/migrations/sql/20230622192402-discord-hooks.ts +20 -0
  221. package/src/migrations/sql/20230707081218-playerOnGameServerExtension.ts +21 -0
  222. package/src/migrations/sql/20230710174340-events.ts +21 -0
  223. package/src/migrations/sql/20230712061220-roles-permissions-extension.ts +50 -0
  224. package/src/migrations/sql/20230713184927-variables-modulescoped.ts +32 -0
  225. package/src/migrations/sql/20230714045136-domain-index.ts +40 -0
  226. package/src/migrations/sql/20230714045727-events-index.ts +19 -0
  227. package/src/migrations/sql/20230715102519-module-permissions-extra-fields.ts +38 -0
  228. package/src/migrations/sql/20230724062109-roles-constraints.ts +16 -0
  229. package/src/migrations/sql/20230811095701-userId-on-events.ts +14 -0
  230. package/src/migrations/sql/20230921123717-count-for-permissions.ts +101 -0
  231. package/src/migrations/sql/20231111102812-details-system-permissions.ts +192 -0
  232. package/src/migrations/sql/20231114151343-system-roles.ts +46 -0
  233. package/src/migrations/sql/20231118082301-add-new-permissions.ts +200 -0
  234. package/src/migrations/sql/20231119115037-timedRoles.ts +23 -0
  235. package/src/migrations/sql/20231123150854-economy-base.ts +15 -0
  236. package/src/migrations/sql/20231123171611-economy-settings.ts +15 -0
  237. package/src/migrations/sql/20231124140441-json-module-assignments.ts +29 -0
  238. package/src/migrations/sql/20231208114507-settings-refactor.ts +114 -0
  239. package/src/migrations/sql/20231208171234-game-items.ts +20 -0
  240. package/src/migrations/sql/20231216100720-player-inventory.ts +16 -0
  241. package/src/migrations/sql/20231222180438-steam-data.ts +27 -0
  242. package/src/migrations/sql/20231223132631-pog-online.ts +13 -0
  243. package/src/migrations/sql/20231223212031-unique-index-item-def.ts +27 -0
  244. package/src/migrations/sql/20231224135126-gameserver-online-status.ts +13 -0
  245. package/src/migrations/sql/20231224155226-unique-pog.ts +27 -0
  246. package/src/migrations/sql/20231225140650-extra-ip-info.ts +27 -0
  247. package/src/migrations/sql/20231227144315-unique-constraints-player.ts +74 -0
  248. package/src/migrations/sql/20231229144707-more-player-constraints.ts +20 -0
  249. package/src/migrations/sql/20240101162751-add-settings-constraint.ts +39 -0
  250. package/src/migrations/sql/20240105130846-remove-some-module-perms.ts +104 -0
  251. package/src/migrations/sql/20240116141936-add-ui-schema-to-module.ts +13 -0
  252. package/src/migrations/sql/20240119152426-remove-hook-check.ts +18 -0
  253. package/src/migrations/sql/20240121142329-move-ip-history.ts +53 -0
  254. package/src/migrations/sql/20240202101208-rename-economy-to-economyUtils.ts +15 -0
  255. package/src/migrations/sql/20240216120143-domain-state.ts +13 -0
  256. package/src/migrations/sql/20240229141340-looser-fks-events.ts +20 -0
  257. package/src/migrations/sql/20240301063505-module-functions.ts +17 -0
  258. package/src/migrations/util/alterEnum.ts +10 -0
  259. package/src/queryBuilder.ts +133 -0
  260. package/src/redis.ts +58 -0
  261. package/tsconfig.build.json +9 -0
  262. package/tsconfig.json +8 -0
  263. package/typedoc.json +3 -0
@@ -0,0 +1,192 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export enum PERMISSIONS {
4
+ 'ROOT' = 'ROOT',
5
+ 'MANAGE_USERS' = 'MANAGE_USERS',
6
+ 'READ_USERS' = 'READ_USERS',
7
+ 'MANAGE_ROLES' = 'MANAGE_ROLES',
8
+ 'READ_ROLES' = 'READ_ROLES',
9
+ 'MANAGE_GAMESERVERS' = 'MANAGE_GAMESERVERS',
10
+ 'READ_GAMESERVERS' = 'READ_GAMESERVERS',
11
+ 'READ_FUNCTIONS' = 'READ_FUNCTIONS',
12
+ 'MANAGE_FUNCTIONS' = 'MANAGE_FUNCTIONS',
13
+ 'READ_CRONJOBS' = 'READ_CRONJOBS',
14
+ 'MANAGE_CRONJOBS' = 'MANAGE_CRONJOBS',
15
+ 'READ_HOOKS' = 'READ_HOOKS',
16
+ 'MANAGE_HOOKS' = 'MANAGE_HOOKS',
17
+ 'READ_COMMANDS' = 'READ_COMMANDS',
18
+ 'MANAGE_COMMANDS' = 'MANAGE_COMMANDS',
19
+ 'READ_MODULES' = 'READ_MODULES',
20
+ 'MANAGE_MODULES' = 'MANAGE_MODULES',
21
+ 'READ_PLAYERS' = 'READ_PLAYERS',
22
+ 'MANAGE_PLAYERS' = 'MANAGE_PLAYERS',
23
+ 'MANAGE_SETTINGS' = 'MANAGE_SETTINGS',
24
+ 'READ_SETTINGS' = 'READ_SETTINGS',
25
+ 'READ_VARIABLES' = 'READ_VARIABLES',
26
+ 'MANAGE_VARIABLES' = 'MANAGE_VARIABLES',
27
+ 'READ_EVENTS' = 'READ_EVENTS',
28
+ 'MANAGE_EVENTS' = 'MANAGE_EVENTS',
29
+ }
30
+
31
+ export interface IPermissionDetails {
32
+ permission: string;
33
+ friendlyName: string;
34
+ description: string;
35
+ }
36
+
37
+ export const PERMISSION_DETAILS: Record<PERMISSIONS, IPermissionDetails> = {
38
+ [PERMISSIONS.ROOT]: {
39
+ permission: PERMISSIONS.ROOT,
40
+ friendlyName: 'Root Access',
41
+ description: 'Full access to all systems and resources',
42
+ },
43
+ [PERMISSIONS.MANAGE_USERS]: {
44
+ permission: PERMISSIONS.MANAGE_USERS,
45
+ friendlyName: 'Manage Users',
46
+ description: 'Can create, update, and delete users',
47
+ },
48
+ [PERMISSIONS.READ_USERS]: {
49
+ permission: PERMISSIONS.READ_USERS,
50
+ friendlyName: 'Read Users',
51
+ description: 'Can view user details',
52
+ },
53
+ [PERMISSIONS.MANAGE_ROLES]: {
54
+ permission: PERMISSIONS.MANAGE_ROLES,
55
+ friendlyName: 'Manage Roles',
56
+ description: 'Can create, update, and delete roles',
57
+ },
58
+ [PERMISSIONS.READ_ROLES]: {
59
+ permission: PERMISSIONS.READ_ROLES,
60
+ friendlyName: 'Read Roles',
61
+ description: 'Can view role details',
62
+ },
63
+ [PERMISSIONS.MANAGE_GAMESERVERS]: {
64
+ permission: PERMISSIONS.MANAGE_GAMESERVERS,
65
+ friendlyName: 'Manage Game Servers',
66
+ description: 'Can create, update, and delete game servers',
67
+ },
68
+ [PERMISSIONS.READ_GAMESERVERS]: {
69
+ permission: PERMISSIONS.READ_GAMESERVERS,
70
+ friendlyName: 'Read Game Servers',
71
+ description: 'Can view game server details',
72
+ },
73
+ [PERMISSIONS.READ_FUNCTIONS]: {
74
+ permission: PERMISSIONS.READ_FUNCTIONS,
75
+ friendlyName: 'Read Functions',
76
+ description: 'Can view function details',
77
+ },
78
+ [PERMISSIONS.MANAGE_FUNCTIONS]: {
79
+ permission: PERMISSIONS.MANAGE_FUNCTIONS,
80
+ friendlyName: 'Manage Functions',
81
+ description: 'Can create, update, and delete functions',
82
+ },
83
+ [PERMISSIONS.READ_CRONJOBS]: {
84
+ permission: PERMISSIONS.READ_CRONJOBS,
85
+ friendlyName: 'Read Cron Jobs',
86
+ description: 'Can view cron job details',
87
+ },
88
+ [PERMISSIONS.MANAGE_CRONJOBS]: {
89
+ permission: PERMISSIONS.MANAGE_CRONJOBS,
90
+ friendlyName: 'Manage Cron Jobs',
91
+ description: 'Can create, update, and delete cron jobs',
92
+ },
93
+ [PERMISSIONS.READ_HOOKS]: {
94
+ permission: PERMISSIONS.READ_HOOKS,
95
+ friendlyName: 'Read Hooks',
96
+ description: 'Can view hook details',
97
+ },
98
+ [PERMISSIONS.MANAGE_HOOKS]: {
99
+ permission: PERMISSIONS.MANAGE_HOOKS,
100
+ friendlyName: 'Manage Hooks',
101
+ description: 'Can create, update, and delete hooks',
102
+ },
103
+ [PERMISSIONS.READ_COMMANDS]: {
104
+ permission: PERMISSIONS.READ_COMMANDS,
105
+ friendlyName: 'Read Commands',
106
+ description: 'Can view command details',
107
+ },
108
+ [PERMISSIONS.MANAGE_COMMANDS]: {
109
+ permission: PERMISSIONS.MANAGE_COMMANDS,
110
+ friendlyName: 'Manage Commands',
111
+ description: 'Can create, update, and delete commands',
112
+ },
113
+ [PERMISSIONS.READ_MODULES]: {
114
+ permission: PERMISSIONS.READ_MODULES,
115
+ friendlyName: 'Read Modules',
116
+ description: 'Can view module details',
117
+ },
118
+ [PERMISSIONS.MANAGE_MODULES]: {
119
+ permission: PERMISSIONS.MANAGE_MODULES,
120
+ friendlyName: 'Manage Modules',
121
+ description: 'Can create, update, and delete modules',
122
+ },
123
+ [PERMISSIONS.READ_PLAYERS]: {
124
+ permission: PERMISSIONS.READ_PLAYERS,
125
+ friendlyName: 'Read Players',
126
+ description: 'Can view player details',
127
+ },
128
+ [PERMISSIONS.MANAGE_PLAYERS]: {
129
+ permission: PERMISSIONS.MANAGE_PLAYERS,
130
+ friendlyName: 'Manage Players',
131
+ description: 'Can create, update, and delete players',
132
+ },
133
+ [PERMISSIONS.MANAGE_SETTINGS]: {
134
+ permission: PERMISSIONS.MANAGE_SETTINGS,
135
+ friendlyName: 'Manage Settings',
136
+ description: 'Can modify settings',
137
+ },
138
+ [PERMISSIONS.READ_SETTINGS]: {
139
+ permission: PERMISSIONS.READ_SETTINGS,
140
+ friendlyName: 'Read Settings',
141
+ description: 'Can view settings',
142
+ },
143
+ [PERMISSIONS.READ_VARIABLES]: {
144
+ permission: PERMISSIONS.READ_VARIABLES,
145
+ friendlyName: 'Read Variables',
146
+ description: 'Can view variables',
147
+ },
148
+ [PERMISSIONS.MANAGE_VARIABLES]: {
149
+ permission: PERMISSIONS.MANAGE_VARIABLES,
150
+ friendlyName: 'Manage Variables',
151
+ description: 'Can create, update, and delete variables',
152
+ },
153
+ [PERMISSIONS.READ_EVENTS]: {
154
+ permission: PERMISSIONS.READ_EVENTS,
155
+ friendlyName: 'Read Events',
156
+ description: 'Can view event details',
157
+ },
158
+ [PERMISSIONS.MANAGE_EVENTS]: {
159
+ permission: PERMISSIONS.MANAGE_EVENTS,
160
+ friendlyName: 'Manage Events',
161
+ description: 'Can create, update, and delete events',
162
+ },
163
+ };
164
+
165
+ export async function up(knex: Knex): Promise<void> {
166
+ // For all system permissions, find the record in the DB
167
+ // And update the description and friendly name
168
+
169
+ const permissions = Object.values(PERMISSIONS);
170
+
171
+ for (const permission of permissions) {
172
+ const details = PERMISSION_DETAILS[permission];
173
+ await knex('permission').where({ permission }).update({
174
+ description: details.description,
175
+ friendlyName: details.friendlyName,
176
+ });
177
+ }
178
+ }
179
+
180
+ export async function down(knex: Knex): Promise<void> {
181
+ // For all system permissions, find the record in the DB
182
+ // And update the description and friendly name
183
+
184
+ const permissions = Object.values(PERMISSIONS);
185
+
186
+ for (const permission of permissions) {
187
+ await knex('permission').where({ permission }).update({
188
+ description: 'No description provided',
189
+ friendlyName: permission,
190
+ });
191
+ }
192
+ }
@@ -0,0 +1,46 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Ensure for each domainId, a role 'User' and a role 'Player' exists
5
+ await knex.raw(`
6
+ INSERT INTO roles (name, domain)
7
+ SELECT 'User', id
8
+ FROM domains
9
+ WHERE NOT EXISTS (
10
+ SELECT id
11
+ FROM roles
12
+ WHERE name = 'User'
13
+ AND domain = domains.id
14
+ );
15
+ `);
16
+
17
+ await knex.raw(`
18
+ INSERT INTO roles (name, domain)
19
+ SELECT 'Player', id
20
+ FROM domains
21
+ WHERE NOT EXISTS (
22
+ SELECT id
23
+ FROM roles
24
+ WHERE name = 'Player'
25
+ AND domain = domains.id
26
+ );
27
+ `);
28
+
29
+ // Add a 'system' flag to the role table
30
+ await knex.schema.alterTable('roles', (table) => {
31
+ table.boolean('system').defaultTo(false);
32
+ });
33
+
34
+ // Set system=true for the 'user', 'player' and 'root' roles
35
+ await knex.raw(`
36
+ UPDATE roles
37
+ SET system = true
38
+ WHERE name IN ('User', 'Player', 'root');
39
+ `);
40
+ }
41
+
42
+ export async function down(knex: Knex): Promise<void> {
43
+ await knex.schema.alterTable('roles', (table) => {
44
+ table.dropColumn('system');
45
+ });
46
+ }
@@ -0,0 +1,200 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export enum PERMISSIONS {
4
+ 'ROOT' = 'ROOT',
5
+ 'MANAGE_USERS' = 'MANAGE_USERS',
6
+ 'READ_USERS' = 'READ_USERS',
7
+ 'MANAGE_ROLES' = 'MANAGE_ROLES',
8
+ 'READ_ROLES' = 'READ_ROLES',
9
+ 'MANAGE_GAMESERVERS' = 'MANAGE_GAMESERVERS',
10
+ 'READ_GAMESERVERS' = 'READ_GAMESERVERS',
11
+ 'READ_FUNCTIONS' = 'READ_FUNCTIONS',
12
+ 'MANAGE_FUNCTIONS' = 'MANAGE_FUNCTIONS',
13
+ 'READ_CRONJOBS' = 'READ_CRONJOBS',
14
+ 'MANAGE_CRONJOBS' = 'MANAGE_CRONJOBS',
15
+ 'READ_HOOKS' = 'READ_HOOKS',
16
+ 'MANAGE_HOOKS' = 'MANAGE_HOOKS',
17
+ 'READ_COMMANDS' = 'READ_COMMANDS',
18
+ 'MANAGE_COMMANDS' = 'MANAGE_COMMANDS',
19
+ 'READ_MODULES' = 'READ_MODULES',
20
+ 'MANAGE_MODULES' = 'MANAGE_MODULES',
21
+ 'READ_PLAYERS' = 'READ_PLAYERS',
22
+ 'MANAGE_PLAYERS' = 'MANAGE_PLAYERS',
23
+ 'MANAGE_SETTINGS' = 'MANAGE_SETTINGS',
24
+ 'READ_SETTINGS' = 'READ_SETTINGS',
25
+ 'READ_VARIABLES' = 'READ_VARIABLES',
26
+ 'MANAGE_VARIABLES' = 'MANAGE_VARIABLES',
27
+ 'READ_EVENTS' = 'READ_EVENTS',
28
+ 'MANAGE_EVENTS' = 'MANAGE_EVENTS',
29
+ }
30
+
31
+ export interface IPermissionDetails {
32
+ permission: string;
33
+ friendlyName: string;
34
+ description: string;
35
+ }
36
+
37
+ export const PERMISSION_DETAILS: Record<PERMISSIONS, IPermissionDetails> = {
38
+ [PERMISSIONS.ROOT]: {
39
+ permission: PERMISSIONS.ROOT,
40
+ friendlyName: 'Root Access',
41
+ description: 'Full access to all systems and resources',
42
+ },
43
+ [PERMISSIONS.MANAGE_USERS]: {
44
+ permission: PERMISSIONS.MANAGE_USERS,
45
+ friendlyName: 'Manage Users',
46
+ description: 'Can create, update, and delete users',
47
+ },
48
+ [PERMISSIONS.READ_USERS]: {
49
+ permission: PERMISSIONS.READ_USERS,
50
+ friendlyName: 'Read Users',
51
+ description: 'Can view user details',
52
+ },
53
+ [PERMISSIONS.MANAGE_ROLES]: {
54
+ permission: PERMISSIONS.MANAGE_ROLES,
55
+ friendlyName: 'Manage Roles',
56
+ description: 'Can create, update, and delete roles',
57
+ },
58
+ [PERMISSIONS.READ_ROLES]: {
59
+ permission: PERMISSIONS.READ_ROLES,
60
+ friendlyName: 'Read Roles',
61
+ description: 'Can view role details',
62
+ },
63
+ [PERMISSIONS.MANAGE_GAMESERVERS]: {
64
+ permission: PERMISSIONS.MANAGE_GAMESERVERS,
65
+ friendlyName: 'Manage Game Servers',
66
+ description: 'Can create, update, and delete game servers',
67
+ },
68
+ [PERMISSIONS.READ_GAMESERVERS]: {
69
+ permission: PERMISSIONS.READ_GAMESERVERS,
70
+ friendlyName: 'Read Game Servers',
71
+ description: 'Can view game server details',
72
+ },
73
+ [PERMISSIONS.READ_FUNCTIONS]: {
74
+ permission: PERMISSIONS.READ_FUNCTIONS,
75
+ friendlyName: 'Read Functions',
76
+ description: 'Can view function details',
77
+ },
78
+ [PERMISSIONS.MANAGE_FUNCTIONS]: {
79
+ permission: PERMISSIONS.MANAGE_FUNCTIONS,
80
+ friendlyName: 'Manage Functions',
81
+ description: 'Can create, update, and delete functions',
82
+ },
83
+ [PERMISSIONS.READ_CRONJOBS]: {
84
+ permission: PERMISSIONS.READ_CRONJOBS,
85
+ friendlyName: 'Read Cron Jobs',
86
+ description: 'Can view cron job details',
87
+ },
88
+ [PERMISSIONS.MANAGE_CRONJOBS]: {
89
+ permission: PERMISSIONS.MANAGE_CRONJOBS,
90
+ friendlyName: 'Manage Cron Jobs',
91
+ description: 'Can create, update, and delete cron jobs',
92
+ },
93
+ [PERMISSIONS.READ_HOOKS]: {
94
+ permission: PERMISSIONS.READ_HOOKS,
95
+ friendlyName: 'Read Hooks',
96
+ description: 'Can view hook details',
97
+ },
98
+ [PERMISSIONS.MANAGE_HOOKS]: {
99
+ permission: PERMISSIONS.MANAGE_HOOKS,
100
+ friendlyName: 'Manage Hooks',
101
+ description: 'Can create, update, and delete hooks',
102
+ },
103
+ [PERMISSIONS.READ_COMMANDS]: {
104
+ permission: PERMISSIONS.READ_COMMANDS,
105
+ friendlyName: 'Read Commands',
106
+ description: 'Can view command details',
107
+ },
108
+ [PERMISSIONS.MANAGE_COMMANDS]: {
109
+ permission: PERMISSIONS.MANAGE_COMMANDS,
110
+ friendlyName: 'Manage Commands',
111
+ description: 'Can create, update, and delete commands',
112
+ },
113
+ [PERMISSIONS.READ_MODULES]: {
114
+ permission: PERMISSIONS.READ_MODULES,
115
+ friendlyName: 'Read Modules',
116
+ description: 'Can view module details',
117
+ },
118
+ [PERMISSIONS.MANAGE_MODULES]: {
119
+ permission: PERMISSIONS.MANAGE_MODULES,
120
+ friendlyName: 'Manage Modules',
121
+ description: 'Can create, update, and delete modules',
122
+ },
123
+ [PERMISSIONS.READ_PLAYERS]: {
124
+ permission: PERMISSIONS.READ_PLAYERS,
125
+ friendlyName: 'Read Players',
126
+ description: 'Can view player details',
127
+ },
128
+ [PERMISSIONS.MANAGE_PLAYERS]: {
129
+ permission: PERMISSIONS.MANAGE_PLAYERS,
130
+ friendlyName: 'Manage Players',
131
+ description: 'Can create, update, and delete players',
132
+ },
133
+ [PERMISSIONS.MANAGE_SETTINGS]: {
134
+ permission: PERMISSIONS.MANAGE_SETTINGS,
135
+ friendlyName: 'Manage Settings',
136
+ description: 'Can modify settings',
137
+ },
138
+ [PERMISSIONS.READ_SETTINGS]: {
139
+ permission: PERMISSIONS.READ_SETTINGS,
140
+ friendlyName: 'Read Settings',
141
+ description: 'Can view settings',
142
+ },
143
+ [PERMISSIONS.READ_VARIABLES]: {
144
+ permission: PERMISSIONS.READ_VARIABLES,
145
+ friendlyName: 'Read Variables',
146
+ description: 'Can view variables',
147
+ },
148
+ [PERMISSIONS.MANAGE_VARIABLES]: {
149
+ permission: PERMISSIONS.MANAGE_VARIABLES,
150
+ friendlyName: 'Manage Variables',
151
+ description: 'Can create, update, and delete variables',
152
+ },
153
+ [PERMISSIONS.READ_EVENTS]: {
154
+ permission: PERMISSIONS.READ_EVENTS,
155
+ friendlyName: 'Read Events',
156
+ description: 'Can view event details',
157
+ },
158
+ [PERMISSIONS.MANAGE_EVENTS]: {
159
+ permission: PERMISSIONS.MANAGE_EVENTS,
160
+ friendlyName: 'Manage Events',
161
+ description: 'Can create, update, and delete events',
162
+ },
163
+ };
164
+
165
+ export async function up(knex: Knex): Promise<void> {
166
+ // For all system permissions, find the record in the DB
167
+ // And update the description and friendly name
168
+
169
+ const permissions = Object.values(PERMISSIONS);
170
+
171
+ for (const permission of permissions) {
172
+ const details = PERMISSION_DETAILS[permission];
173
+ await knex('permission').where({ permission }).update({
174
+ description: details.description,
175
+ friendlyName: details.friendlyName,
176
+ });
177
+ }
178
+
179
+ // get permissions from the DB
180
+ const existingPermissions = await knex('permission').select('permission');
181
+
182
+ // filter out existing permissions
183
+ const newPermissions = permissions.filter((permission) => {
184
+ return !existingPermissions.find((existing) => existing.permission === permission);
185
+ });
186
+
187
+ // add new permissions
188
+ for (const permission of newPermissions) {
189
+ await knex('permission').insert({
190
+ permission: permission,
191
+ friendlyName: PERMISSION_DETAILS[permission].friendlyName,
192
+ description: PERMISSION_DETAILS[permission].description,
193
+ });
194
+ }
195
+ }
196
+
197
+ export async function down(_knex: Knex): Promise<void> {
198
+ // For all system permissions, find the record in the DB
199
+ // And update the description and friendly name
200
+ }
@@ -0,0 +1,23 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable('roleOnPlayer', (table) => {
5
+ table.timestamp('expiresAt').nullable();
6
+ });
7
+
8
+ await knex.schema.alterTable('roleOnUser', (table) => {
9
+ table.timestamp('expiresAt').nullable();
10
+ table.uuid('id').defaultTo(knex.raw('gen_random_uuid ()'));
11
+ });
12
+ }
13
+
14
+ export async function down(knex: Knex): Promise<void> {
15
+ await knex.schema.alterTable('roleOnPlayer', (table) => {
16
+ table.dropColumn('expiresAt');
17
+ });
18
+
19
+ await knex.schema.alterTable('roleOnUser', (table) => {
20
+ table.dropColumn('expiresAt');
21
+ table.dropColumn('id');
22
+ });
23
+ }
@@ -0,0 +1,15 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
5
+ table.integer('currency').defaultTo(0);
6
+ table.check('currency >= 0', [], 'currency_positive');
7
+ });
8
+ }
9
+
10
+ export async function down(knex: Knex): Promise<void> {
11
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
12
+ table.dropChecks('currency_positive');
13
+ table.dropColumn('currency');
14
+ });
15
+ }
@@ -0,0 +1,15 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable('settings', (table) => {
5
+ table.string('economyEnabled').defaultTo('false');
6
+ table.string('currencyName').defaultTo('Takaro coins');
7
+ });
8
+ }
9
+
10
+ export async function down(knex: Knex): Promise<void> {
11
+ await knex.schema.alterTable('playerOnGameServer', (table) => {
12
+ table.dropColumn('economyEnabled');
13
+ table.dropColumn('currencyName');
14
+ });
15
+ }
@@ -0,0 +1,29 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ // Change moduleAssignments.systemConfig from json to jsonb
5
+ await knex.raw(`
6
+ ALTER TABLE "moduleAssignments"
7
+ ALTER COLUMN "systemConfig" TYPE jsonb USING "systemConfig"::jsonb;
8
+ `);
9
+
10
+ // same for userConfig
11
+ await knex.raw(`
12
+ ALTER TABLE "moduleAssignments"
13
+ ALTER COLUMN "userConfig" TYPE jsonb USING "userConfig"::jsonb;
14
+ `);
15
+ }
16
+
17
+ export async function down(knex: Knex): Promise<void> {
18
+ // Change moduleAssignments.systemConfig from jsonb to json
19
+ await knex.raw(`
20
+ ALTER TABLE "moduleAssignments"
21
+ ALTER COLUMN "systemConfig" TYPE json USING "systemConfig"::json;
22
+ `);
23
+
24
+ // same for userConfig
25
+ await knex.raw(`
26
+ ALTER TABLE "moduleAssignments"
27
+ ALTER COLUMN "userConfig" TYPE json USING "userConfig"::json;
28
+ `);
29
+ }
@@ -0,0 +1,114 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.createTable('new_settings', (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('id').inTable('gameservers').onDelete('CASCADE');
9
+ table.string('key').notNullable();
10
+ table.string('value').notNullable();
11
+ // Setting key should be unique with gameServerId
12
+ table.unique(['domain', 'key', 'gameServerId']);
13
+ });
14
+
15
+ // Migrate data from settings to new_settings
16
+ const settings = await knex.select('*').from('settings');
17
+
18
+ for (const setting of settings) {
19
+ const domain = setting.domain;
20
+ for (const [key, value] of Object.entries(setting)) {
21
+ if (key !== 'id' && key !== 'createdAt' && key !== 'updatedAt' && key !== 'domain') {
22
+ const existing = await knex.select('*').from('new_settings').where({ key, domain }).first();
23
+
24
+ if (existing) {
25
+ continue;
26
+ }
27
+
28
+ await knex('new_settings').insert({
29
+ key,
30
+ value: String(value),
31
+ domain,
32
+ });
33
+ }
34
+ }
35
+ }
36
+
37
+ const gameServerSettings = await knex.select('*').from('gameServerSettings');
38
+
39
+ for (const setting of gameServerSettings) {
40
+ const gameServerId = setting.gameServerId;
41
+ const domain = setting.domain;
42
+
43
+ for (const [key, value] of Object.entries(setting)) {
44
+ if (key !== 'id' && key !== 'createdAt' && key !== 'updatedAt' && key !== 'gameServerId' && key !== 'domain') {
45
+ const existing = await knex.select('*').from('new_settings').where({ key, domain, gameServerId }).first();
46
+
47
+ if (existing) {
48
+ continue;
49
+ }
50
+
51
+ await knex('new_settings').insert({
52
+ key,
53
+ value: String(value),
54
+ gameServerId,
55
+ domain,
56
+ });
57
+ }
58
+ }
59
+ }
60
+
61
+ await knex.schema.dropTable('gameServerSettings');
62
+ await knex.schema.dropTable('settings');
63
+ await knex.schema.renameTable('new_settings', 'settings');
64
+ }
65
+
66
+ export async function down(knex: Knex): Promise<void> {
67
+ await knex.schema.renameTable('settings', 'new_settings');
68
+ await knex.schema.createTable('settings', (table) => {
69
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
70
+ table.string('key').notNullable();
71
+ table.string('value').notNullable();
72
+ table.timestamps(true, true);
73
+ });
74
+
75
+ await knex.schema.createTable('gameServerSettings', (table) => {
76
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
77
+ table.uuid('gameServerId').references('id').inTable('gameservers').onDelete('CASCADE');
78
+ table.string('key').notNullable();
79
+ table.string('value').notNullable();
80
+ table.timestamps(true, true);
81
+ });
82
+
83
+ // Migrate data from new_settings to settings
84
+ const settings = await knex.select('*').from('new_settings');
85
+
86
+ for (const setting of settings) {
87
+ for (const [key, value] of Object.entries(setting)) {
88
+ if (key !== 'id' && key !== 'createdAt' && key !== 'updatedAt') {
89
+ await knex('settings').insert({
90
+ key,
91
+ value: String(value),
92
+ });
93
+ }
94
+ }
95
+ }
96
+
97
+ const gameServerSettings = await knex.select('*').from('new_settings').whereNotNull('gameServerId');
98
+
99
+ for (const setting of gameServerSettings) {
100
+ const gameServerId = setting.gameServerId;
101
+
102
+ for (const [key, value] of Object.entries(setting)) {
103
+ if (key !== 'id' && key !== 'createdAt' && key !== 'updatedAt' && key !== 'gameServerId') {
104
+ await knex('gameServerSettings').insert({
105
+ key,
106
+ value: String(value),
107
+ gameServerId,
108
+ });
109
+ }
110
+ }
111
+ }
112
+
113
+ await knex.schema.dropTable('new_settings');
114
+ }
@@ -0,0 +1,20 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.createTable('items', (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.text('icon').nullable();
13
+ // Add index on code since we'll use that in queries a lot
14
+ table.index('code');
15
+ });
16
+ }
17
+
18
+ export async function down(knex: Knex): Promise<void> {
19
+ await knex.schema.dropTable('items');
20
+ }
@@ -0,0 +1,16 @@
1
+ import { Knex } from 'knex';
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.createTable('playerInventory', (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('playerId').references('playerOnGameServer.id').onDelete('CASCADE').notNullable();
9
+ table.uuid('itemId').references('items.id').onDelete('CASCADE').notNullable();
10
+ table.integer('quantity').notNullable();
11
+ });
12
+ }
13
+
14
+ export async function down(knex: Knex): Promise<void> {
15
+ await knex.schema.dropTable('playerInventory');
16
+ }