@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
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @takaro/db
@@ -0,0 +1,15 @@
1
+ import Objection, { Model } from 'objection';
2
+ export declare class NOT_DOMAIN_SCOPED_TakaroModel extends Model {
3
+ id: string;
4
+ createdAt: string;
5
+ updatedAt: string;
6
+ static get idColumn(): string;
7
+ $beforeInsert(): void;
8
+ $beforeUpdate(): void;
9
+ }
10
+ export declare class TakaroModel extends NOT_DOMAIN_SCOPED_TakaroModel {
11
+ domain: string;
12
+ static get modifiers(): {
13
+ domainScoped(query: Objection.QueryBuilder<Model>, domainId: string): void;
14
+ };
15
+ }
@@ -0,0 +1,23 @@
1
+ import { Model } from 'objection';
2
+ export class NOT_DOMAIN_SCOPED_TakaroModel extends Model {
3
+ static get idColumn() {
4
+ return 'id';
5
+ }
6
+ $beforeInsert() {
7
+ this.createdAt = new Date().toISOString();
8
+ }
9
+ $beforeUpdate() {
10
+ this.updatedAt = new Date().toISOString();
11
+ }
12
+ }
13
+ export class TakaroModel extends NOT_DOMAIN_SCOPED_TakaroModel {
14
+ static get modifiers() {
15
+ return {
16
+ domainScoped(query, domainId) {
17
+ const tableName = query.modelClass().tableName;
18
+ query.where(`${tableName}.domain`, domainId);
19
+ },
20
+ };
21
+ }
22
+ }
23
+ //# sourceMappingURL=TakaroModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TakaroModel.js","sourceRoot":"","sources":["../src/TakaroModel.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAKtD,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,6BAA6B;IAG5D,MAAM,KAAK,SAAS;QAClB,OAAO;YACL,YAAY,CAAC,KAAoC,EAAE,QAAgB;gBACjE,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;gBAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,98 @@
1
+ import { Config, IBaseConfig } from '@takaro/config';
2
+ export interface IDbConfig extends IBaseConfig {
3
+ postgres: {
4
+ host: string;
5
+ port: number;
6
+ user: string;
7
+ password: string;
8
+ database: string;
9
+ };
10
+ redis: {
11
+ host: string;
12
+ port: number;
13
+ username: string;
14
+ password: string;
15
+ };
16
+ systemSchema: string;
17
+ baseDomainSchema: string;
18
+ encryptionKey: string;
19
+ }
20
+ export declare const configSchema: {
21
+ postgres: {
22
+ host: {
23
+ doc: string;
24
+ format: StringConstructor;
25
+ default: string;
26
+ env: string;
27
+ };
28
+ port: {
29
+ doc: string;
30
+ format: NumberConstructor;
31
+ default: number;
32
+ env: string;
33
+ };
34
+ user: {
35
+ doc: string;
36
+ format: StringConstructor;
37
+ default: string;
38
+ env: string;
39
+ };
40
+ password: {
41
+ doc: string;
42
+ format: StringConstructor;
43
+ default: string;
44
+ env: string;
45
+ };
46
+ database: {
47
+ doc: string;
48
+ format: StringConstructor;
49
+ default: string;
50
+ env: string;
51
+ };
52
+ };
53
+ redis: {
54
+ host: {
55
+ doc: string;
56
+ format: StringConstructor;
57
+ default: string;
58
+ env: string;
59
+ };
60
+ port: {
61
+ doc: string;
62
+ format: NumberConstructor;
63
+ default: number;
64
+ env: string;
65
+ };
66
+ username: {
67
+ doc: string;
68
+ format: StringConstructor;
69
+ default: string;
70
+ env: string;
71
+ };
72
+ password: {
73
+ doc: string;
74
+ format: StringConstructor;
75
+ default: string;
76
+ env: string;
77
+ };
78
+ };
79
+ systemSchema: {
80
+ doc: string;
81
+ format: StringConstructor;
82
+ default: string;
83
+ env: string;
84
+ };
85
+ baseDomainSchema: {
86
+ doc: string;
87
+ format: StringConstructor;
88
+ default: string;
89
+ env: string;
90
+ };
91
+ encryptionKey: {
92
+ doc: string;
93
+ format: StringConstructor;
94
+ default: null;
95
+ env: string;
96
+ };
97
+ };
98
+ export declare const config: Config<IDbConfig>;
package/dist/config.js ADDED
@@ -0,0 +1,81 @@
1
+ import { Config, baseConfigConvict } from '@takaro/config';
2
+ export const configSchema = {
3
+ postgres: {
4
+ host: {
5
+ doc: 'The Postgres host to connect to',
6
+ format: String,
7
+ default: 'localhost',
8
+ env: 'POSTGRES_HOST',
9
+ },
10
+ port: {
11
+ doc: 'The Postgres port to connect to',
12
+ format: Number,
13
+ default: 5432,
14
+ env: 'POSTGRES_PORT',
15
+ },
16
+ user: {
17
+ doc: 'The Postgres user to connect as',
18
+ format: String,
19
+ default: 'postgres',
20
+ env: 'POSTGRES_USER',
21
+ },
22
+ password: {
23
+ doc: 'The Postgres password to use',
24
+ format: String,
25
+ default: 'postgres',
26
+ env: 'POSTGRES_PASSWORD',
27
+ },
28
+ database: {
29
+ doc: 'The Postgres database to use',
30
+ format: String,
31
+ default: 'postgres',
32
+ env: 'POSTGRES_DB',
33
+ },
34
+ },
35
+ redis: {
36
+ host: {
37
+ doc: 'The host of the redis server',
38
+ format: String,
39
+ default: 'localhost',
40
+ env: 'REDIS_HOST',
41
+ },
42
+ port: {
43
+ doc: 'The port of the redis server',
44
+ format: Number,
45
+ default: 6379,
46
+ env: 'REDIS_PORT',
47
+ },
48
+ username: {
49
+ doc: 'The username of the redis server',
50
+ format: String,
51
+ default: '',
52
+ env: 'REDIS_USERNAME',
53
+ },
54
+ password: {
55
+ doc: 'The password of the redis server',
56
+ format: String,
57
+ default: '',
58
+ env: 'REDIS_PASSWORD',
59
+ },
60
+ },
61
+ systemSchema: {
62
+ doc: 'The Postgres schema to use for system-related actions (like domain management)',
63
+ format: String,
64
+ default: 'takaro',
65
+ env: 'POSTGRES_SYSTEM_SCHEMA',
66
+ },
67
+ baseDomainSchema: {
68
+ doc: 'String used as base for creating name of domain-scoped schemas',
69
+ format: String,
70
+ default: 'domain_',
71
+ env: 'POSTGRES_BASE_DOMAIN_SCHEMA',
72
+ },
73
+ encryptionKey: {
74
+ doc: 'Encryption key used for encrypting sensitive data',
75
+ format: String,
76
+ default: null,
77
+ env: 'POSTGRES_ENCRYPTION_KEY',
78
+ },
79
+ };
80
+ export const config = new Config([configSchema, baseConfigConvict]);
81
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAqBxE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,eAAe;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,eAAe;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,eAAe;SACrB;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,mBAAmB;SACzB;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,aAAa;SACnB;KACF;IACD,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,YAAY;SAClB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,8BAA8B;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,YAAY;SAClB;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,kCAAkC;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,gBAAgB;SACtB;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,kCAAkC;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,gBAAgB;SACtB;KACF;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,gFAAgF;QACrF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,wBAAwB;KAC9B;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,gEAAgE;QACrE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,6BAA6B;KACnC;IACD,aAAa,EAAE;QACb,GAAG,EAAE,mDAAmD;QACxD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,yBAAyB;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function encrypt(value: string): Promise<string>;
2
+ export declare function decrypt(value: string): Promise<string>;
3
+ export declare function hash(value: string): Promise<string>;
4
+ export declare function compareHashed(value: string, hash: string): Promise<boolean>;
@@ -0,0 +1,24 @@
1
+ import { config } from './config.js';
2
+ import { getKnex } from './knex.js';
3
+ export async function encrypt(value) {
4
+ const knex = await getKnex();
5
+ const res = await knex.raw('SELECT PGP_SYM_ENCRYPT(?,?) AS value', [value, config.get('encryptionKey')]);
6
+ return res.rows[0].value;
7
+ }
8
+ export async function decrypt(value) {
9
+ const knex = await getKnex();
10
+ const res = await knex.raw('SELECT PGP_SYM_DECRYPT(?,?) AS value', [value, config.get('encryptionKey')]);
11
+ return res.rows[0].value;
12
+ }
13
+ export async function hash(value) {
14
+ const knex = await getKnex();
15
+ // eslint-disable-next-line quotes
16
+ const res = await knex.raw("SELECT crypt(?, gen_salt('bf')) as value", [value]);
17
+ return res.rows[0].value;
18
+ }
19
+ export async function compareHashed(value, hash) {
20
+ const knex = await getKnex();
21
+ const res = await knex.raw('SELECT crypt(?, ?) = ? as result', [value, hash, hash]);
22
+ return res.rows[0].result;
23
+ }
24
+ //# sourceMappingURL=encryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../src/encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa;IACzC,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa;IACzC,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAa;IACtC,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,kCAAkC;IAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,IAAY;IAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { errors } from '@takaro/util';
2
+ export declare function parseCheckViolationError(error: unknown, constraintName: string): errors.BadRequestError | null;
@@ -0,0 +1,11 @@
1
+ import { errors } from '@takaro/util';
2
+ export function parseCheckViolationError(error, constraintName) {
3
+ if (!(error instanceof Error)) {
4
+ return null;
5
+ }
6
+ if (error.name === 'CheckViolationError') {
7
+ return new errors.BadRequestError(`Check constraint "${constraintName}" failed`);
8
+ }
9
+ return null;
10
+ }
11
+ //# sourceMappingURL=errorTypeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorTypeGuards.js","sourceRoot":"","sources":["../src/errorTypeGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,UAAU,wBAAwB,CAAC,KAAc,EAAE,cAAsB;IAC7E,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACzC,OAAO,IAAI,MAAM,CAAC,eAAe,CAAC,qBAAqB,cAAc,UAAU,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/knex.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import knexPkg from 'knex';
2
+ import { TakaroModel } from './TakaroModel.js';
3
+ type KnexClient = knexPkg.Knex<TakaroModel, unknown[]>;
4
+ export declare function getKnexOptions(extra?: Record<string, unknown>): {
5
+ client: string;
6
+ connection: {
7
+ host: string;
8
+ port: number;
9
+ user: string;
10
+ password: string;
11
+ database: string;
12
+ };
13
+ };
14
+ export declare function getKnex(): Promise<KnexClient>;
15
+ export declare function disconnectKnex(): Promise<void>;
16
+ export {};
package/dist/knex.js ADDED
@@ -0,0 +1,46 @@
1
+ import knexPkg from 'knex';
2
+ import { config } from './config.js';
3
+ import { logger, health } from '@takaro/util';
4
+ const log = logger('sql');
5
+ const { knex: createKnex } = knexPkg;
6
+ export function getKnexOptions(extra = {}) {
7
+ const opts = {
8
+ client: 'pg',
9
+ connection: {
10
+ host: config.get('postgres.host'),
11
+ port: config.get('postgres.port'),
12
+ user: config.get('postgres.user'),
13
+ password: config.get('postgres.password'),
14
+ database: config.get('postgres.database'),
15
+ },
16
+ ...extra,
17
+ };
18
+ return opts;
19
+ }
20
+ let cachedKnex = null;
21
+ export async function getKnex() {
22
+ if (cachedKnex)
23
+ return cachedKnex;
24
+ log.debug('Missed knex cache, creating new client');
25
+ const knex = createKnex(getKnexOptions());
26
+ cachedKnex = knex;
27
+ health.registerHook('db', async () => {
28
+ try {
29
+ await knex.raw('SELECT 1');
30
+ return true;
31
+ }
32
+ catch (error) {
33
+ log.error(error);
34
+ return false;
35
+ }
36
+ });
37
+ return cachedKnex;
38
+ }
39
+ export async function disconnectKnex() {
40
+ if (!cachedKnex)
41
+ return;
42
+ await cachedKnex.destroy();
43
+ cachedKnex = null;
44
+ log.info('Disconnected knex');
45
+ }
46
+ //# sourceMappingURL=knex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knex.js","sourceRoot":"","sources":["../src/knex.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,MAAM,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;AAIrC,MAAM,UAAU,cAAc,CAAC,QAAiC,EAAE;IAChE,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;SAC1C;QACD,GAAG,KAAK;KACT,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1C,UAAU,GAAG,IAAI,CAAC;IAElB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IAC3B,UAAU,GAAG,IAAI,CAAC;IAClB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChC,CAAC"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export { TakaroModel, NOT_DOMAIN_SCOPED_TakaroModel } from './TakaroModel.js';
2
+ export { ITakaroQuery, QueryBuilder, SortDirection } from './queryBuilder.js';
3
+ export { getKnex, disconnectKnex } from './knex.js';
4
+ export { migrate, migrateUndo } from './migrations/index.js';
5
+ export * from './encryption.js';
6
+ export { configSchema, IDbConfig } from './config.js';
7
+ export { Redis } from './redis.js';
8
+ export * from './errorTypeGuards.js';
package/dist/main.js ADDED
@@ -0,0 +1,9 @@
1
+ export { TakaroModel, NOT_DOMAIN_SCOPED_TakaroModel } from './TakaroModel.js';
2
+ export { ITakaroQuery, QueryBuilder, SortDirection } from './queryBuilder.js';
3
+ export { getKnex, disconnectKnex } from './knex.js';
4
+ export { migrate, migrateUndo } from './migrations/index.js';
5
+ export * from './encryption.js';
6
+ export { configSchema } from './config.js';
7
+ export { Redis } from './redis.js';
8
+ export * from './errorTypeGuards.js';
9
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE7D,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function migrate(): Promise<void>;
2
+ export declare function migrateUndo(): Promise<void>;
@@ -0,0 +1,59 @@
1
+ import { getKnex } from '../knex.js';
2
+ import { readdir } from 'fs/promises';
3
+ import path from 'node:path';
4
+ import { logger } from '@takaro/util';
5
+ import * as url from 'url';
6
+ const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
7
+ const log = logger('db:migrations');
8
+ class TakaroMigrationSource {
9
+ constructor() {
10
+ // Hack to get around ts compiler/monorepo/dynamic import weirdness
11
+ // See: https://github.com/TypeStrong/ts-node/discussions/1290
12
+ this.dynamicImport = new Function('specifier', 'return import(specifier)');
13
+ }
14
+ async getMigrations() {
15
+ const folderPath = path.join(__dirname, 'sql');
16
+ const files = await readdir(folderPath);
17
+ const migrations = files
18
+ .filter((file) => file.endsWith('.js'))
19
+ .map((file) => {
20
+ return this.dynamicImport(`${folderPath}/${file}`).then((migration) => {
21
+ return {
22
+ name: file,
23
+ up: migration.up,
24
+ down: migration.down,
25
+ };
26
+ });
27
+ });
28
+ return Promise.all(migrations);
29
+ }
30
+ getMigrationName(migration) {
31
+ return migration.name;
32
+ }
33
+ async getMigration(migration) {
34
+ return migration;
35
+ }
36
+ }
37
+ export async function migrate() {
38
+ const knex = await getKnex();
39
+ knex.on('query', (queryData) => {
40
+ log.debug(queryData.sql);
41
+ });
42
+ await knex.migrate.latest({
43
+ migrationSource: new TakaroMigrationSource(),
44
+ });
45
+ await knex.destroy();
46
+ log.info('Migrations complete');
47
+ }
48
+ export async function migrateUndo() {
49
+ const knex = await getKnex();
50
+ knex.on('query', (queryData) => {
51
+ log.debug(queryData.sql);
52
+ });
53
+ await knex.migrate.down({
54
+ migrationSource: new TakaroMigrationSource(),
55
+ });
56
+ await knex.destroy();
57
+ log.info('Migrations rollback complete');
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAQpC,MAAM,qBAAqB;IAA3B;QACE,mEAAmE;QACnE,8DAA8D;QACtD,kBAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;IA0BhF,CAAC;IAxBC,KAAK,CAAC,aAAa;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAqB,EAAE,EAAE;gBAChF,OAAO;oBACL,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACL,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB,CAAC,SAAqB;QACpC,OAAO,SAAS,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAqB;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;QAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACxB,eAAe,EAAE,IAAI,qBAAqB,EAAE;KAC7C,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;QAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtB,eAAe,EAAE,IAAI,qBAAqB,EAAE;KAC7C,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
@@ -0,0 +1,155 @@
1
+ export async function up(knex) {
2
+ await knex.schema.createTable('domains', (table) => {
3
+ table.timestamps(true, true, true);
4
+ table.string('id').primary();
5
+ table.string('name').unique();
6
+ });
7
+ await knex.schema.createTable('users', (table) => {
8
+ table.timestamps(true, true, true);
9
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
10
+ table.string('name').notNullable();
11
+ table.string('email').unique();
12
+ table.string('password').notNullable();
13
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
14
+ });
15
+ await knex.schema.createTable('roles', (table) => {
16
+ table.timestamps(true, true, true);
17
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
18
+ table.string('name');
19
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
20
+ table.unique(['name', 'domain']);
21
+ });
22
+ await knex.schema.createTable('capabilityOnRole', (table) => {
23
+ table.timestamps(true, true, true);
24
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
25
+ table.uuid('roleId').references('id').inTable('roles').onDelete('CASCADE');
26
+ table
27
+ .enu('capability', [
28
+ 'ROOT',
29
+ 'MANAGE_USERS',
30
+ 'READ_USERS',
31
+ 'MANAGE_ROLES',
32
+ 'READ_ROLES',
33
+ 'MANAGE_GAMESERVERS',
34
+ 'READ_GAMESERVERS',
35
+ 'READ_FUNCTIONS',
36
+ 'MANAGE_FUNCTIONS',
37
+ 'READ_CRONJOBS',
38
+ 'MANAGE_CRONJOBS',
39
+ 'READ_HOOKS',
40
+ 'MANAGE_HOOKS',
41
+ 'READ_MODULES',
42
+ 'MANAGE_MODULES',
43
+ 'READ_PLAYERS',
44
+ 'MANAGE_PLAYERS',
45
+ ])
46
+ .notNullable();
47
+ table.primary(['roleId', 'capability']);
48
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
49
+ });
50
+ await knex.schema.createTable('roleOnUser', (table) => {
51
+ table.timestamps(true, true, true);
52
+ table.uuid('userId').references('users.id').onDelete('CASCADE').notNullable();
53
+ table.uuid('roleId').references('roles.id').onDelete('CASCADE').notNullable();
54
+ table.primary(['userId', 'roleId']);
55
+ });
56
+ await knex.schema.createTable('gameservers', (table) => {
57
+ table.timestamps(true, true, true);
58
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
59
+ table.string('name');
60
+ table.enu('type', ['MOCK', 'SEVENDAYSTODIE', 'RUST']).notNullable();
61
+ table.binary('connectionInfo').notNullable();
62
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
63
+ table.unique(['name', 'domain']);
64
+ });
65
+ await knex.schema.createTable('players', (table) => {
66
+ table.timestamps(true, true, true);
67
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
68
+ table.string('name').notNullable();
69
+ table.string('steamId');
70
+ table.string('xboxLiveId');
71
+ table.string('epicOnlineServicesId');
72
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
73
+ });
74
+ await knex.schema.createTable('playerOnGameServer', (table) => {
75
+ table.timestamps(true, true, true);
76
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
77
+ table.uuid('playerId').references('players.id').onDelete('CASCADE').notNullable();
78
+ table.uuid('gameServerId').references('gameservers.id').onDelete('CASCADE').notNullable();
79
+ table.string('gameId').notNullable();
80
+ table.primary(['playerId', 'gameServerId']);
81
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
82
+ });
83
+ await knex.schema.createTable('functions', (table) => {
84
+ table.timestamps(true, true, true);
85
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
86
+ table.text('code').notNullable();
87
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
88
+ });
89
+ await knex.schema.createTable('modules', (table) => {
90
+ table.timestamps(true, true, true);
91
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
92
+ table.string('name');
93
+ table.boolean('enabled').notNullable().defaultTo(true);
94
+ table.json('config').defaultTo('{}');
95
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
96
+ table.unique(['name', 'domain']);
97
+ });
98
+ await knex.schema.createTable('cronJobs', (table) => {
99
+ table.timestamps(true, true, true);
100
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
101
+ table.string('name');
102
+ table.boolean('enabled').notNullable().defaultTo(true);
103
+ table.string('temporalValue').notNullable();
104
+ table.uuid('moduleId').references('modules.id').onDelete('CASCADE').notNullable();
105
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
106
+ table.unique(['name', 'moduleId']);
107
+ });
108
+ await knex.schema.createTable('hooks', (table) => {
109
+ table.timestamps(true, true, true);
110
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
111
+ table.string('name');
112
+ table.boolean('enabled').notNullable().defaultTo(true);
113
+ table.enu('eventType', ['log', 'player-connected', 'player-disconnected']).notNullable();
114
+ table.string('regex').notNullable();
115
+ table.uuid('moduleId').references('modules.id').onDelete('CASCADE').notNullable();
116
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
117
+ table.unique(['name', 'moduleId']);
118
+ });
119
+ await knex.schema.createTable('commands', (table) => {
120
+ table.timestamps(true, true, true);
121
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
122
+ table.string('name');
123
+ table.boolean('enabled').notNullable().defaultTo(true);
124
+ table.uuid('moduleId').references('modules.id').onDelete('CASCADE').notNullable();
125
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
126
+ table.unique(['name', 'moduleId']);
127
+ });
128
+ await knex.schema.createTable('functionAssignments', (table) => {
129
+ table.timestamps(true, true, true);
130
+ table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
131
+ table.uuid('function').references('functions.id').onDelete('CASCADE').notNullable().unique();
132
+ table.uuid('cronJob').references('cronJobs.id').onDelete('CASCADE');
133
+ table.uuid('hook').references('hooks.id').onDelete('CASCADE');
134
+ table.uuid('command').references('commands.id').onDelete('CASCADE');
135
+ table.check('(?? IS NOT NULL) OR (?? IS NOT NULL) OR (?? IS NOT NULL)', ['cronJob', 'hook', 'command']);
136
+ table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
137
+ });
138
+ await knex.raw('CREATE EXTENSION IF NOT EXISTS pgcrypto');
139
+ }
140
+ export async function down(knex) {
141
+ await knex.schema.dropTable('domains');
142
+ await knex.schema.dropTable('functionAssignments');
143
+ await knex.schema.dropTable('commands');
144
+ await knex.schema.dropTable('hooks');
145
+ await knex.schema.dropTable('cronJobs');
146
+ await knex.schema.dropTable('modules');
147
+ await knex.schema.dropTable('functions');
148
+ await knex.schema.dropTable('playerOnGameServer');
149
+ await knex.schema.dropTable('players');
150
+ await knex.schema.dropTable('gameservers');
151
+ await knex.schema.dropTable('roleOnUser');
152
+ await knex.schema.dropTable('roles');
153
+ await knex.schema.dropTable('users');
154
+ }
155
+ //# sourceMappingURL=20220827191938_init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20220827191938_init.js","sourceRoot":"","sources":["../../../src/migrations/sql/20220827191938_init.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1D,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3E,KAAK;aACF,GAAG,CAAC,YAAY,EAAE;YACjB,MAAM;YACN,cAAc;YACd,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,oBAAoB;YACpB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,gBAAgB;SACjB,CAAC;aACD,WAAW,EAAE,CAAC;QAEjB,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QACpD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9E,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACrD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACrC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5D,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAE1F,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAClF,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACzF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAClF,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAClF,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7D,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpE,KAAK,CAAC,KAAK,CAAC,0DAA0D,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACxG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;