@takaro/db 0.0.0-next.09a7ca1
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.
- package/README.md +1 -0
- package/dist/TakaroModel.d.ts +16 -0
- package/dist/TakaroModel.d.ts.map +1 -0
- package/dist/TakaroModel.js +25 -0
- package/dist/TakaroModel.js.map +1 -0
- package/dist/config.d.ts +120 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +99 -0
- package/dist/config.js.map +1 -0
- package/dist/encryption.d.ts +5 -0
- package/dist/encryption.d.ts.map +1 -0
- package/dist/encryption.js +23 -0
- package/dist/encryption.js.map +1 -0
- package/dist/errorTypeGuards.d.ts +3 -0
- package/dist/errorTypeGuards.d.ts.map +1 -0
- package/dist/errorTypeGuards.js +11 -0
- package/dist/errorTypeGuards.js.map +1 -0
- package/dist/knex.d.ts +9 -0
- package/dist/knex.d.ts.map +1 -0
- package/dist/knex.js +50 -0
- package/dist/knex.js.map +1 -0
- package/dist/main.d.ts +9 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +9 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations/index.d.ts +3 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +59 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/sql/20220827191938_init.d.ts +4 -0
- package/dist/migrations/sql/20220827191938_init.d.ts.map +1 -0
- package/dist/migrations/sql/20220827191938_init.js +155 -0
- package/dist/migrations/sql/20220827191938_init.js.map +1 -0
- package/dist/migrations/sql/20221019173729_settings.d.ts +4 -0
- package/dist/migrations/sql/20221019173729_settings.d.ts.map +1 -0
- package/dist/migrations/sql/20221019173729_settings.js +61 -0
- package/dist/migrations/sql/20221019173729_settings.js.map +1 -0
- package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts +4 -0
- package/dist/migrations/sql/20221029103554_refactor_function_assignments.d.ts.map +1 -0
- package/dist/migrations/sql/20221029103554_refactor_function_assignments.js +33 -0
- package/dist/migrations/sql/20221029103554_refactor_function_assignments.js.map +1 -0
- package/dist/migrations/sql/20221102190532_commands.d.ts +4 -0
- package/dist/migrations/sql/20221102190532_commands.d.ts.map +1 -0
- package/dist/migrations/sql/20221102190532_commands.js +58 -0
- package/dist/migrations/sql/20221102190532_commands.js.map +1 -0
- package/dist/migrations/sql/20221203135001-builtin_modules.d.ts +4 -0
- package/dist/migrations/sql/20221203135001-builtin_modules.d.ts.map +1 -0
- package/dist/migrations/sql/20221203135001-builtin_modules.js +44 -0
- package/dist/migrations/sql/20221203135001-builtin_modules.js.map +1 -0
- package/dist/migrations/sql/20230308183400-persistent-variables.d.ts +4 -0
- package/dist/migrations/sql/20230308183400-persistent-variables.d.ts.map +1 -0
- package/dist/migrations/sql/20230308183400-persistent-variables.js +63 -0
- package/dist/migrations/sql/20230308183400-persistent-variables.js.map +1 -0
- package/dist/migrations/sql/20230314183400-auth-ory.d.ts +4 -0
- package/dist/migrations/sql/20230314183400-auth-ory.d.ts.map +1 -0
- package/dist/migrations/sql/20230314183400-auth-ory.js +23 -0
- package/dist/migrations/sql/20230314183400-auth-ory.js.map +1 -0
- package/dist/migrations/sql/20230325156123_command-arguments.d.ts +4 -0
- package/dist/migrations/sql/20230325156123_command-arguments.d.ts.map +1 -0
- package/dist/migrations/sql/20230325156123_command-arguments.js +19 -0
- package/dist/migrations/sql/20230325156123_command-arguments.js.map +1 -0
- package/dist/migrations/sql/20230407132022-module-descriptions.d.ts +4 -0
- package/dist/migrations/sql/20230407132022-module-descriptions.d.ts.map +1 -0
- package/dist/migrations/sql/20230407132022-module-descriptions.js +11 -0
- package/dist/migrations/sql/20230407132022-module-descriptions.js.map +1 -0
- package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts +4 -0
- package/dist/migrations/sql/20230407143733-module-json-schema-config.d.ts.map +1 -0
- package/dist/migrations/sql/20230407143733-module-json-schema-config.js +14 -0
- package/dist/migrations/sql/20230407143733-module-json-schema-config.js.map +1 -0
- package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts +4 -0
- package/dist/migrations/sql/20230407173055-hook-regex-optional.d.ts.map +1 -0
- package/dist/migrations/sql/20230407173055-hook-regex-optional.js +11 -0
- package/dist/migrations/sql/20230407173055-hook-regex-optional.js.map +1 -0
- package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts +4 -0
- package/dist/migrations/sql/20230415154935-cronjob-configs.d.ts.map +1 -0
- package/dist/migrations/sql/20230415154935-cronjob-configs.js +16 -0
- package/dist/migrations/sql/20230415154935-cronjob-configs.js.map +1 -0
- package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts +4 -0
- package/dist/migrations/sql/20230503132906-variables-extra-meta.d.ts.map +1 -0
- package/dist/migrations/sql/20230503132906-variables-extra-meta.js +26 -0
- package/dist/migrations/sql/20230503132906-variables-extra-meta.js.map +1 -0
- package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts +4 -0
- package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.d.ts.map +1 -0
- package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js +8 -0
- package/dist/migrations/sql/20230604130951-fix-hook-eventtypes.js.map +1 -0
- package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts +4 -0
- package/dist/migrations/sql/20230617081049-discordId-for-users.d.ts.map +1 -0
- package/dist/migrations/sql/20230617081049-discordId-for-users.js +14 -0
- package/dist/migrations/sql/20230617081049-discordId-for-users.js.map +1 -0
- package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts +4 -0
- package/dist/migrations/sql/20230618053611-discord-funtionality.d.ts.map +1 -0
- package/dist/migrations/sql/20230618053611-discord-funtionality.js +26 -0
- package/dist/migrations/sql/20230618053611-discord-funtionality.js.map +1 -0
- package/dist/migrations/sql/20230622192402-discord-hooks.d.ts +4 -0
- package/dist/migrations/sql/20230622192402-discord-hooks.d.ts.map +1 -0
- package/dist/migrations/sql/20230622192402-discord-hooks.js +14 -0
- package/dist/migrations/sql/20230622192402-discord-hooks.js.map +1 -0
- package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts +4 -0
- package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.d.ts.map +1 -0
- package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js +19 -0
- package/dist/migrations/sql/20230707081218-playerOnGameServerExtension.js.map +1 -0
- package/dist/migrations/sql/20230710174340-events.d.ts +4 -0
- package/dist/migrations/sql/20230710174340-events.d.ts.map +1 -0
- package/dist/migrations/sql/20230710174340-events.js +16 -0
- package/dist/migrations/sql/20230710174340-events.js.map +1 -0
- package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts +4 -0
- package/dist/migrations/sql/20230712061220-roles-permissions-extension.d.ts.map +1 -0
- package/dist/migrations/sql/20230712061220-roles-permissions-extension.js +43 -0
- package/dist/migrations/sql/20230712061220-roles-permissions-extension.js.map +1 -0
- package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts +4 -0
- package/dist/migrations/sql/20230713184927-variables-modulescoped.d.ts.map +1 -0
- package/dist/migrations/sql/20230713184927-variables-modulescoped.js +27 -0
- package/dist/migrations/sql/20230713184927-variables-modulescoped.js.map +1 -0
- package/dist/migrations/sql/20230714045136-domain-index.d.ts +4 -0
- package/dist/migrations/sql/20230714045136-domain-index.d.ts.map +1 -0
- package/dist/migrations/sql/20230714045136-domain-index.js +37 -0
- package/dist/migrations/sql/20230714045136-domain-index.js.map +1 -0
- package/dist/migrations/sql/20230714045727-events-index.d.ts +4 -0
- package/dist/migrations/sql/20230714045727-events-index.d.ts.map +1 -0
- package/dist/migrations/sql/20230714045727-events-index.js +17 -0
- package/dist/migrations/sql/20230714045727-events-index.js.map +1 -0
- package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts +4 -0
- package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.d.ts.map +1 -0
- package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js +32 -0
- package/dist/migrations/sql/20230715102519-module-permissions-extra-fields.js.map +1 -0
- package/dist/migrations/sql/20230724062109-roles-constraints.d.ts +4 -0
- package/dist/migrations/sql/20230724062109-roles-constraints.d.ts.map +1 -0
- package/dist/migrations/sql/20230724062109-roles-constraints.js +14 -0
- package/dist/migrations/sql/20230724062109-roles-constraints.js.map +1 -0
- package/dist/migrations/sql/20230811095701-userId-on-events.d.ts +4 -0
- package/dist/migrations/sql/20230811095701-userId-on-events.d.ts.map +1 -0
- package/dist/migrations/sql/20230811095701-userId-on-events.js +12 -0
- package/dist/migrations/sql/20230811095701-userId-on-events.js.map +1 -0
- package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts +4 -0
- package/dist/migrations/sql/20230921123717-count-for-permissions.d.ts.map +1 -0
- package/dist/migrations/sql/20230921123717-count-for-permissions.js +84 -0
- package/dist/migrations/sql/20230921123717-count-for-permissions.js.map +1 -0
- package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts +37 -0
- package/dist/migrations/sql/20231111102812-details-system-permissions.d.ts.map +1 -0
- package/dist/migrations/sql/20231111102812-details-system-permissions.js +179 -0
- package/dist/migrations/sql/20231111102812-details-system-permissions.js.map +1 -0
- package/dist/migrations/sql/20231114151343-system-roles.d.ts +4 -0
- package/dist/migrations/sql/20231114151343-system-roles.d.ts.map +1 -0
- package/dist/migrations/sql/20231114151343-system-roles.js +41 -0
- package/dist/migrations/sql/20231114151343-system-roles.js.map +1 -0
- package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts +37 -0
- package/dist/migrations/sql/20231118082301-add-new-permissions.d.ts.map +1 -0
- package/dist/migrations/sql/20231118082301-add-new-permissions.js +186 -0
- package/dist/migrations/sql/20231118082301-add-new-permissions.js.map +1 -0
- package/dist/migrations/sql/20231119115037-timedRoles.d.ts +4 -0
- package/dist/migrations/sql/20231119115037-timedRoles.d.ts.map +1 -0
- package/dist/migrations/sql/20231119115037-timedRoles.js +19 -0
- package/dist/migrations/sql/20231119115037-timedRoles.js.map +1 -0
- package/dist/migrations/sql/20231123150854-economy-base.d.ts +4 -0
- package/dist/migrations/sql/20231123150854-economy-base.d.ts.map +1 -0
- package/dist/migrations/sql/20231123150854-economy-base.js +13 -0
- package/dist/migrations/sql/20231123150854-economy-base.js.map +1 -0
- package/dist/migrations/sql/20231123171611-economy-settings.d.ts +4 -0
- package/dist/migrations/sql/20231123171611-economy-settings.d.ts.map +1 -0
- package/dist/migrations/sql/20231123171611-economy-settings.js +13 -0
- package/dist/migrations/sql/20231123171611-economy-settings.js.map +1 -0
- package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts +4 -0
- package/dist/migrations/sql/20231124140441-json-module-assignments.d.ts.map +1 -0
- package/dist/migrations/sql/20231124140441-json-module-assignments.js +25 -0
- package/dist/migrations/sql/20231124140441-json-module-assignments.js.map +1 -0
- package/dist/migrations/sql/20231208114507-settings-refactor.d.ts +4 -0
- package/dist/migrations/sql/20231208114507-settings-refactor.d.ts.map +1 -0
- package/dist/migrations/sql/20231208114507-settings-refactor.js +95 -0
- package/dist/migrations/sql/20231208114507-settings-refactor.js.map +1 -0
- package/dist/migrations/sql/20231208171234-game-items.d.ts +4 -0
- package/dist/migrations/sql/20231208171234-game-items.d.ts.map +1 -0
- package/dist/migrations/sql/20231208171234-game-items.js +18 -0
- package/dist/migrations/sql/20231208171234-game-items.js.map +1 -0
- package/dist/migrations/sql/20231216100720-player-inventory.d.ts +4 -0
- package/dist/migrations/sql/20231216100720-player-inventory.d.ts.map +1 -0
- package/dist/migrations/sql/20231216100720-player-inventory.js +14 -0
- package/dist/migrations/sql/20231216100720-player-inventory.js.map +1 -0
- package/dist/migrations/sql/20231222180438-steam-data.d.ts +4 -0
- package/dist/migrations/sql/20231222180438-steam-data.d.ts.map +1 -0
- package/dist/migrations/sql/20231222180438-steam-data.js +25 -0
- package/dist/migrations/sql/20231222180438-steam-data.js.map +1 -0
- package/dist/migrations/sql/20231223132631-pog-online.d.ts +4 -0
- package/dist/migrations/sql/20231223132631-pog-online.d.ts.map +1 -0
- package/dist/migrations/sql/20231223132631-pog-online.js +11 -0
- package/dist/migrations/sql/20231223132631-pog-online.js.map +1 -0
- package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts +4 -0
- package/dist/migrations/sql/20231223212031-unique-index-item-def.d.ts.map +1 -0
- package/dist/migrations/sql/20231223212031-unique-index-item-def.js +24 -0
- package/dist/migrations/sql/20231223212031-unique-index-item-def.js.map +1 -0
- package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts +4 -0
- package/dist/migrations/sql/20231224135126-gameserver-online-status.d.ts.map +1 -0
- package/dist/migrations/sql/20231224135126-gameserver-online-status.js +11 -0
- package/dist/migrations/sql/20231224135126-gameserver-online-status.js.map +1 -0
- package/dist/migrations/sql/20231224155226-unique-pog.d.ts +4 -0
- package/dist/migrations/sql/20231224155226-unique-pog.d.ts.map +1 -0
- package/dist/migrations/sql/20231224155226-unique-pog.js +24 -0
- package/dist/migrations/sql/20231224155226-unique-pog.js.map +1 -0
- package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts +4 -0
- package/dist/migrations/sql/20231225140650-extra-ip-info.d.ts.map +1 -0
- package/dist/migrations/sql/20231225140650-extra-ip-info.js +23 -0
- package/dist/migrations/sql/20231225140650-extra-ip-info.js.map +1 -0
- package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts +4 -0
- package/dist/migrations/sql/20231227144315-unique-constraints-player.d.ts.map +1 -0
- package/dist/migrations/sql/20231227144315-unique-constraints-player.js +67 -0
- package/dist/migrations/sql/20231227144315-unique-constraints-player.js.map +1 -0
- package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts +4 -0
- package/dist/migrations/sql/20231229144707-more-player-constraints.d.ts.map +1 -0
- package/dist/migrations/sql/20231229144707-more-player-constraints.js +17 -0
- package/dist/migrations/sql/20231229144707-more-player-constraints.js.map +1 -0
- package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts +4 -0
- package/dist/migrations/sql/20240101162751-add-settings-constraint.d.ts.map +1 -0
- package/dist/migrations/sql/20240101162751-add-settings-constraint.js +34 -0
- package/dist/migrations/sql/20240101162751-add-settings-constraint.js.map +1 -0
- package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts +4 -0
- package/dist/migrations/sql/20240105130846-remove-some-module-perms.d.ts.map +1 -0
- package/dist/migrations/sql/20240105130846-remove-some-module-perms.js +80 -0
- package/dist/migrations/sql/20240105130846-remove-some-module-perms.js.map +1 -0
- package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts +4 -0
- package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.d.ts.map +1 -0
- package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js +11 -0
- package/dist/migrations/sql/20240116141936-add-ui-schema-to-module.js.map +1 -0
- package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts +4 -0
- package/dist/migrations/sql/20240119152426-remove-hook-check.d.ts.map +1 -0
- package/dist/migrations/sql/20240119152426-remove-hook-check.js +14 -0
- package/dist/migrations/sql/20240119152426-remove-hook-check.js.map +1 -0
- package/dist/migrations/sql/20240121142329-move-ip-history.d.ts +4 -0
- package/dist/migrations/sql/20240121142329-move-ip-history.d.ts.map +1 -0
- package/dist/migrations/sql/20240121142329-move-ip-history.js +44 -0
- package/dist/migrations/sql/20240121142329-move-ip-history.js.map +1 -0
- package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts +4 -0
- package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.d.ts.map +1 -0
- package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js +13 -0
- package/dist/migrations/sql/20240202101208-rename-economy-to-economyUtils.js.map +1 -0
- package/dist/migrations/sql/20240216120143-domain-state.d.ts +4 -0
- package/dist/migrations/sql/20240216120143-domain-state.d.ts.map +1 -0
- package/dist/migrations/sql/20240216120143-domain-state.js +11 -0
- package/dist/migrations/sql/20240216120143-domain-state.js.map +1 -0
- package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts +4 -0
- package/dist/migrations/sql/20240229141340-looser-fks-events.d.ts.map +1 -0
- package/dist/migrations/sql/20240229141340-looser-fks-events.js +18 -0
- package/dist/migrations/sql/20240229141340-looser-fks-events.js.map +1 -0
- package/dist/migrations/sql/20240301063505-module-functions.d.ts +4 -0
- package/dist/migrations/sql/20240301063505-module-functions.d.ts.map +1 -0
- package/dist/migrations/sql/20240301063505-module-functions.js +14 -0
- package/dist/migrations/sql/20240301063505-module-functions.js.map +1 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts +4 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.d.ts.map +1 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.js +17 -0
- package/dist/migrations/sql/20240613175009-lastseen-users-pog.js.map +1 -0
- package/dist/migrations/sql/20240614143517-shop.d.ts +4 -0
- package/dist/migrations/sql/20240614143517-shop.d.ts.map +1 -0
- package/dist/migrations/sql/20240614143517-shop.js +29 -0
- package/dist/migrations/sql/20240614143517-shop.js.map +1 -0
- package/dist/migrations/sql/20240615145045-user-player-link.d.ts +4 -0
- package/dist/migrations/sql/20240615145045-user-player-link.d.ts.map +1 -0
- package/dist/migrations/sql/20240615145045-user-player-link.js +17 -0
- package/dist/migrations/sql/20240615145045-user-player-link.js.map +1 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts +4 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.d.ts.map +1 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js +11 -0
- package/dist/migrations/sql/20240622132552-fix-ip-history-fk.js.map +1 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts +4 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.d.ts.map +1 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.js +11 -0
- package/dist/migrations/sql/20240626200803-player-inventory-idx.js.map +1 -0
- package/dist/migrations/sql/20240628174914-shop-orders.d.ts +4 -0
- package/dist/migrations/sql/20240628174914-shop-orders.d.ts.map +1 -0
- package/dist/migrations/sql/20240628174914-shop-orders.js +16 -0
- package/dist/migrations/sql/20240628174914-shop-orders.js.map +1 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts +4 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.d.ts.map +1 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.js +26 -0
- package/dist/migrations/sql/20240705140358-teleports-public-refactor.js.map +1 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.d.ts +4 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.d.ts.map +1 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.js +11 -0
- package/dist/migrations/sql/20240710181429-events-name-idx.js.map +1 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts +4 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.d.ts.map +1 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js +26 -0
- package/dist/migrations/sql/20240711181423-shop-orders-multi-listing.js.map +1 -0
- package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts +4 -0
- package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.d.ts.map +1 -0
- package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.js +7 -0
- package/dist/migrations/sql/20240718121004-delete-read-gameservers-perm.js.map +1 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts +4 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.d.ts.map +1 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js +13 -0
- package/dist/migrations/sql/20240718150807-listing-deleted-and-draft-status.js.map +1 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts +4 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.d.ts.map +1 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.js +19 -0
- package/dist/migrations/sql/20240720135010-acting-user-and-module.js.map +1 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts +4 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.d.ts.map +1 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js +14 -0
- package/dist/migrations/sql/20240811061243-domain-rate-limit-setting.js.map +1 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts +4 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.d.ts.map +1 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.js +16 -0
- package/dist/migrations/sql/20240814133931-domain-ext-ref.js.map +1 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.d.ts +4 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.d.ts.map +1 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.js +11 -0
- package/dist/migrations/sql/20240816171220-player-steam-level.js.map +1 -0
- package/dist/migrations/sql/20240830081157-variable-expiry.d.ts +4 -0
- package/dist/migrations/sql/20240830081157-variable-expiry.d.ts.map +1 -0
- package/dist/migrations/sql/20240830081157-variable-expiry.js +11 -0
- package/dist/migrations/sql/20240830081157-variable-expiry.js.map +1 -0
- package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts +4 -0
- package/dist/migrations/sql/20240906125101-gameserver-enable.d.ts.map +1 -0
- package/dist/migrations/sql/20240906125101-gameserver-enable.js +11 -0
- package/dist/migrations/sql/20240906125101-gameserver-enable.js.map +1 -0
- package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts +4 -0
- package/dist/migrations/sql/20240908185212-domain-name-not-unique.d.ts.map +1 -0
- package/dist/migrations/sql/20240908185212-domain-name-not-unique.js +9 -0
- package/dist/migrations/sql/20240908185212-domain-name-not-unique.js.map +1 -0
- package/dist/migrations/sql/20240922110414-player-playtime.d.ts +4 -0
- package/dist/migrations/sql/20240922110414-player-playtime.d.ts.map +1 -0
- package/dist/migrations/sql/20240922110414-player-playtime.js +11 -0
- package/dist/migrations/sql/20240922110414-player-playtime.js.map +1 -0
- package/dist/migrations/sql/20240922133738-add-bans.d.ts +4 -0
- package/dist/migrations/sql/20240922133738-add-bans.d.ts.map +1 -0
- package/dist/migrations/sql/20240922133738-add-bans.js +20 -0
- package/dist/migrations/sql/20240922133738-add-bans.js.map +1 -0
- package/dist/migrations/sql/20240929090313-global-playtime.d.ts +4 -0
- package/dist/migrations/sql/20240929090313-global-playtime.d.ts.map +1 -0
- package/dist/migrations/sql/20240929090313-global-playtime.js +11 -0
- package/dist/migrations/sql/20240929090313-global-playtime.js.map +1 -0
- package/dist/migrations/sql/20240929143849-player-name-null.d.ts +4 -0
- package/dist/migrations/sql/20240929143849-player-name-null.d.ts.map +1 -0
- package/dist/migrations/sql/20240929143849-player-name-null.js +11 -0
- package/dist/migrations/sql/20240929143849-player-name-null.js.map +1 -0
- package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts +4 -0
- package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.d.ts.map +1 -0
- package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.js +38 -0
- package/dist/migrations/sql/20241012183754-shop-orders-belong-to-player.js.map +1 -0
- package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts +4 -0
- package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.d.ts.map +1 -0
- package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.js +52 -0
- package/dist/migrations/sql/20241013173159-add-indexen-for-moduleId.js.map +1 -0
- package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts +4 -0
- package/dist/migrations/sql/20241020133133-make-listing-name-required.d.ts.map +1 -0
- package/dist/migrations/sql/20241020133133-make-listing-name-required.js +13 -0
- package/dist/migrations/sql/20241020133133-make-listing-name-required.js.map +1 -0
- package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts +4 -0
- package/dist/migrations/sql/20241024164331-events-fk-fix.d.ts.map +1 -0
- package/dist/migrations/sql/20241024164331-events-fk-fix.js +14 -0
- package/dist/migrations/sql/20241024164331-events-fk-fix.js.map +1 -0
- package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts +4 -0
- package/dist/migrations/sql/20241030130613-index-for-roleId.d.ts.map +1 -0
- package/dist/migrations/sql/20241030130613-index-for-roleId.js +25 -0
- package/dist/migrations/sql/20241030130613-index-for-roleId.js.map +1 -0
- package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts +4 -0
- package/dist/migrations/sql/20241205201123-gameserver-deletedAt.d.ts.map +1 -0
- package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js +11 -0
- package/dist/migrations/sql/20241205201123-gameserver-deletedAt.js.map +1 -0
- package/dist/migrations/sql/20241330200212-module-versions.d.ts +4 -0
- package/dist/migrations/sql/20241330200212-module-versions.d.ts.map +1 -0
- package/dist/migrations/sql/20241330200212-module-versions.js +329 -0
- package/dist/migrations/sql/20241330200212-module-versions.js.map +1 -0
- package/dist/migrations/sql/20250112102308-generic-gameserver.d.ts +4 -0
- package/dist/migrations/sql/20250112102308-generic-gameserver.d.ts.map +1 -0
- package/dist/migrations/sql/20250112102308-generic-gameserver.js +47 -0
- package/dist/migrations/sql/20250112102308-generic-gameserver.js.map +1 -0
- package/dist/migrations/sql/20250128200529-version-fixes.d.ts +4 -0
- package/dist/migrations/sql/20250128200529-version-fixes.d.ts.map +1 -0
- package/dist/migrations/sql/20250128200529-version-fixes.js +11 -0
- package/dist/migrations/sql/20250128200529-version-fixes.js.map +1 -0
- package/dist/migrations/sql/20250131183251-domain-settings.d.ts +4 -0
- package/dist/migrations/sql/20250131183251-domain-settings.d.ts.map +1 -0
- package/dist/migrations/sql/20250131183251-domain-settings.js +45 -0
- package/dist/migrations/sql/20250131183251-domain-settings.js.map +1 -0
- package/dist/migrations/sql/20250221130042-variable-length.d.ts +17 -0
- package/dist/migrations/sql/20250221130042-variable-length.d.ts.map +1 -0
- package/dist/migrations/sql/20250221130042-variable-length.js +30 -0
- package/dist/migrations/sql/20250221130042-variable-length.js.map +1 -0
- package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts +10 -0
- package/dist/migrations/sql/20250221193144-versions-perf-improvements.d.ts.map +1 -0
- package/dist/migrations/sql/20250221193144-versions-perf-improvements.js +61 -0
- package/dist/migrations/sql/20250221193144-versions-perf-improvements.js.map +1 -0
- package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts +4 -0
- package/dist/migrations/sql/20250223143705-fix-ban-constraint.d.ts.map +1 -0
- package/dist/migrations/sql/20250223143705-fix-ban-constraint.js +37 -0
- package/dist/migrations/sql/20250223143705-fix-ban-constraint.js.map +1 -0
- package/dist/migrations/sql/20250305210650-more-module-metadata.d.ts +4 -0
- package/dist/migrations/sql/20250305210650-more-module-metadata.d.ts.map +1 -0
- package/dist/migrations/sql/20250305210650-more-module-metadata.js +37 -0
- package/dist/migrations/sql/20250305210650-more-module-metadata.js.map +1 -0
- package/dist/migrations/sql/20250307162855-default-systemconfig.d.ts +4 -0
- package/dist/migrations/sql/20250307162855-default-systemconfig.d.ts.map +1 -0
- package/dist/migrations/sql/20250307162855-default-systemconfig.js +11 -0
- package/dist/migrations/sql/20250307162855-default-systemconfig.js.map +1 -0
- package/dist/migrations/sql/20250312184104-unique-external-reference.d.ts +4 -0
- package/dist/migrations/sql/20250312184104-unique-external-reference.d.ts.map +1 -0
- package/dist/migrations/sql/20250312184104-unique-external-reference.js +11 -0
- package/dist/migrations/sql/20250312184104-unique-external-reference.js.map +1 -0
- package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.d.ts +4 -0
- package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.d.ts.map +1 -0
- package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.js +15 -0
- package/dist/migrations/sql/20250314185501-root-users-not-dashboard-user.js.map +1 -0
- package/dist/migrations/sql/20250315191707-fix-constraint-module-items.d.ts +8 -0
- package/dist/migrations/sql/20250315191707-fix-constraint-module-items.d.ts.map +1 -0
- package/dist/migrations/sql/20250315191707-fix-constraint-module-items.js +17 -0
- package/dist/migrations/sql/20250315191707-fix-constraint-module-items.js.map +1 -0
- package/dist/migrations/sql/20250519185149-add-item-indexes.d.ts +13 -0
- package/dist/migrations/sql/20250519185149-add-item-indexes.d.ts.map +1 -0
- package/dist/migrations/sql/20250519185149-add-item-indexes.js +40 -0
- package/dist/migrations/sql/20250519185149-add-item-indexes.js.map +1 -0
- package/dist/migrations/sql/20250524054924-tracking.d.ts +4 -0
- package/dist/migrations/sql/20250524054924-tracking.d.ts.map +1 -0
- package/dist/migrations/sql/20250524054924-tracking.js +75 -0
- package/dist/migrations/sql/20250524054924-tracking.js.map +1 -0
- package/dist/migrations/sql/20250525135204-ban-reason-length.d.ts +4 -0
- package/dist/migrations/sql/20250525135204-ban-reason-length.d.ts.map +1 -0
- package/dist/migrations/sql/20250525135204-ban-reason-length.js +30 -0
- package/dist/migrations/sql/20250525135204-ban-reason-length.js.map +1 -0
- package/dist/migrations/sql/20250605201140-shop-permissions-missing.d.ts +4 -0
- package/dist/migrations/sql/20250605201140-shop-permissions-missing.d.ts.map +1 -0
- package/dist/migrations/sql/20250605201140-shop-permissions-missing.js +18 -0
- package/dist/migrations/sql/20250605201140-shop-permissions-missing.js.map +1 -0
- package/dist/migrations/sql/20250606060546-inventory-tracking.d.ts +4 -0
- package/dist/migrations/sql/20250606060546-inventory-tracking.d.ts.map +1 -0
- package/dist/migrations/sql/20250606060546-inventory-tracking.js +82 -0
- package/dist/migrations/sql/20250606060546-inventory-tracking.js.map +1 -0
- package/dist/migrations/sql/20250613110835-add-platform-id-to-players.d.ts +4 -0
- package/dist/migrations/sql/20250613110835-add-platform-id-to-players.d.ts.map +1 -0
- package/dist/migrations/sql/20250613110835-add-platform-id-to-players.js +43 -0
- package/dist/migrations/sql/20250613110835-add-platform-id-to-players.js.map +1 -0
- package/dist/migrations/sql/20250613203142-add-dimension-to-position.d.ts +4 -0
- package/dist/migrations/sql/20250613203142-add-dimension-to-position.d.ts.map +1 -0
- package/dist/migrations/sql/20250613203142-add-dimension-to-position.js +21 -0
- package/dist/migrations/sql/20250613203142-add-dimension-to-position.js.map +1 -0
- package/dist/migrations/sql/20250614113157-entities.d.ts +4 -0
- package/dist/migrations/sql/20250614113157-entities.d.ts.map +1 -0
- package/dist/migrations/sql/20250614113157-entities.js +36 -0
- package/dist/migrations/sql/20250614113157-entities.js.map +1 -0
- package/dist/migrations/sql/20250629090822-player-query-performance-indices.d.ts +4 -0
- package/dist/migrations/sql/20250629090822-player-query-performance-indices.d.ts.map +1 -0
- package/dist/migrations/sql/20250629090822-player-query-performance-indices.js +31 -0
- package/dist/migrations/sql/20250629090822-player-query-performance-indices.js.map +1 -0
- package/dist/migrations/sql/20250701-command-query-performance-indices.d.ts +4 -0
- package/dist/migrations/sql/20250701-command-query-performance-indices.d.ts.map +1 -0
- package/dist/migrations/sql/20250701-command-query-performance-indices.js +42 -0
- package/dist/migrations/sql/20250701-command-query-performance-indices.js.map +1 -0
- package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.d.ts +4 -0
- package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.d.ts.map +1 -0
- package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.js +27 -0
- package/dist/migrations/sql/20250702181214-platform-id-and-pog-indexes.js.map +1 -0
- package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.d.ts +4 -0
- package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.d.ts.map +1 -0
- package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.js +11 -0
- package/dist/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.js.map +1 -0
- package/dist/migrations/sql/20250707205720-items-permissions-missing.d.ts +4 -0
- package/dist/migrations/sql/20250707205720-items-permissions-missing.d.ts.map +1 -0
- package/dist/migrations/sql/20250707205720-items-permissions-missing.js +18 -0
- package/dist/migrations/sql/20250707205720-items-permissions-missing.js.map +1 -0
- package/dist/migrations/sql/20250708095623-command-required-permissions.d.ts +4 -0
- package/dist/migrations/sql/20250708095623-command-required-permissions.d.ts.map +1 -0
- package/dist/migrations/sql/20250708095623-command-required-permissions.js +11 -0
- package/dist/migrations/sql/20250708095623-command-required-permissions.js.map +1 -0
- package/dist/migrations/sql/20250710131445-add-shop-categories.d.ts +4 -0
- package/dist/migrations/sql/20250710131445-add-shop-categories.d.ts.map +1 -0
- package/dist/migrations/sql/20250710131445-add-shop-categories.js +80 -0
- package/dist/migrations/sql/20250710131445-add-shop-categories.js.map +1 -0
- package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.d.ts +4 -0
- package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.d.ts.map +1 -0
- package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.js +150 -0
- package/dist/migrations/sql/20250718-fix-player-inventory-history-pk.js.map +1 -0
- package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.d.ts +8 -0
- package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.d.ts.map +1 -0
- package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.js +26 -0
- package/dist/migrations/sql/20250719160409-add-module-author-supportedgames.js.map +1 -0
- package/dist/migrations/sql/20250719175542-add-discord-permissions.d.ts +4 -0
- package/dist/migrations/sql/20250719175542-add-discord-permissions.d.ts.map +1 -0
- package/dist/migrations/sql/20250719175542-add-discord-permissions.js +18 -0
- package/dist/migrations/sql/20250719175542-add-discord-permissions.js.map +1 -0
- package/dist/migrations/sql/20250726000000-discord-role-sync.d.ts +4 -0
- package/dist/migrations/sql/20250726000000-discord-role-sync.d.ts.map +1 -0
- package/dist/migrations/sql/20250726000000-discord-role-sync.js +13 -0
- package/dist/migrations/sql/20250726000000-discord-role-sync.js.map +1 -0
- package/dist/migrations/sql/20250727092719-add-quality-to-inventory.d.ts +4 -0
- package/dist/migrations/sql/20250727092719-add-quality-to-inventory.d.ts.map +1 -0
- package/dist/migrations/sql/20250727092719-add-quality-to-inventory.js +11 -0
- package/dist/migrations/sql/20250727092719-add-quality-to-inventory.js.map +1 -0
- package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.d.ts +4 -0
- package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.d.ts.map +1 -0
- package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.js +11 -0
- package/dist/migrations/sql/20250802124307-add-playeriphistory-composite-index.js.map +1 -0
- package/dist/migrations/sql/20250809122020-add-player-name-history.d.ts +4 -0
- package/dist/migrations/sql/20250809122020-add-player-name-history.d.ts.map +1 -0
- package/dist/migrations/sql/20250809122020-add-player-name-history.js +26 -0
- package/dist/migrations/sql/20250809122020-add-player-name-history.js.map +1 -0
- package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.d.ts +4 -0
- package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.d.ts.map +1 -0
- package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.js +17 -0
- package/dist/migrations/sql/20250812163648-add-kpi-performance-indexes.js.map +1 -0
- package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.d.ts +4 -0
- package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.d.ts.map +1 -0
- package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.js +23 -0
- package/dist/migrations/sql/20250814163747-shop-order-cascade-delete.js.map +1 -0
- package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.d.ts +4 -0
- package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.d.ts.map +1 -0
- package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.js +40 -0
- package/dist/migrations/sql/20250815120000-optimize-shop-analytics-indexes.js.map +1 -0
- package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.d.ts +4 -0
- package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.d.ts.map +1 -0
- package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.js +70 -0
- package/dist/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.js.map +1 -0
- package/dist/migrations/sql/20251101000000-add-deleted-domain-state.d.ts +4 -0
- package/dist/migrations/sql/20251101000000-add-deleted-domain-state.d.ts.map +1 -0
- package/dist/migrations/sql/20251101000000-add-deleted-domain-state.js +33 -0
- package/dist/migrations/sql/20251101000000-add-deleted-domain-state.js.map +1 -0
- package/dist/migrations/sql/20251108214824-unique-player-per-server.d.ts +4 -0
- package/dist/migrations/sql/20251108214824-unique-player-per-server.d.ts.map +1 -0
- package/dist/migrations/sql/20251108214824-unique-player-per-server.js +27 -0
- package/dist/migrations/sql/20251108214824-unique-player-per-server.js.map +1 -0
- package/dist/migrations/sql/20251115071948-remove-deleted-domain-state.d.ts +4 -0
- package/dist/migrations/sql/20251115071948-remove-deleted-domain-state.d.ts.map +1 -0
- package/dist/migrations/sql/20251115071948-remove-deleted-domain-state.js +35 -0
- package/dist/migrations/sql/20251115071948-remove-deleted-domain-state.js.map +1 -0
- package/dist/migrations/sql/20251220000000-inventory-diff-storage.d.ts +4 -0
- package/dist/migrations/sql/20251220000000-inventory-diff-storage.d.ts.map +1 -0
- package/dist/migrations/sql/20251220000000-inventory-diff-storage.js +147 -0
- package/dist/migrations/sql/20251220000000-inventory-diff-storage.js.map +1 -0
- package/dist/migrations/util/alterEnum.d.ts +2 -0
- package/dist/migrations/util/alterEnum.d.ts.map +1 -0
- package/dist/migrations/util/alterEnum.js +8 -0
- package/dist/migrations/util/alterEnum.js.map +1 -0
- package/dist/queryBuilder.d.ts +43 -0
- package/dist/queryBuilder.d.ts.map +1 -0
- package/dist/queryBuilder.js +224 -0
- package/dist/queryBuilder.js.map +1 -0
- package/dist/redis.d.ts +21 -0
- package/dist/redis.d.ts.map +1 -0
- package/dist/redis.js +50 -0
- package/dist/redis.js.map +1 -0
- package/package.json +27 -0
- package/src/TakaroModel.ts +33 -0
- package/src/__tests__/encryption.integration.test.ts +57 -0
- package/src/__tests__/queryBuilder.integration.test.ts +208 -0
- package/src/config.ts +122 -0
- package/src/encryption.ts +26 -0
- package/src/errorTypeGuards.ts +11 -0
- package/src/knex.ts +59 -0
- package/src/main.ts +15 -0
- package/src/migrations/index.ts +70 -0
- package/src/migrations/sql/20220827191938_init.ts +183 -0
- package/src/migrations/sql/20221019173729_settings.ts +70 -0
- package/src/migrations/sql/20221029103554_refactor_function_assignments.ts +41 -0
- package/src/migrations/sql/20221102190532_commands.ts +66 -0
- package/src/migrations/sql/20221203135001-builtin_modules.ts +56 -0
- package/src/migrations/sql/20230308183400-persistent-variables.ts +74 -0
- package/src/migrations/sql/20230314183400-auth-ory.ts +27 -0
- package/src/migrations/sql/20230325156123_command-arguments.ts +24 -0
- package/src/migrations/sql/20230407132022-module-descriptions.ts +13 -0
- package/src/migrations/sql/20230407143733-module-json-schema-config.ts +16 -0
- package/src/migrations/sql/20230407173055-hook-regex-optional.ts +13 -0
- package/src/migrations/sql/20230415154935-cronjob-configs.ts +18 -0
- package/src/migrations/sql/20230503132906-variables-extra-meta.ts +31 -0
- package/src/migrations/sql/20230604130951-fix-hook-eventtypes.ts +12 -0
- package/src/migrations/sql/20230617081049-discordId-for-users.ts +16 -0
- package/src/migrations/sql/20230618053611-discord-funtionality.ts +34 -0
- package/src/migrations/sql/20230622192402-discord-hooks.ts +20 -0
- package/src/migrations/sql/20230707081218-playerOnGameServerExtension.ts +21 -0
- package/src/migrations/sql/20230710174340-events.ts +21 -0
- package/src/migrations/sql/20230712061220-roles-permissions-extension.ts +50 -0
- package/src/migrations/sql/20230713184927-variables-modulescoped.ts +32 -0
- package/src/migrations/sql/20230714045136-domain-index.ts +40 -0
- package/src/migrations/sql/20230714045727-events-index.ts +19 -0
- package/src/migrations/sql/20230715102519-module-permissions-extra-fields.ts +38 -0
- package/src/migrations/sql/20230724062109-roles-constraints.ts +16 -0
- package/src/migrations/sql/20230811095701-userId-on-events.ts +14 -0
- package/src/migrations/sql/20230921123717-count-for-permissions.ts +101 -0
- package/src/migrations/sql/20231111102812-details-system-permissions.ts +192 -0
- package/src/migrations/sql/20231114151343-system-roles.ts +46 -0
- package/src/migrations/sql/20231118082301-add-new-permissions.ts +200 -0
- package/src/migrations/sql/20231119115037-timedRoles.ts +23 -0
- package/src/migrations/sql/20231123150854-economy-base.ts +15 -0
- package/src/migrations/sql/20231123171611-economy-settings.ts +15 -0
- package/src/migrations/sql/20231124140441-json-module-assignments.ts +29 -0
- package/src/migrations/sql/20231208114507-settings-refactor.ts +114 -0
- package/src/migrations/sql/20231208171234-game-items.ts +20 -0
- package/src/migrations/sql/20231216100720-player-inventory.ts +16 -0
- package/src/migrations/sql/20231222180438-steam-data.ts +27 -0
- package/src/migrations/sql/20231223132631-pog-online.ts +13 -0
- package/src/migrations/sql/20231223212031-unique-index-item-def.ts +27 -0
- package/src/migrations/sql/20231224135126-gameserver-online-status.ts +13 -0
- package/src/migrations/sql/20231224155226-unique-pog.ts +27 -0
- package/src/migrations/sql/20231225140650-extra-ip-info.ts +27 -0
- package/src/migrations/sql/20231227144315-unique-constraints-player.ts +74 -0
- package/src/migrations/sql/20231229144707-more-player-constraints.ts +20 -0
- package/src/migrations/sql/20240101162751-add-settings-constraint.ts +39 -0
- package/src/migrations/sql/20240105130846-remove-some-module-perms.ts +104 -0
- package/src/migrations/sql/20240116141936-add-ui-schema-to-module.ts +13 -0
- package/src/migrations/sql/20240119152426-remove-hook-check.ts +18 -0
- package/src/migrations/sql/20240121142329-move-ip-history.ts +53 -0
- package/src/migrations/sql/20240202101208-rename-economy-to-economyUtils.ts +15 -0
- package/src/migrations/sql/20240216120143-domain-state.ts +13 -0
- package/src/migrations/sql/20240229141340-looser-fks-events.ts +20 -0
- package/src/migrations/sql/20240301063505-module-functions.ts +17 -0
- package/src/migrations/sql/20240613175009-lastseen-users-pog.ts +21 -0
- package/src/migrations/sql/20240614143517-shop.ts +39 -0
- package/src/migrations/sql/20240615145045-user-player-link.ts +20 -0
- package/src/migrations/sql/20240622132552-fix-ip-history-fk.ts +13 -0
- package/src/migrations/sql/20240626200803-player-inventory-idx.ts +13 -0
- package/src/migrations/sql/20240628174914-shop-orders.ts +20 -0
- package/src/migrations/sql/20240705140358-teleports-public-refactor.ts +31 -0
- package/src/migrations/sql/20240710181429-events-name-idx.ts +13 -0
- package/src/migrations/sql/20240711181423-shop-orders-multi-listing.ts +34 -0
- package/src/migrations/sql/20240718121004-delete-read-gameservers-perm.ts +9 -0
- package/src/migrations/sql/20240718150807-listing-deleted-and-draft-status.ts +15 -0
- package/src/migrations/sql/20240720135010-acting-user-and-module.ts +24 -0
- package/src/migrations/sql/20240811061243-domain-rate-limit-setting.ts +16 -0
- package/src/migrations/sql/20240814133931-domain-ext-ref.ts +24 -0
- package/src/migrations/sql/20240816171220-player-steam-level.ts +14 -0
- package/src/migrations/sql/20240830081157-variable-expiry.ts +14 -0
- package/src/migrations/sql/20240906125101-gameserver-enable.ts +14 -0
- package/src/migrations/sql/20240908185212-domain-name-not-unique.ts +12 -0
- package/src/migrations/sql/20240922110414-player-playtime.ts +13 -0
- package/src/migrations/sql/20240922133738-add-bans.ts +25 -0
- package/src/migrations/sql/20240929090313-global-playtime.ts +13 -0
- package/src/migrations/sql/20240929143849-player-name-null.ts +13 -0
- package/src/migrations/sql/20241012183754-shop-orders-belong-to-player.ts +44 -0
- package/src/migrations/sql/20241013173159-add-indexen-for-moduleId.ts +57 -0
- package/src/migrations/sql/20241020133133-make-listing-name-required.ts +16 -0
- package/src/migrations/sql/20241024164331-events-fk-fix.ts +16 -0
- package/src/migrations/sql/20241030130613-index-for-roleId.ts +31 -0
- package/src/migrations/sql/20241205201123-gameserver-deletedAt.ts +13 -0
- package/src/migrations/sql/20241330200212-module-versions.ts +384 -0
- package/src/migrations/sql/20250112102308-generic-gameserver.ts +55 -0
- package/src/migrations/sql/20250128200529-version-fixes.ts +13 -0
- package/src/migrations/sql/20250131183251-domain-settings.ts +55 -0
- package/src/migrations/sql/20250221130042-variable-length.ts +35 -0
- package/src/migrations/sql/20250221193144-versions-perf-improvements.ts +79 -0
- package/src/migrations/sql/20250223143705-fix-ban-constraint.ts +43 -0
- package/src/migrations/sql/20250305210650-more-module-metadata.ts +49 -0
- package/src/migrations/sql/20250307162855-default-systemconfig.ts +13 -0
- package/src/migrations/sql/20250312184104-unique-external-reference.ts +13 -0
- package/src/migrations/sql/20250314185501-root-users-not-dashboard-user.ts +17 -0
- package/src/migrations/sql/20250315191707-fix-constraint-module-items.ts +26 -0
- package/src/migrations/sql/20250519185149-add-item-indexes.ts +42 -0
- package/src/migrations/sql/20250524054924-tracking.ts +79 -0
- package/src/migrations/sql/20250525135204-ban-reason-length.ts +35 -0
- package/src/migrations/sql/20250605201140-shop-permissions-missing.ts +20 -0
- package/src/migrations/sql/20250606060546-inventory-tracking.ts +96 -0
- package/src/migrations/sql/20250613110835-add-platform-id-to-players.ts +51 -0
- package/src/migrations/sql/20250613203142-add-dimension-to-position.ts +25 -0
- package/src/migrations/sql/20250614113157-entities.ts +40 -0
- package/src/migrations/sql/20250629090822-player-query-performance-indices.ts +38 -0
- package/src/migrations/sql/20250701-command-query-performance-indices.ts +53 -0
- package/src/migrations/sql/20250702181214-platform-id-and-pog-indexes.ts +31 -0
- package/src/migrations/sql/20250703175326-add-ip-to-player-on-gameserver.ts +13 -0
- package/src/migrations/sql/20250707205720-items-permissions-missing.ts +20 -0
- package/src/migrations/sql/20250708095623-command-required-permissions.ts +13 -0
- package/src/migrations/sql/20250710131445-add-shop-categories.ts +98 -0
- package/src/migrations/sql/20250718-fix-player-inventory-history-pk.ts +161 -0
- package/src/migrations/sql/20250719160409-add-module-author-supportedgames.ts +31 -0
- package/src/migrations/sql/20250719175542-add-discord-permissions.ts +20 -0
- package/src/migrations/sql/20250726000000-discord-role-sync.ts +15 -0
- package/src/migrations/sql/20250727092719-add-quality-to-inventory.ts +13 -0
- package/src/migrations/sql/20250802124307-add-playeriphistory-composite-index.ts +13 -0
- package/src/migrations/sql/20250809122020-add-player-name-history.ts +31 -0
- package/src/migrations/sql/20250812163648-add-kpi-performance-indexes.ts +20 -0
- package/src/migrations/sql/20250814163747-shop-order-cascade-delete.ts +27 -0
- package/src/migrations/sql/20250815120000-optimize-shop-analytics-indexes.ts +46 -0
- package/src/migrations/sql/20251014120000-shop-order-auto-cancel-on-listing-delete.ts +75 -0
- package/src/migrations/sql/20251101000000-add-deleted-domain-state.ts +43 -0
- package/src/migrations/sql/20251108214824-unique-player-per-server.ts +30 -0
- package/src/migrations/sql/20251115071948-remove-deleted-domain-state.ts +46 -0
- package/src/migrations/sql/20251220000000-inventory-diff-storage.ts +164 -0
- package/src/migrations/util/alterEnum.ts +9 -0
- package/src/queryBuilder.ts +263 -0
- package/src/redis.ts +59 -0
- package/tsconfig.build.json +14 -0
- package/tsconfig.json +8 -0
- package/typedoc.json +3 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex('permission').insert([
|
|
5
|
+
{
|
|
6
|
+
permission: 'READ_ITEMS',
|
|
7
|
+
description: 'Can view item details',
|
|
8
|
+
friendlyName: 'Read Items',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
permission: 'MANAGE_ITEMS',
|
|
12
|
+
description: 'Can create, update, and delete items',
|
|
13
|
+
friendlyName: 'Manage Items',
|
|
14
|
+
},
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function down(knex: Knex): Promise<void> {
|
|
19
|
+
await knex('permission').whereIn('permission', ['READ_ITEMS', 'MANAGE_ITEMS']).del();
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
5
|
+
table.jsonb('requiredPermissions').defaultTo('[]').notNullable();
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function down(knex: Knex): Promise<void> {
|
|
10
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
11
|
+
table.dropColumn('requiredPermissions');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
const SHOP_CATEGORY_TABLE_NAME = 'shopCategory';
|
|
4
|
+
const SHOP_LISTING_CATEGORY_TABLE_NAME = 'shopListingCategory';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_CATEGORIES = [
|
|
7
|
+
{ name: 'Weapons', emoji: '⚔️' },
|
|
8
|
+
{ name: 'Armor', emoji: '🛡️' },
|
|
9
|
+
{ name: 'Building', emoji: '🏗️' },
|
|
10
|
+
{ name: 'Tools', emoji: '🔧' },
|
|
11
|
+
{ name: 'Consumables', emoji: '💊' },
|
|
12
|
+
{ name: 'Resources', emoji: '📦' },
|
|
13
|
+
{ name: 'Base', emoji: '🏠' },
|
|
14
|
+
{ name: 'Vehicles', emoji: '🚗' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
export async function up(knex: Knex): Promise<void> {
|
|
18
|
+
// Create shopCategory table (hierarchical categories)
|
|
19
|
+
await knex.schema.createTable(SHOP_CATEGORY_TABLE_NAME, (table) => {
|
|
20
|
+
table.timestamps(true, true, true);
|
|
21
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
22
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
23
|
+
table.string('name', 50).notNullable();
|
|
24
|
+
table.string('emoji', 10).notNullable();
|
|
25
|
+
table.uuid('parentId').nullable();
|
|
26
|
+
|
|
27
|
+
// Add self-referencing foreign key for parent category
|
|
28
|
+
table.foreign('parentId').references('id').inTable(SHOP_CATEGORY_TABLE_NAME).onDelete('SET NULL');
|
|
29
|
+
|
|
30
|
+
// Indexes for performance
|
|
31
|
+
table.index('domain');
|
|
32
|
+
table.index('parentId');
|
|
33
|
+
table.index(['domain', 'name']);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Add case-insensitive unique constraint on domain + name
|
|
37
|
+
await knex.raw(`
|
|
38
|
+
CREATE UNIQUE INDEX shopCategory_domain_name_unique
|
|
39
|
+
ON "${SHOP_CATEGORY_TABLE_NAME}" ("domain", LOWER("name"))
|
|
40
|
+
`);
|
|
41
|
+
|
|
42
|
+
// Create shopListingCategory junction table (many-to-many)
|
|
43
|
+
await knex.schema.createTable(SHOP_LISTING_CATEGORY_TABLE_NAME, (table) => {
|
|
44
|
+
table.timestamps(true, true, true);
|
|
45
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
46
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
47
|
+
table.uuid('shopListingId').references('shopListing.id').onDelete('CASCADE').notNullable();
|
|
48
|
+
table.uuid('shopCategoryId').references('shopCategory.id').onDelete('CASCADE').notNullable();
|
|
49
|
+
|
|
50
|
+
// Indexes for performance
|
|
51
|
+
table.index('domain');
|
|
52
|
+
table.index('shopListingId');
|
|
53
|
+
table.index('shopCategoryId');
|
|
54
|
+
table.index(['shopListingId', 'shopCategoryId']);
|
|
55
|
+
|
|
56
|
+
// Ensure a listing can only be in a category once
|
|
57
|
+
table.unique(['shopListingId', 'shopCategoryId']);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Insert default categories for all existing domains
|
|
61
|
+
const domains = await knex('domains').select('id');
|
|
62
|
+
|
|
63
|
+
for (const domain of domains) {
|
|
64
|
+
const categoriesToInsert = DEFAULT_CATEGORIES.map((cat) => ({
|
|
65
|
+
...cat,
|
|
66
|
+
domain: domain.id,
|
|
67
|
+
parentId: null,
|
|
68
|
+
}));
|
|
69
|
+
|
|
70
|
+
// Insert categories, ignoring duplicates (in case some domains already have categories with these names)
|
|
71
|
+
for (const category of categoriesToInsert) {
|
|
72
|
+
const existing = await knex(SHOP_CATEGORY_TABLE_NAME)
|
|
73
|
+
.where('domain', category.domain)
|
|
74
|
+
.where('name', category.name)
|
|
75
|
+
.whereNull('parentId')
|
|
76
|
+
.first();
|
|
77
|
+
|
|
78
|
+
if (!existing) {
|
|
79
|
+
await knex(SHOP_CATEGORY_TABLE_NAME).insert(category);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export async function down(knex: Knex): Promise<void> {
|
|
86
|
+
// Remove default categories from all domains
|
|
87
|
+
await knex(SHOP_CATEGORY_TABLE_NAME)
|
|
88
|
+
.whereIn(
|
|
89
|
+
'name',
|
|
90
|
+
DEFAULT_CATEGORIES.map((c) => c.name),
|
|
91
|
+
)
|
|
92
|
+
.whereNull('parentId')
|
|
93
|
+
.delete();
|
|
94
|
+
|
|
95
|
+
// Drop tables in reverse dependency order
|
|
96
|
+
await knex.schema.dropTable(SHOP_LISTING_CATEGORY_TABLE_NAME);
|
|
97
|
+
await knex.schema.dropTable(SHOP_CATEGORY_TABLE_NAME);
|
|
98
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// First, drop the primary key constraint from the parent table
|
|
5
|
+
await knex.raw(`
|
|
6
|
+
ALTER TABLE "playerInventoryHistory"
|
|
7
|
+
DROP CONSTRAINT IF EXISTS "playerInventoryHistory_pkey"
|
|
8
|
+
`);
|
|
9
|
+
|
|
10
|
+
// Get all existing partitions and drop their primary key constraints
|
|
11
|
+
const partitions = await knex.raw(`
|
|
12
|
+
SELECT
|
|
13
|
+
inhrelid::regclass AS partition_name
|
|
14
|
+
FROM pg_inherits
|
|
15
|
+
WHERE inhparent = '"playerInventoryHistory"'::regclass
|
|
16
|
+
`);
|
|
17
|
+
|
|
18
|
+
for (const partition of partitions.rows) {
|
|
19
|
+
// partition_name already includes schema, need to extract just the table name
|
|
20
|
+
const fullName = partition.partition_name;
|
|
21
|
+
const partitionName = fullName.includes('.')
|
|
22
|
+
? fullName.split('.').pop().replace(/"/g, '')
|
|
23
|
+
: fullName.replace(/"/g, '');
|
|
24
|
+
await knex.raw(`
|
|
25
|
+
ALTER TABLE "${partitionName}"
|
|
26
|
+
DROP CONSTRAINT IF EXISTS "${partitionName}_pkey"
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Create a regular (non-unique) composite index for query performance
|
|
31
|
+
// This replaces the primary key constraint functionality for lookups
|
|
32
|
+
await knex.raw(`
|
|
33
|
+
CREATE INDEX IF NOT EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
|
|
34
|
+
ON "playerInventoryHistory" ("createdAt", "playerId", "itemId")
|
|
35
|
+
`);
|
|
36
|
+
|
|
37
|
+
// Update the partition creation function to not include the composite primary key
|
|
38
|
+
await knex.raw(`
|
|
39
|
+
CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
|
|
40
|
+
RETURNS VOID AS $$
|
|
41
|
+
DECLARE
|
|
42
|
+
current_day_start DATE;
|
|
43
|
+
next_day_start DATE;
|
|
44
|
+
partition_name TEXT;
|
|
45
|
+
partition_exists BOOLEAN;
|
|
46
|
+
target_date DATE;
|
|
47
|
+
BEGIN
|
|
48
|
+
IF date_param IS NOT NULL THEN
|
|
49
|
+
target_date := DATE(date_param::TIMESTAMP);
|
|
50
|
+
ELSE
|
|
51
|
+
target_date := CURRENT_DATE;
|
|
52
|
+
END IF;
|
|
53
|
+
|
|
54
|
+
current_day_start := DATE_TRUNC('day', target_date);
|
|
55
|
+
next_day_start := current_day_start + INTERVAL '1 day';
|
|
56
|
+
|
|
57
|
+
partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
|
|
58
|
+
|
|
59
|
+
SELECT EXISTS (
|
|
60
|
+
SELECT 1 FROM pg_class c
|
|
61
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
62
|
+
WHERE c.relname = partition_name
|
|
63
|
+
AND n.nspname = 'public'
|
|
64
|
+
) INTO partition_exists;
|
|
65
|
+
|
|
66
|
+
IF NOT partition_exists THEN
|
|
67
|
+
EXECUTE format(
|
|
68
|
+
'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
|
|
69
|
+
FOR VALUES FROM (%L) TO (%L)',
|
|
70
|
+
partition_name,
|
|
71
|
+
current_day_start,
|
|
72
|
+
next_day_start
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
RAISE NOTICE 'Created partition: % for date: %',
|
|
76
|
+
partition_name, current_day_start;
|
|
77
|
+
END IF;
|
|
78
|
+
END;
|
|
79
|
+
$$ LANGUAGE plpgsql;
|
|
80
|
+
`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export async function down(knex: Knex): Promise<void> {
|
|
84
|
+
// Drop the new index
|
|
85
|
+
await knex.raw(`
|
|
86
|
+
DROP INDEX IF EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
|
|
87
|
+
`);
|
|
88
|
+
|
|
89
|
+
// No need to drop any primary key since we didn't add one in the up migration
|
|
90
|
+
|
|
91
|
+
// Restore the original composite primary key on the parent table
|
|
92
|
+
await knex.raw(`
|
|
93
|
+
ALTER TABLE "playerInventoryHistory"
|
|
94
|
+
ADD CONSTRAINT "playerInventoryHistory_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
|
|
95
|
+
`);
|
|
96
|
+
|
|
97
|
+
// Get all existing partitions and restore their primary key constraints
|
|
98
|
+
const partitions = await knex.raw(`
|
|
99
|
+
SELECT
|
|
100
|
+
inhrelid::regclass AS partition_name
|
|
101
|
+
FROM pg_inherits
|
|
102
|
+
WHERE inhparent = '"playerInventoryHistory"'::regclass
|
|
103
|
+
`);
|
|
104
|
+
|
|
105
|
+
for (const partition of partitions.rows) {
|
|
106
|
+
// partition_name already includes schema, need to extract just the table name
|
|
107
|
+
const fullName = partition.partition_name;
|
|
108
|
+
const partitionName = fullName.includes('.')
|
|
109
|
+
? fullName.split('.').pop().replace(/"/g, '')
|
|
110
|
+
: fullName.replace(/"/g, '');
|
|
111
|
+
await knex.raw(`
|
|
112
|
+
ALTER TABLE "${partitionName}"
|
|
113
|
+
ADD CONSTRAINT "${partitionName}_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
|
|
114
|
+
`);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Restore the original partition creation function with the composite primary key
|
|
118
|
+
await knex.raw(`
|
|
119
|
+
CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
|
|
120
|
+
RETURNS VOID AS $$
|
|
121
|
+
DECLARE
|
|
122
|
+
current_day_start DATE;
|
|
123
|
+
next_day_start DATE;
|
|
124
|
+
partition_name TEXT;
|
|
125
|
+
partition_exists BOOLEAN;
|
|
126
|
+
target_date DATE;
|
|
127
|
+
BEGIN
|
|
128
|
+
IF date_param IS NOT NULL THEN
|
|
129
|
+
target_date := DATE(date_param::TIMESTAMP);
|
|
130
|
+
ELSE
|
|
131
|
+
target_date := CURRENT_DATE;
|
|
132
|
+
END IF;
|
|
133
|
+
|
|
134
|
+
current_day_start := DATE_TRUNC('day', target_date);
|
|
135
|
+
next_day_start := current_day_start + INTERVAL '1 day';
|
|
136
|
+
|
|
137
|
+
partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
|
|
138
|
+
|
|
139
|
+
SELECT EXISTS (
|
|
140
|
+
SELECT 1 FROM pg_class c
|
|
141
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
142
|
+
WHERE c.relname = partition_name
|
|
143
|
+
AND n.nspname = 'public'
|
|
144
|
+
) INTO partition_exists;
|
|
145
|
+
|
|
146
|
+
IF NOT partition_exists THEN
|
|
147
|
+
EXECUTE format(
|
|
148
|
+
'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
|
|
149
|
+
FOR VALUES FROM (%L) TO (%L)',
|
|
150
|
+
partition_name,
|
|
151
|
+
current_day_start,
|
|
152
|
+
next_day_start
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
RAISE NOTICE 'Created partition: % for date: %',
|
|
156
|
+
partition_name, current_day_start;
|
|
157
|
+
END IF;
|
|
158
|
+
END;
|
|
159
|
+
$$ LANGUAGE plpgsql;
|
|
160
|
+
`);
|
|
161
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This migration adds author and supportedGames fields to the modules table
|
|
5
|
+
* @param knex
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export async function up(knex: Knex): Promise<void> {
|
|
9
|
+
// Add author column
|
|
10
|
+
await knex.schema.alterTable('modules', (table) => {
|
|
11
|
+
table.string('author').nullable();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// Add supportedGames column as JSON array
|
|
15
|
+
await knex.schema.alterTable('modules', (table) => {
|
|
16
|
+
table.json('supportedGames').defaultTo('["all"]');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// Update existing modules to have default values
|
|
20
|
+
await knex('modules').update({
|
|
21
|
+
author: 'Unknown',
|
|
22
|
+
supportedGames: JSON.stringify(['all']),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function down(knex: Knex): Promise<void> {
|
|
27
|
+
await knex.schema.alterTable('modules', (table) => {
|
|
28
|
+
table.dropColumn('author');
|
|
29
|
+
table.dropColumn('supportedGames');
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex('permission').insert([
|
|
5
|
+
{
|
|
6
|
+
permission: 'VIEW_DISCORD_INFO',
|
|
7
|
+
description: 'Can view Discord guild information including channels and roles',
|
|
8
|
+
friendlyName: 'View Discord Info',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
permission: 'SEND_DISCORD_MESSAGE',
|
|
12
|
+
description: 'Can send messages to Discord channels',
|
|
13
|
+
friendlyName: 'Send Discord Messages',
|
|
14
|
+
},
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function down(knex: Knex): Promise<void> {
|
|
19
|
+
await knex('permission').whereIn('permission', ['VIEW_DISCORD_INFO', 'SEND_DISCORD_MESSAGE']).del();
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Add linkedDiscordRoleId to roles table
|
|
5
|
+
await knex.schema.alterTable('roles', (table) => {
|
|
6
|
+
table.string('linkedDiscordRoleId').nullable();
|
|
7
|
+
table.index('linkedDiscordRoleId');
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export async function down(knex: Knex): Promise<void> {
|
|
12
|
+
await knex.schema.alterTable('roles', (table) => {
|
|
13
|
+
table.dropColumn('linkedDiscordRoleId');
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.alterTable('playerInventoryHistory', (table) => {
|
|
5
|
+
table.string('quality').nullable();
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function down(knex: Knex): Promise<void> {
|
|
10
|
+
await knex.schema.alterTable('playerInventoryHistory', (table) => {
|
|
11
|
+
table.dropColumn('quality');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.alterTable('playerIpHistory', (table) => {
|
|
5
|
+
table.index(['domain', 'playerId', 'createdAt'], 'idx_playeriphistory_domain_playerid_createdat');
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function down(knex: Knex): Promise<void> {
|
|
10
|
+
await knex.schema.alterTable('playerIpHistory', (table) => {
|
|
11
|
+
table.dropIndex([], 'idx_playeriphistory_domain_playerid_createdat');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.createTable('playerNameHistory', (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('players.id').onDelete('CASCADE').notNullable();
|
|
9
|
+
table.uuid('gameServerId').references('gameservers.id').onDelete('SET NULL').nullable();
|
|
10
|
+
table.string('name').notNullable();
|
|
11
|
+
|
|
12
|
+
// Indexes for performance
|
|
13
|
+
table.index(['playerId', 'createdAt'], 'idx_player_name_history_player_created');
|
|
14
|
+
table.index('name', 'idx_player_name_history_name');
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function down(knex: Knex): Promise<void> {
|
|
19
|
+
// Update players table with latest name from history before dropping
|
|
20
|
+
const latestNames = await knex('playerNameHistory')
|
|
21
|
+
.select('playerId', 'name')
|
|
22
|
+
.distinctOn('playerId')
|
|
23
|
+
.orderBy('playerId')
|
|
24
|
+
.orderBy('createdAt', 'desc');
|
|
25
|
+
|
|
26
|
+
for (const record of latestNames) {
|
|
27
|
+
await knex('players').where('id', record.playerId).update({ name: record.name });
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
await knex.schema.dropTable('playerNameHistory');
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Add index for playerOnGameServer activity queries (DAU/WAU/MAU)
|
|
5
|
+
await knex.schema.raw(`
|
|
6
|
+
CREATE INDEX IF NOT EXISTS idx_pog_domain_lastseen
|
|
7
|
+
ON "playerOnGameServer"(domain, "lastSeen" DESC)
|
|
8
|
+
`);
|
|
9
|
+
|
|
10
|
+
// Add index for user activity queries
|
|
11
|
+
await knex.schema.raw(`
|
|
12
|
+
CREATE INDEX IF NOT EXISTS idx_users_domain_lastseen
|
|
13
|
+
ON users(domain, "lastSeen" DESC)
|
|
14
|
+
`);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export async function down(knex: Knex): Promise<void> {
|
|
18
|
+
await knex.schema.raw('DROP INDEX IF EXISTS idx_pog_domain_lastseen');
|
|
19
|
+
await knex.schema.raw('DROP INDEX IF EXISTS idx_users_domain_lastseen');
|
|
20
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.raw(`
|
|
5
|
+
ALTER TABLE "shopOrder"
|
|
6
|
+
DROP CONSTRAINT IF EXISTS shoporder_playerid_foreign;
|
|
7
|
+
`);
|
|
8
|
+
|
|
9
|
+
await knex.raw(`
|
|
10
|
+
ALTER TABLE "shopOrder"
|
|
11
|
+
ADD CONSTRAINT shoporder_playerid_foreign
|
|
12
|
+
FOREIGN KEY ("playerId") REFERENCES players(id) ON DELETE CASCADE;
|
|
13
|
+
`);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export async function down(knex: Knex): Promise<void> {
|
|
17
|
+
await knex.raw(`
|
|
18
|
+
ALTER TABLE "shopOrder"
|
|
19
|
+
DROP CONSTRAINT IF EXISTS shoporder_playerid_foreign;
|
|
20
|
+
`);
|
|
21
|
+
|
|
22
|
+
await knex.raw(`
|
|
23
|
+
ALTER TABLE "shopOrder"
|
|
24
|
+
ADD CONSTRAINT shoporder_playerid_foreign
|
|
25
|
+
FOREIGN KEY ("playerId") REFERENCES players(id) ON DELETE NO ACTION;
|
|
26
|
+
`);
|
|
27
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Index for filtering orders by domain, status, and date range
|
|
5
|
+
await knex.raw(`
|
|
6
|
+
CREATE INDEX IF NOT EXISTS idx_shoporder_analytics
|
|
7
|
+
ON "shopOrder" (domain, status, "createdAt")
|
|
8
|
+
WHERE status IN ('COMPLETED', 'PAID')
|
|
9
|
+
`);
|
|
10
|
+
|
|
11
|
+
// Index for joining orders with listings and filtering by date
|
|
12
|
+
await knex.raw(`
|
|
13
|
+
CREATE INDEX IF NOT EXISTS idx_shoporder_listing_date
|
|
14
|
+
ON "shopOrder" ("listingId", "createdAt")
|
|
15
|
+
WHERE status IN ('COMPLETED', 'PAID')
|
|
16
|
+
`);
|
|
17
|
+
|
|
18
|
+
// Index for customer analytics (unique players)
|
|
19
|
+
await knex.raw(`
|
|
20
|
+
CREATE INDEX IF NOT EXISTS idx_shoporder_player_analytics
|
|
21
|
+
ON "shopOrder" (domain, "playerId", "createdAt")
|
|
22
|
+
WHERE status IN ('COMPLETED', 'PAID')
|
|
23
|
+
`);
|
|
24
|
+
|
|
25
|
+
// Composite index for shop listings to speed up joins
|
|
26
|
+
await knex.raw(`
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_shoplisting_composite
|
|
28
|
+
ON "shopListing" (id, "gameServerId", price)
|
|
29
|
+
WHERE "deletedAt" IS NULL AND draft = false
|
|
30
|
+
`);
|
|
31
|
+
|
|
32
|
+
// Index for filtering listings by game server and active status
|
|
33
|
+
await knex.raw(`
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_shoplisting_active
|
|
35
|
+
ON "shopListing" (domain, "gameServerId")
|
|
36
|
+
WHERE "deletedAt" IS NULL AND draft = false
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export async function down(knex: Knex): Promise<void> {
|
|
41
|
+
await knex.raw('DROP INDEX IF EXISTS idx_shoporder_analytics');
|
|
42
|
+
await knex.raw('DROP INDEX IF EXISTS idx_shoporder_listing_date');
|
|
43
|
+
await knex.raw('DROP INDEX IF EXISTS idx_shoporder_player_analytics');
|
|
44
|
+
await knex.raw('DROP INDEX IF EXISTS idx_shoplisting_composite');
|
|
45
|
+
await knex.raw('DROP INDEX IF EXISTS idx_shoplisting_active');
|
|
46
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Step 1: Create trigger function that auto-cancels orders when listing is deleted
|
|
5
|
+
await knex.raw(`
|
|
6
|
+
CREATE OR REPLACE FUNCTION cancel_orders_on_listing_delete()
|
|
7
|
+
RETURNS TRIGGER AS $$
|
|
8
|
+
BEGIN
|
|
9
|
+
-- Only proceed if deletedAt changed from NULL to a value (soft-delete)
|
|
10
|
+
IF OLD."deletedAt" IS NULL AND NEW."deletedAt" IS NOT NULL THEN
|
|
11
|
+
-- Cancel all PAID orders for this listing and refund currency
|
|
12
|
+
-- Aggregate refunds by player to handle multiple orders correctly
|
|
13
|
+
WITH orders_to_cancel AS (
|
|
14
|
+
SELECT
|
|
15
|
+
so.id AS order_id,
|
|
16
|
+
so."playerId",
|
|
17
|
+
NEW."gameServerId",
|
|
18
|
+
NEW.domain AS domain,
|
|
19
|
+
NEW.price * so.amount AS refund_amount
|
|
20
|
+
FROM "shopOrder" so
|
|
21
|
+
WHERE so."listingId" = NEW.id
|
|
22
|
+
AND so.status = 'PAID'
|
|
23
|
+
),
|
|
24
|
+
aggregated_refunds AS (
|
|
25
|
+
SELECT
|
|
26
|
+
"playerId",
|
|
27
|
+
"gameServerId",
|
|
28
|
+
domain,
|
|
29
|
+
SUM(refund_amount) AS total_refund
|
|
30
|
+
FROM orders_to_cancel
|
|
31
|
+
GROUP BY "playerId", "gameServerId", domain
|
|
32
|
+
)
|
|
33
|
+
-- Update playerOnGameServer currency with aggregated total
|
|
34
|
+
UPDATE "playerOnGameServer" pogs
|
|
35
|
+
SET currency = pogs.currency + ar.total_refund
|
|
36
|
+
FROM aggregated_refunds ar
|
|
37
|
+
WHERE pogs."playerId" = ar."playerId"
|
|
38
|
+
AND pogs."gameServerId" = ar."gameServerId"
|
|
39
|
+
AND pogs.domain = ar.domain;
|
|
40
|
+
|
|
41
|
+
-- Update order status to CANCELED
|
|
42
|
+
UPDATE "shopOrder"
|
|
43
|
+
SET status = 'CANCELED'
|
|
44
|
+
WHERE "listingId" = NEW.id
|
|
45
|
+
AND status = 'PAID';
|
|
46
|
+
END IF;
|
|
47
|
+
|
|
48
|
+
RETURN NEW;
|
|
49
|
+
END;
|
|
50
|
+
$$ LANGUAGE plpgsql;
|
|
51
|
+
`);
|
|
52
|
+
|
|
53
|
+
// Step 2: Create trigger on shopListing table
|
|
54
|
+
await knex.raw(`
|
|
55
|
+
CREATE TRIGGER auto_cancel_orders_on_listing_delete
|
|
56
|
+
AFTER UPDATE ON "shopListing"
|
|
57
|
+
FOR EACH ROW
|
|
58
|
+
WHEN (OLD."deletedAt" IS NULL AND NEW."deletedAt" IS NOT NULL)
|
|
59
|
+
EXECUTE FUNCTION cancel_orders_on_listing_delete();
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export async function down(knex: Knex): Promise<void> {
|
|
64
|
+
// Drop trigger
|
|
65
|
+
await knex.raw(`
|
|
66
|
+
DROP TRIGGER IF EXISTS auto_cancel_orders_on_listing_delete ON "shopListing";
|
|
67
|
+
`);
|
|
68
|
+
|
|
69
|
+
// Drop function
|
|
70
|
+
await knex.raw(`
|
|
71
|
+
DROP FUNCTION IF EXISTS cancel_orders_on_listing_delete();
|
|
72
|
+
`);
|
|
73
|
+
|
|
74
|
+
// Note: We don't reverse the data cleanup since those were genuinely bad orders
|
|
75
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// PostgreSQL requires a multi-step process to update enum constraints
|
|
5
|
+
// 1. Add a temporary column with the new enum values
|
|
6
|
+
// 2. Copy data from old column to new column
|
|
7
|
+
// 3. Drop old column
|
|
8
|
+
// 4. Rename new column to old column name
|
|
9
|
+
|
|
10
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
11
|
+
table.enum('state_new', ['ACTIVE', 'DISABLED', 'MAINTENANCE', 'DELETED']).notNullable().defaultTo('ACTIVE');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
await knex.raw(`UPDATE domains SET state_new = state::text::varchar`);
|
|
15
|
+
|
|
16
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
17
|
+
table.dropColumn('state');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
21
|
+
table.renameColumn('state_new', 'state');
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export async function down(knex: Knex): Promise<void> {
|
|
26
|
+
// Revert to the original enum values (removing DELETED)
|
|
27
|
+
// First, ensure no domains are in DELETED state (or this will fail)
|
|
28
|
+
await knex.raw(`DELETE FROM domains WHERE state = 'DELETED'`);
|
|
29
|
+
|
|
30
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
31
|
+
table.enum('state_new', ['ACTIVE', 'DISABLED', 'MAINTENANCE']).notNullable().defaultTo('ACTIVE');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
await knex.raw(`UPDATE domains SET state_new = state::text::varchar`);
|
|
35
|
+
|
|
36
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
37
|
+
table.dropColumn('state');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
await knex.schema.alterTable('domains', (table) => {
|
|
41
|
+
table.renameColumn('state_new', 'state');
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Delete duplicate rows where the same playerId has multiple different gameIds on the same server
|
|
5
|
+
// This violates the business rule that each player should have exactly one POG per server
|
|
6
|
+
// Keep the oldest POG (lowest id) for each (playerId, gameServerId) pair
|
|
7
|
+
await knex.raw(`
|
|
8
|
+
DELETE FROM "playerOnGameServer"
|
|
9
|
+
WHERE id IN (
|
|
10
|
+
SELECT id
|
|
11
|
+
FROM (
|
|
12
|
+
SELECT id,
|
|
13
|
+
ROW_NUMBER() OVER (PARTITION BY "playerId", "gameServerId" ORDER BY id) as rnk
|
|
14
|
+
FROM "playerOnGameServer"
|
|
15
|
+
) t
|
|
16
|
+
WHERE t.rnk > 1
|
|
17
|
+
)
|
|
18
|
+
`);
|
|
19
|
+
|
|
20
|
+
// Add unique constraint to prevent one player from having multiple POGs on the same server
|
|
21
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
22
|
+
table.unique(['playerId', 'gameServerId']);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function down(knex: Knex): Promise<void> {
|
|
27
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
28
|
+
table.dropUnique(['playerId', 'gameServerId']);
|
|
29
|
+
});
|
|
30
|
+
}
|