@takaro/db 0.0.0-next.0da151e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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 +16 -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/util/alterEnum.ts +9 -0
- package/src/queryBuilder.ts +263 -0
- package/src/redis.ts +59 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +8 -0
- package/typedoc.json +3 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.raw(`
|
|
5
|
+
CREATE TABLE "playerInventoryHistory" (
|
|
6
|
+
id UUID DEFAULT gen_random_uuid() NOT NULL,
|
|
7
|
+
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
8
|
+
"updatedAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
9
|
+
domain VARCHAR(255) NOT NULL,
|
|
10
|
+
"playerId" UUID NOT NULL,
|
|
11
|
+
"itemId" UUID NOT NULL,
|
|
12
|
+
quantity INTEGER NOT NULL,
|
|
13
|
+
CONSTRAINT "playerInventoryHistory_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId"),
|
|
14
|
+
CONSTRAINT "playerInventoryHistory_domain_foreign" FOREIGN KEY (domain) REFERENCES domains(id) ON DELETE CASCADE,
|
|
15
|
+
CONSTRAINT "playerInventoryHistory_playerId_foreign" FOREIGN KEY ("playerId") REFERENCES "playerOnGameServer"(id) ON DELETE CASCADE,
|
|
16
|
+
CONSTRAINT "playerInventoryHistory_itemId_foreign" FOREIGN KEY ("itemId") REFERENCES items(id) ON DELETE CASCADE,
|
|
17
|
+
CONSTRAINT "playerInventoryHistory_quantity_check" CHECK (quantity >= 0)
|
|
18
|
+
) PARTITION BY RANGE ("createdAt")
|
|
19
|
+
`);
|
|
20
|
+
|
|
21
|
+
await knex.raw(`
|
|
22
|
+
CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
|
|
23
|
+
RETURNS VOID AS $$
|
|
24
|
+
DECLARE
|
|
25
|
+
current_day_start DATE;
|
|
26
|
+
next_day_start DATE;
|
|
27
|
+
partition_name TEXT;
|
|
28
|
+
partition_exists BOOLEAN;
|
|
29
|
+
target_date DATE;
|
|
30
|
+
BEGIN
|
|
31
|
+
IF date_param IS NOT NULL THEN
|
|
32
|
+
target_date := DATE(date_param::TIMESTAMP);
|
|
33
|
+
ELSE
|
|
34
|
+
target_date := CURRENT_DATE;
|
|
35
|
+
END IF;
|
|
36
|
+
|
|
37
|
+
current_day_start := DATE_TRUNC('day', target_date);
|
|
38
|
+
next_day_start := current_day_start + INTERVAL '1 day';
|
|
39
|
+
|
|
40
|
+
partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
|
|
41
|
+
|
|
42
|
+
SELECT EXISTS (
|
|
43
|
+
SELECT 1 FROM pg_class c
|
|
44
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
45
|
+
WHERE c.relname = partition_name
|
|
46
|
+
AND n.nspname = 'public'
|
|
47
|
+
) INTO partition_exists;
|
|
48
|
+
|
|
49
|
+
IF NOT partition_exists THEN
|
|
50
|
+
EXECUTE format(
|
|
51
|
+
'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
|
|
52
|
+
FOR VALUES FROM (%L) TO (%L)',
|
|
53
|
+
partition_name,
|
|
54
|
+
current_day_start,
|
|
55
|
+
next_day_start
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
RAISE NOTICE 'Created partition: % for date: %',
|
|
59
|
+
partition_name, current_day_start;
|
|
60
|
+
END IF;
|
|
61
|
+
END;
|
|
62
|
+
$$ LANGUAGE plpgsql;
|
|
63
|
+
`);
|
|
64
|
+
|
|
65
|
+
await knex.raw(
|
|
66
|
+
`CREATE INDEX "playerInventoryHistory_domain_createdAt_idx" ON "playerInventoryHistory" (domain, "createdAt")`,
|
|
67
|
+
);
|
|
68
|
+
await knex.raw(`CREATE INDEX "playerInventoryHistory_playerId_idx" ON "playerInventoryHistory" ("playerId")`);
|
|
69
|
+
await knex.raw(`CREATE INDEX "playerInventoryHistory_itemId_idx" ON "playerInventoryHistory" ("itemId")`);
|
|
70
|
+
await knex.raw(
|
|
71
|
+
`CREATE INDEX "playerInventoryHistory_playerId_createdAt_idx" ON "playerInventoryHistory" ("playerId", "createdAt" DESC)`,
|
|
72
|
+
);
|
|
73
|
+
await knex.raw(
|
|
74
|
+
`CREATE INDEX "playerInventoryHistory_itemId_createdAt_idx" ON "playerInventoryHistory" ("itemId", "createdAt" DESC)`,
|
|
75
|
+
);
|
|
76
|
+
await knex.raw(
|
|
77
|
+
`CREATE INDEX "playerInventoryHistory_domain_itemId_createdAt_idx" ON "playerInventoryHistory" (domain, "itemId", "createdAt" DESC)`,
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
// Delete the old playerInventory table
|
|
81
|
+
await knex.raw('DROP TABLE IF EXISTS "playerInventory" CASCADE');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export async function down(knex: Knex): Promise<void> {
|
|
85
|
+
await knex.schema.createTable('playerInventory', (table) => {
|
|
86
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
87
|
+
table.timestamps(true, true, true);
|
|
88
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
89
|
+
table.uuid('playerId').references('playerOnGameServer.id').onDelete('CASCADE').notNullable();
|
|
90
|
+
table.uuid('itemId').references('items.id').onDelete('CASCADE').notNullable();
|
|
91
|
+
table.integer('quantity').notNullable();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
await knex.raw('DROP FUNCTION IF EXISTS ensure_player_inventory_history_partition(VARCHAR)');
|
|
95
|
+
await knex.raw('DROP TABLE IF EXISTS "playerInventoryHistory" CASCADE');
|
|
96
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Add platformId column to players table
|
|
5
|
+
await knex.schema.alterTable('players', (table) => {
|
|
6
|
+
table.string('platformId').nullable();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// Add unique constraint for domain + platformId
|
|
10
|
+
await knex.schema.alterTable('players', (table) => {
|
|
11
|
+
table.unique(['domain', 'platformId']);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// Drop the existing unique constraint
|
|
15
|
+
await knex.raw(`
|
|
16
|
+
ALTER TABLE players
|
|
17
|
+
DROP CONSTRAINT players_domain_steam_xbox_eos_unique;
|
|
18
|
+
`);
|
|
19
|
+
|
|
20
|
+
// Add new unique constraint that includes platformId
|
|
21
|
+
await knex.raw(`
|
|
22
|
+
ALTER TABLE players
|
|
23
|
+
ADD CONSTRAINT players_domain_steam_xbox_eos_platform_unique
|
|
24
|
+
UNIQUE NULLS NOT DISTINCT (domain, "steamId", "xboxLiveId", "epicOnlineServicesId", "platformId");
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export async function down(knex: Knex): Promise<void> {
|
|
29
|
+
// Drop the new unique constraint
|
|
30
|
+
await knex.raw(`
|
|
31
|
+
ALTER TABLE players
|
|
32
|
+
DROP CONSTRAINT players_domain_steam_xbox_eos_platform_unique;
|
|
33
|
+
`);
|
|
34
|
+
|
|
35
|
+
// Drop the individual platformId unique constraint
|
|
36
|
+
await knex.schema.alterTable('players', (table) => {
|
|
37
|
+
table.dropUnique(['domain', 'platformId']);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Remove platformId column
|
|
41
|
+
await knex.schema.alterTable('players', (table) => {
|
|
42
|
+
table.dropColumn('platformId');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Re-add the original unique constraint
|
|
46
|
+
await knex.raw(`
|
|
47
|
+
ALTER TABLE players
|
|
48
|
+
ADD CONSTRAINT players_domain_steam_xbox_eos_unique
|
|
49
|
+
UNIQUE NULLS NOT DISTINCT (domain, "steamId", "xboxLiveId", "epicOnlineServicesId");
|
|
50
|
+
`);
|
|
51
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Add dimension column to playerOnGameServer table
|
|
5
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
6
|
+
table.string('dimension').nullable();
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// Add dimension column to playerLocation table
|
|
10
|
+
await knex.schema.alterTable('playerLocation', (table) => {
|
|
11
|
+
table.string('dimension').nullable();
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export async function down(knex: Knex): Promise<void> {
|
|
16
|
+
// Remove dimension column from playerOnGameServer table
|
|
17
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
18
|
+
table.dropColumn('dimension');
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// Remove dimension column from playerLocation table
|
|
22
|
+
await knex.schema.alterTable('playerLocation', (table) => {
|
|
23
|
+
table.dropColumn('dimension');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.createTable('entities', (table) => {
|
|
5
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
6
|
+
table.timestamps(true, true, true);
|
|
7
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
8
|
+
table.uuid('gameserverId').references('gameservers.id').onDelete('CASCADE').notNullable();
|
|
9
|
+
table.string('name').notNullable();
|
|
10
|
+
table.string('code').notNullable();
|
|
11
|
+
table.text('description').nullable();
|
|
12
|
+
table.enum('type', ['hostile', 'friendly', 'neutral']).nullable();
|
|
13
|
+
table.jsonb('metadata').nullable();
|
|
14
|
+
// Add index on code since we'll use that in queries a lot
|
|
15
|
+
table.index('code');
|
|
16
|
+
// Add unique constraint to prevent duplicates
|
|
17
|
+
table.unique(['code', 'gameserverId', 'domain']);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Insert entity permissions
|
|
21
|
+
await knex('permission').insert([
|
|
22
|
+
{
|
|
23
|
+
permission: 'READ_ENTITIES',
|
|
24
|
+
description: 'Can view entity details',
|
|
25
|
+
friendlyName: 'Read Entities',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
permission: 'MANAGE_ENTITIES',
|
|
29
|
+
description: 'Can create, update, and delete entities',
|
|
30
|
+
friendlyName: 'Manage Entities',
|
|
31
|
+
},
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export async function down(knex: Knex): Promise<void> {
|
|
36
|
+
// Remove entity permissions
|
|
37
|
+
await knex('permission').whereIn('permission', ['READ_ENTITIES', 'MANAGE_ENTITIES']).del();
|
|
38
|
+
|
|
39
|
+
await knex.schema.dropTable('entities');
|
|
40
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Create optimized indices for the slow player count query:
|
|
5
|
+
// SELECT COUNT(DISTINCT players.id)
|
|
6
|
+
// FROM players
|
|
7
|
+
// INNER JOIN playerOnGameServer ON playerOnGameServer.playerId = players.id
|
|
8
|
+
// WHERE players.domain = $1 AND playerOnGameServer.lastSeen > $2
|
|
9
|
+
|
|
10
|
+
// Primary optimization: Composite index on playerOnGameServer for efficient join + filter
|
|
11
|
+
// This allows PostgreSQL to use the index for both the JOIN and WHERE clause
|
|
12
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
13
|
+
table.index(['playerId', 'lastSeen'], 'idx_playerongameserver_playerid_lastseen');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// Secondary optimization: Index on players.domain for the WHERE clause
|
|
17
|
+
await knex.schema.alterTable('players', (table) => {
|
|
18
|
+
table.index(['domain'], 'idx_players_domain');
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// Covering index on players(domain, id) to avoid table lookups after index scan
|
|
22
|
+
await knex.schema.alterTable('players', (table) => {
|
|
23
|
+
table.index(['domain', 'id'], 'idx_players_domain_id');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export async function down(knex: Knex): Promise<void> {
|
|
28
|
+
// Drop all indices created in the up function
|
|
29
|
+
|
|
30
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
31
|
+
table.dropIndex([], 'idx_playerongameserver_playerid_lastseen');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
await knex.schema.alterTable('players', (table) => {
|
|
35
|
+
table.dropIndex([], 'idx_players_domain');
|
|
36
|
+
table.dropIndex([], 'idx_players_domain_id');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Optimize the getTriggeredCommands query performance
|
|
5
|
+
// The query joins multiple tables and performs complex JSONB operations
|
|
6
|
+
|
|
7
|
+
// 1. Case-insensitive index on commands.trigger for efficient trigger matching
|
|
8
|
+
// This allows the LOWER(commands.trigger) = ? condition to use an index
|
|
9
|
+
await knex.raw('CREATE INDEX idx_commands_trigger_lower ON commands (LOWER(trigger))');
|
|
10
|
+
|
|
11
|
+
// 2. Index on moduleInstallations.gameserverId for efficient filtering
|
|
12
|
+
// The query filters by gameserverId through the join chain
|
|
13
|
+
await knex.schema.alterTable('moduleInstallations', (table) => {
|
|
14
|
+
table.index(['gameserverId'], 'idx_moduleinstallations_gameserverid');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// 3. Index on moduleInstallations.versionId for join optimization
|
|
18
|
+
// This helps the join between moduleInstallations and moduleVersions
|
|
19
|
+
await knex.schema.alterTable('moduleInstallations', (table) => {
|
|
20
|
+
table.index(['versionId'], 'idx_moduleinstallations_versionid');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// 4. GIN index on moduleInstallations.systemConfig for JSONB queries
|
|
24
|
+
// This optimizes the complex EXISTS subquery that searches command aliases
|
|
25
|
+
await knex.raw(`
|
|
26
|
+
CREATE INDEX idx_moduleinstallations_systemconfig_commands_gin
|
|
27
|
+
ON "moduleInstallations"
|
|
28
|
+
USING gin (("systemConfig" -> 'commands'))
|
|
29
|
+
`);
|
|
30
|
+
|
|
31
|
+
// 5. Composite index on commands for better join performance
|
|
32
|
+
// This helps when joining from moduleVersions to commands
|
|
33
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
34
|
+
table.index(['versionId', 'domain'], 'idx_commands_versionid_domain');
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export async function down(knex: Knex): Promise<void> {
|
|
39
|
+
// Drop all indices created in the up function
|
|
40
|
+
|
|
41
|
+
await knex.raw('DROP INDEX IF EXISTS idx_commands_trigger_lower');
|
|
42
|
+
|
|
43
|
+
await knex.schema.alterTable('moduleInstallations', (table) => {
|
|
44
|
+
table.dropIndex([], 'idx_moduleinstallations_gameserverid');
|
|
45
|
+
table.dropIndex([], 'idx_moduleinstallations_versionid');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
await knex.raw('DROP INDEX IF EXISTS idx_moduleinstallations_systemconfig_commands_gin');
|
|
49
|
+
|
|
50
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
51
|
+
table.dropIndex([], 'idx_commands_versionid_domain');
|
|
52
|
+
});
|
|
53
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// Add indexes for platform ID lookups in resolveRef
|
|
5
|
+
await knex.schema.alterTable('players', (table) => {
|
|
6
|
+
table.index(['domain', 'steamId'], 'idx_players_domain_steamid');
|
|
7
|
+
table.index(['domain', 'epicOnlineServicesId'], 'idx_players_domain_epiconlineservicesid');
|
|
8
|
+
table.index(['domain', 'xboxLiveId'], 'idx_players_domain_xboxliveid');
|
|
9
|
+
table.index(['domain', 'platformId'], 'idx_players_domain_platformid');
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Add composite index for playerOnGameServer findAssociations query
|
|
13
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
14
|
+
table.index(['domain', 'gameId', 'gameServerId'], 'idx_pog_domain_gameid_gameserverid');
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function down(knex: Knex): Promise<void> {
|
|
19
|
+
// Drop platform ID indexes
|
|
20
|
+
await knex.schema.alterTable('players', (table) => {
|
|
21
|
+
table.dropIndex([], 'idx_players_domain_steamid');
|
|
22
|
+
table.dropIndex([], 'idx_players_domain_epiconlineservicesid');
|
|
23
|
+
table.dropIndex([], 'idx_players_domain_xboxliveid');
|
|
24
|
+
table.dropIndex([], 'idx_players_domain_platformid');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Drop playerOnGameServer composite index
|
|
28
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
29
|
+
table.dropIndex([], 'idx_pog_domain_gameid_gameserverid');
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
5
|
+
table.string('ip').nullable();
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function down(knex: Knex): Promise<void> {
|
|
10
|
+
await knex.schema.alterTable('playerOnGameServer', (table) => {
|
|
11
|
+
table.dropColumn('ip');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex('permission').insert([
|
|
5
|
+
{
|
|
6
|
+
permission: 'READ_ITEMS',
|
|
7
|
+
description: 'Can view item details',
|
|
8
|
+
friendlyName: 'Read Items',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
permission: 'MANAGE_ITEMS',
|
|
12
|
+
description: 'Can create, update, and delete items',
|
|
13
|
+
friendlyName: 'Manage Items',
|
|
14
|
+
},
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function down(knex: Knex): Promise<void> {
|
|
19
|
+
await knex('permission').whereIn('permission', ['READ_ITEMS', 'MANAGE_ITEMS']).del();
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
5
|
+
table.jsonb('requiredPermissions').defaultTo('[]').notNullable();
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function down(knex: Knex): Promise<void> {
|
|
10
|
+
await knex.schema.alterTable('commands', (table) => {
|
|
11
|
+
table.dropColumn('requiredPermissions');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
const SHOP_CATEGORY_TABLE_NAME = 'shopCategory';
|
|
4
|
+
const SHOP_LISTING_CATEGORY_TABLE_NAME = 'shopListingCategory';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_CATEGORIES = [
|
|
7
|
+
{ name: 'Weapons', emoji: '⚔️' },
|
|
8
|
+
{ name: 'Armor', emoji: '🛡️' },
|
|
9
|
+
{ name: 'Building', emoji: '🏗️' },
|
|
10
|
+
{ name: 'Tools', emoji: '🔧' },
|
|
11
|
+
{ name: 'Consumables', emoji: '💊' },
|
|
12
|
+
{ name: 'Resources', emoji: '📦' },
|
|
13
|
+
{ name: 'Base', emoji: '🏠' },
|
|
14
|
+
{ name: 'Vehicles', emoji: '🚗' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
export async function up(knex: Knex): Promise<void> {
|
|
18
|
+
// Create shopCategory table (hierarchical categories)
|
|
19
|
+
await knex.schema.createTable(SHOP_CATEGORY_TABLE_NAME, (table) => {
|
|
20
|
+
table.timestamps(true, true, true);
|
|
21
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
22
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
23
|
+
table.string('name', 50).notNullable();
|
|
24
|
+
table.string('emoji', 10).notNullable();
|
|
25
|
+
table.uuid('parentId').nullable();
|
|
26
|
+
|
|
27
|
+
// Add self-referencing foreign key for parent category
|
|
28
|
+
table.foreign('parentId').references('id').inTable(SHOP_CATEGORY_TABLE_NAME).onDelete('SET NULL');
|
|
29
|
+
|
|
30
|
+
// Indexes for performance
|
|
31
|
+
table.index('domain');
|
|
32
|
+
table.index('parentId');
|
|
33
|
+
table.index(['domain', 'name']);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Add case-insensitive unique constraint on domain + name
|
|
37
|
+
await knex.raw(`
|
|
38
|
+
CREATE UNIQUE INDEX shopCategory_domain_name_unique
|
|
39
|
+
ON "${SHOP_CATEGORY_TABLE_NAME}" ("domain", LOWER("name"))
|
|
40
|
+
`);
|
|
41
|
+
|
|
42
|
+
// Create shopListingCategory junction table (many-to-many)
|
|
43
|
+
await knex.schema.createTable(SHOP_LISTING_CATEGORY_TABLE_NAME, (table) => {
|
|
44
|
+
table.timestamps(true, true, true);
|
|
45
|
+
table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid ()'));
|
|
46
|
+
table.string('domain').references('domains.id').onDelete('CASCADE').notNullable();
|
|
47
|
+
table.uuid('shopListingId').references('shopListing.id').onDelete('CASCADE').notNullable();
|
|
48
|
+
table.uuid('shopCategoryId').references('shopCategory.id').onDelete('CASCADE').notNullable();
|
|
49
|
+
|
|
50
|
+
// Indexes for performance
|
|
51
|
+
table.index('domain');
|
|
52
|
+
table.index('shopListingId');
|
|
53
|
+
table.index('shopCategoryId');
|
|
54
|
+
table.index(['shopListingId', 'shopCategoryId']);
|
|
55
|
+
|
|
56
|
+
// Ensure a listing can only be in a category once
|
|
57
|
+
table.unique(['shopListingId', 'shopCategoryId']);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Insert default categories for all existing domains
|
|
61
|
+
const domains = await knex('domains').select('id');
|
|
62
|
+
|
|
63
|
+
for (const domain of domains) {
|
|
64
|
+
const categoriesToInsert = DEFAULT_CATEGORIES.map((cat) => ({
|
|
65
|
+
...cat,
|
|
66
|
+
domain: domain.id,
|
|
67
|
+
parentId: null,
|
|
68
|
+
}));
|
|
69
|
+
|
|
70
|
+
// Insert categories, ignoring duplicates (in case some domains already have categories with these names)
|
|
71
|
+
for (const category of categoriesToInsert) {
|
|
72
|
+
const existing = await knex(SHOP_CATEGORY_TABLE_NAME)
|
|
73
|
+
.where('domain', category.domain)
|
|
74
|
+
.where('name', category.name)
|
|
75
|
+
.whereNull('parentId')
|
|
76
|
+
.first();
|
|
77
|
+
|
|
78
|
+
if (!existing) {
|
|
79
|
+
await knex(SHOP_CATEGORY_TABLE_NAME).insert(category);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export async function down(knex: Knex): Promise<void> {
|
|
86
|
+
// Remove default categories from all domains
|
|
87
|
+
await knex(SHOP_CATEGORY_TABLE_NAME)
|
|
88
|
+
.whereIn(
|
|
89
|
+
'name',
|
|
90
|
+
DEFAULT_CATEGORIES.map((c) => c.name),
|
|
91
|
+
)
|
|
92
|
+
.whereNull('parentId')
|
|
93
|
+
.delete();
|
|
94
|
+
|
|
95
|
+
// Drop tables in reverse dependency order
|
|
96
|
+
await knex.schema.dropTable(SHOP_LISTING_CATEGORY_TABLE_NAME);
|
|
97
|
+
await knex.schema.dropTable(SHOP_CATEGORY_TABLE_NAME);
|
|
98
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
|
|
3
|
+
export async function up(knex: Knex): Promise<void> {
|
|
4
|
+
// First, drop the primary key constraint from the parent table
|
|
5
|
+
await knex.raw(`
|
|
6
|
+
ALTER TABLE "playerInventoryHistory"
|
|
7
|
+
DROP CONSTRAINT IF EXISTS "playerInventoryHistory_pkey"
|
|
8
|
+
`);
|
|
9
|
+
|
|
10
|
+
// Get all existing partitions and drop their primary key constraints
|
|
11
|
+
const partitions = await knex.raw(`
|
|
12
|
+
SELECT
|
|
13
|
+
inhrelid::regclass AS partition_name
|
|
14
|
+
FROM pg_inherits
|
|
15
|
+
WHERE inhparent = '"playerInventoryHistory"'::regclass
|
|
16
|
+
`);
|
|
17
|
+
|
|
18
|
+
for (const partition of partitions.rows) {
|
|
19
|
+
// partition_name already includes schema, need to extract just the table name
|
|
20
|
+
const fullName = partition.partition_name;
|
|
21
|
+
const partitionName = fullName.includes('.')
|
|
22
|
+
? fullName.split('.').pop().replace(/"/g, '')
|
|
23
|
+
: fullName.replace(/"/g, '');
|
|
24
|
+
await knex.raw(`
|
|
25
|
+
ALTER TABLE "${partitionName}"
|
|
26
|
+
DROP CONSTRAINT IF EXISTS "${partitionName}_pkey"
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Create a regular (non-unique) composite index for query performance
|
|
31
|
+
// This replaces the primary key constraint functionality for lookups
|
|
32
|
+
await knex.raw(`
|
|
33
|
+
CREATE INDEX IF NOT EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
|
|
34
|
+
ON "playerInventoryHistory" ("createdAt", "playerId", "itemId")
|
|
35
|
+
`);
|
|
36
|
+
|
|
37
|
+
// Update the partition creation function to not include the composite primary key
|
|
38
|
+
await knex.raw(`
|
|
39
|
+
CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
|
|
40
|
+
RETURNS VOID AS $$
|
|
41
|
+
DECLARE
|
|
42
|
+
current_day_start DATE;
|
|
43
|
+
next_day_start DATE;
|
|
44
|
+
partition_name TEXT;
|
|
45
|
+
partition_exists BOOLEAN;
|
|
46
|
+
target_date DATE;
|
|
47
|
+
BEGIN
|
|
48
|
+
IF date_param IS NOT NULL THEN
|
|
49
|
+
target_date := DATE(date_param::TIMESTAMP);
|
|
50
|
+
ELSE
|
|
51
|
+
target_date := CURRENT_DATE;
|
|
52
|
+
END IF;
|
|
53
|
+
|
|
54
|
+
current_day_start := DATE_TRUNC('day', target_date);
|
|
55
|
+
next_day_start := current_day_start + INTERVAL '1 day';
|
|
56
|
+
|
|
57
|
+
partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
|
|
58
|
+
|
|
59
|
+
SELECT EXISTS (
|
|
60
|
+
SELECT 1 FROM pg_class c
|
|
61
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
62
|
+
WHERE c.relname = partition_name
|
|
63
|
+
AND n.nspname = 'public'
|
|
64
|
+
) INTO partition_exists;
|
|
65
|
+
|
|
66
|
+
IF NOT partition_exists THEN
|
|
67
|
+
EXECUTE format(
|
|
68
|
+
'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
|
|
69
|
+
FOR VALUES FROM (%L) TO (%L)',
|
|
70
|
+
partition_name,
|
|
71
|
+
current_day_start,
|
|
72
|
+
next_day_start
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
RAISE NOTICE 'Created partition: % for date: %',
|
|
76
|
+
partition_name, current_day_start;
|
|
77
|
+
END IF;
|
|
78
|
+
END;
|
|
79
|
+
$$ LANGUAGE plpgsql;
|
|
80
|
+
`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export async function down(knex: Knex): Promise<void> {
|
|
84
|
+
// Drop the new index
|
|
85
|
+
await knex.raw(`
|
|
86
|
+
DROP INDEX IF EXISTS "playerInventoryHistory_createdAt_playerId_itemId_idx"
|
|
87
|
+
`);
|
|
88
|
+
|
|
89
|
+
// No need to drop any primary key since we didn't add one in the up migration
|
|
90
|
+
|
|
91
|
+
// Restore the original composite primary key on the parent table
|
|
92
|
+
await knex.raw(`
|
|
93
|
+
ALTER TABLE "playerInventoryHistory"
|
|
94
|
+
ADD CONSTRAINT "playerInventoryHistory_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
|
|
95
|
+
`);
|
|
96
|
+
|
|
97
|
+
// Get all existing partitions and restore their primary key constraints
|
|
98
|
+
const partitions = await knex.raw(`
|
|
99
|
+
SELECT
|
|
100
|
+
inhrelid::regclass AS partition_name
|
|
101
|
+
FROM pg_inherits
|
|
102
|
+
WHERE inhparent = '"playerInventoryHistory"'::regclass
|
|
103
|
+
`);
|
|
104
|
+
|
|
105
|
+
for (const partition of partitions.rows) {
|
|
106
|
+
// partition_name already includes schema, need to extract just the table name
|
|
107
|
+
const fullName = partition.partition_name;
|
|
108
|
+
const partitionName = fullName.includes('.')
|
|
109
|
+
? fullName.split('.').pop().replace(/"/g, '')
|
|
110
|
+
: fullName.replace(/"/g, '');
|
|
111
|
+
await knex.raw(`
|
|
112
|
+
ALTER TABLE "${partitionName}"
|
|
113
|
+
ADD CONSTRAINT "${partitionName}_pkey" PRIMARY KEY ("createdAt", "playerId", "itemId")
|
|
114
|
+
`);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Restore the original partition creation function with the composite primary key
|
|
118
|
+
await knex.raw(`
|
|
119
|
+
CREATE OR REPLACE FUNCTION ensure_player_inventory_history_partition(date_param VARCHAR DEFAULT NULL)
|
|
120
|
+
RETURNS VOID AS $$
|
|
121
|
+
DECLARE
|
|
122
|
+
current_day_start DATE;
|
|
123
|
+
next_day_start DATE;
|
|
124
|
+
partition_name TEXT;
|
|
125
|
+
partition_exists BOOLEAN;
|
|
126
|
+
target_date DATE;
|
|
127
|
+
BEGIN
|
|
128
|
+
IF date_param IS NOT NULL THEN
|
|
129
|
+
target_date := DATE(date_param::TIMESTAMP);
|
|
130
|
+
ELSE
|
|
131
|
+
target_date := CURRENT_DATE;
|
|
132
|
+
END IF;
|
|
133
|
+
|
|
134
|
+
current_day_start := DATE_TRUNC('day', target_date);
|
|
135
|
+
next_day_start := current_day_start + INTERVAL '1 day';
|
|
136
|
+
|
|
137
|
+
partition_name := 'playerInventoryHistory_' || TO_CHAR(current_day_start, 'YYYY_MM_DD');
|
|
138
|
+
|
|
139
|
+
SELECT EXISTS (
|
|
140
|
+
SELECT 1 FROM pg_class c
|
|
141
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
142
|
+
WHERE c.relname = partition_name
|
|
143
|
+
AND n.nspname = 'public'
|
|
144
|
+
) INTO partition_exists;
|
|
145
|
+
|
|
146
|
+
IF NOT partition_exists THEN
|
|
147
|
+
EXECUTE format(
|
|
148
|
+
'CREATE TABLE %I PARTITION OF "playerInventoryHistory"
|
|
149
|
+
FOR VALUES FROM (%L) TO (%L)',
|
|
150
|
+
partition_name,
|
|
151
|
+
current_day_start,
|
|
152
|
+
next_day_start
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
RAISE NOTICE 'Created partition: % for date: %',
|
|
156
|
+
partition_name, current_day_start;
|
|
157
|
+
END IF;
|
|
158
|
+
END;
|
|
159
|
+
$$ LANGUAGE plpgsql;
|
|
160
|
+
`);
|
|
161
|
+
}
|