@neohm/nestend 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +1 -1
  2. package/dist/global/enums/table.builder.enum.d.ts +26 -0
  3. package/dist/global/enums/table.builder.enum.d.ts.map +1 -0
  4. package/dist/global/enums/table.builder.enum.js +34 -0
  5. package/dist/global/enums/table.builder.enum.js.map +1 -0
  6. package/dist/global/types/table.builder.types.d.ts +83 -0
  7. package/dist/global/types/table.builder.types.d.ts.map +1 -0
  8. package/dist/global/types/{migration.helper.types.js → table.builder.types.js} +1 -1
  9. package/dist/global/types/table.builder.types.js.map +1 -0
  10. package/dist/global/utilities/migration.bases.d.ts +20 -0
  11. package/dist/global/utilities/migration.bases.d.ts.map +1 -0
  12. package/dist/global/utilities/migration.bases.js +90 -0
  13. package/dist/global/utilities/migration.bases.js.map +1 -0
  14. package/dist/global/utilities/sql.util.d.ts +9 -0
  15. package/dist/global/utilities/sql.util.d.ts.map +1 -0
  16. package/dist/global/utilities/sql.util.js +141 -0
  17. package/dist/global/utilities/sql.util.js.map +1 -0
  18. package/dist/global/utilities/table.builder.d.ts +36 -0
  19. package/dist/global/utilities/table.builder.d.ts.map +1 -0
  20. package/dist/global/utilities/table.builder.js +158 -0
  21. package/dist/global/utilities/table.builder.js.map +1 -0
  22. package/dist/index.d.ts +3 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +9 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/migrations/1749600000001.CreateSysAdminUsersTable.d.ts +4 -4
  27. package/dist/migrations/1749600000001.CreateSysAdminUsersTable.d.ts.map +1 -1
  28. package/dist/migrations/1749600000001.CreateSysAdminUsersTable.js +16 -17
  29. package/dist/migrations/1749600000001.CreateSysAdminUsersTable.js.map +1 -1
  30. package/dist/migrations/1749600000002.CreateSysTenantsTable.d.ts +4 -4
  31. package/dist/migrations/1749600000002.CreateSysTenantsTable.d.ts.map +1 -1
  32. package/dist/migrations/1749600000002.CreateSysTenantsTable.js +34 -35
  33. package/dist/migrations/1749600000002.CreateSysTenantsTable.js.map +1 -1
  34. package/dist/migrations/1749600000003.CreateSysUsersTable.d.ts +4 -4
  35. package/dist/migrations/1749600000003.CreateSysUsersTable.d.ts.map +1 -1
  36. package/dist/migrations/1749600000003.CreateSysUsersTable.js +28 -29
  37. package/dist/migrations/1749600000003.CreateSysUsersTable.js.map +1 -1
  38. package/dist/migrations/1749600000004.CreateSysRolesTable.d.ts +4 -4
  39. package/dist/migrations/1749600000004.CreateSysRolesTable.d.ts.map +1 -1
  40. package/dist/migrations/1749600000004.CreateSysRolesTable.js +19 -19
  41. package/dist/migrations/1749600000004.CreateSysRolesTable.js.map +1 -1
  42. package/dist/migrations/1749600000005.CreateSysUserDetailsTable.d.ts +4 -4
  43. package/dist/migrations/1749600000005.CreateSysUserDetailsTable.d.ts.map +1 -1
  44. package/dist/migrations/1749600000005.CreateSysUserDetailsTable.js +22 -22
  45. package/dist/migrations/1749600000005.CreateSysUserDetailsTable.js.map +1 -1
  46. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.d.ts +4 -4
  47. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.d.ts.map +1 -1
  48. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js +18 -18
  49. package/dist/migrations/1749600000006.CreateSysUserRolesJoinTable.js.map +1 -1
  50. package/dist/migrations/1749600000007.CreateSysConstantTypesTable.d.ts +4 -4
  51. package/dist/migrations/1749600000007.CreateSysConstantTypesTable.d.ts.map +1 -1
  52. package/dist/migrations/1749600000007.CreateSysConstantTypesTable.js +13 -12
  53. package/dist/migrations/1749600000007.CreateSysConstantTypesTable.js.map +1 -1
  54. package/dist/migrations/1749600000008.CreateSysConstantsTable.d.ts +4 -4
  55. package/dist/migrations/1749600000008.CreateSysConstantsTable.d.ts.map +1 -1
  56. package/dist/migrations/1749600000008.CreateSysConstantsTable.js +14 -14
  57. package/dist/migrations/1749600000008.CreateSysConstantsTable.js.map +1 -1
  58. package/dist/migrations/1749600000009.CreateSysFailedJobsTable.d.ts +4 -4
  59. package/dist/migrations/1749600000009.CreateSysFailedJobsTable.d.ts.map +1 -1
  60. package/dist/migrations/1749600000009.CreateSysFailedJobsTable.js +17 -18
  61. package/dist/migrations/1749600000009.CreateSysFailedJobsTable.js.map +1 -1
  62. package/dist/migrations/1749600000010.CreateSysPropertiesTable.d.ts +4 -4
  63. package/dist/migrations/1749600000010.CreateSysPropertiesTable.d.ts.map +1 -1
  64. package/dist/migrations/1749600000010.CreateSysPropertiesTable.js +15 -15
  65. package/dist/migrations/1749600000010.CreateSysPropertiesTable.js.map +1 -1
  66. package/dist/migrations/1749600000011.CreateSysNotificationsTable.d.ts +4 -4
  67. package/dist/migrations/1749600000011.CreateSysNotificationsTable.d.ts.map +1 -1
  68. package/dist/migrations/1749600000011.CreateSysNotificationsTable.js +22 -21
  69. package/dist/migrations/1749600000011.CreateSysNotificationsTable.js.map +1 -1
  70. package/dist/migrations/1749600000012.CreateSysAuditLogsTable.d.ts +4 -4
  71. package/dist/migrations/1749600000012.CreateSysAuditLogsTable.d.ts.map +1 -1
  72. package/dist/migrations/1749600000012.CreateSysAuditLogsTable.js +17 -18
  73. package/dist/migrations/1749600000012.CreateSysAuditLogsTable.js.map +1 -1
  74. package/dist/migrations/1749600000013.CreateSysDocumentUploadsTable.d.ts +4 -4
  75. package/dist/migrations/1749600000013.CreateSysDocumentUploadsTable.d.ts.map +1 -1
  76. package/dist/migrations/1749600000013.CreateSysDocumentUploadsTable.js +25 -25
  77. package/dist/migrations/1749600000013.CreateSysDocumentUploadsTable.js.map +1 -1
  78. package/dist/migrations/1749600000014.CreateSysRefreshTokensTable.d.ts +4 -4
  79. package/dist/migrations/1749600000014.CreateSysRefreshTokensTable.d.ts.map +1 -1
  80. package/dist/migrations/1749600000014.CreateSysRefreshTokensTable.js +22 -24
  81. package/dist/migrations/1749600000014.CreateSysRefreshTokensTable.js.map +1 -1
  82. package/dist/migrations/1749600000015.CreateSysActivityLogsTable.d.ts +4 -4
  83. package/dist/migrations/1749600000015.CreateSysActivityLogsTable.d.ts.map +1 -1
  84. package/dist/migrations/1749600000015.CreateSysActivityLogsTable.js +15 -16
  85. package/dist/migrations/1749600000015.CreateSysActivityLogsTable.js.map +1 -1
  86. package/dist/migrations/1749600000016.CreateSysUserDeviceTokensTable.d.ts +4 -4
  87. package/dist/migrations/1749600000016.CreateSysUserDeviceTokensTable.d.ts.map +1 -1
  88. package/dist/migrations/1749600000016.CreateSysUserDeviceTokensTable.js +15 -18
  89. package/dist/migrations/1749600000016.CreateSysUserDeviceTokensTable.js.map +1 -1
  90. package/dist/migrations/1749600000017.CreateSysApiKeysTable.d.ts +4 -4
  91. package/dist/migrations/1749600000017.CreateSysApiKeysTable.d.ts.map +1 -1
  92. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js +23 -25
  93. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js.map +1 -1
  94. package/dist/migrations/1749600000018.CreateSysScheduledTasksTable.d.ts +4 -4
  95. package/dist/migrations/1749600000018.CreateSysScheduledTasksTable.d.ts.map +1 -1
  96. package/dist/migrations/1749600000018.CreateSysScheduledTasksTable.js +27 -26
  97. package/dist/migrations/1749600000018.CreateSysScheduledTasksTable.js.map +1 -1
  98. package/dist/migrations/1749600000019.CreateSysScheduledEventsTable.d.ts +4 -4
  99. package/dist/migrations/1749600000019.CreateSysScheduledEventsTable.d.ts.map +1 -1
  100. package/dist/migrations/1749600000019.CreateSysScheduledEventsTable.js +20 -20
  101. package/dist/migrations/1749600000019.CreateSysScheduledEventsTable.js.map +1 -1
  102. package/dist/migrations/1749600000020.CreateSysEmailTemplatesTable.d.ts +4 -4
  103. package/dist/migrations/1749600000020.CreateSysEmailTemplatesTable.d.ts.map +1 -1
  104. package/dist/migrations/1749600000020.CreateSysEmailTemplatesTable.js +20 -18
  105. package/dist/migrations/1749600000020.CreateSysEmailTemplatesTable.js.map +1 -1
  106. package/dist/migrations/1749600000021.CreateSysEmailNotificationLogsTable.d.ts +4 -4
  107. package/dist/migrations/1749600000021.CreateSysEmailNotificationLogsTable.d.ts.map +1 -1
  108. package/dist/migrations/1749600000021.CreateSysEmailNotificationLogsTable.js +14 -15
  109. package/dist/migrations/1749600000021.CreateSysEmailNotificationLogsTable.js.map +1 -1
  110. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.d.ts +4 -4
  111. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.d.ts.map +1 -1
  112. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.js +14 -14
  113. package/dist/migrations/1749600000022.CreateSysAdminRolesTable.js.map +1 -1
  114. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.d.ts +4 -4
  115. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.d.ts.map +1 -1
  116. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.js +22 -17
  117. package/dist/migrations/1749600000023.CreateSysAdminUserRolesJoinTable.js.map +1 -1
  118. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.d.ts +4 -4
  119. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.d.ts.map +1 -1
  120. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.js +19 -17
  121. package/dist/migrations/1749600000024.CreateSysAuthSessionsTable.js.map +1 -1
  122. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts +4 -4
  123. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts.map +1 -1
  124. package/dist/migrations/1749600000025.CreateSysScopesTable.js +20 -19
  125. package/dist/migrations/1749600000025.CreateSysScopesTable.js.map +1 -1
  126. package/dist/migrations/1749600000026.CreateSysApiScopesTable.d.ts +4 -4
  127. package/dist/migrations/1749600000026.CreateSysApiScopesTable.d.ts.map +1 -1
  128. package/dist/migrations/1749600000026.CreateSysApiScopesTable.js +22 -22
  129. package/dist/migrations/1749600000026.CreateSysApiScopesTable.js.map +1 -1
  130. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.d.ts +4 -4
  131. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.d.ts.map +1 -1
  132. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.js +20 -19
  133. package/dist/migrations/1749600000027.CreateSysTenantScopesTable.js.map +1 -1
  134. package/dist/migrations/1749600000028.CreateSysDocumentsTable.d.ts +4 -4
  135. package/dist/migrations/1749600000028.CreateSysDocumentsTable.d.ts.map +1 -1
  136. package/dist/migrations/1749600000028.CreateSysDocumentsTable.js +22 -21
  137. package/dist/migrations/1749600000028.CreateSysDocumentsTable.js.map +1 -1
  138. package/dist/migrations/1749600000029.CreateSysPdfTemplatesTable.d.ts +4 -4
  139. package/dist/migrations/1749600000029.CreateSysPdfTemplatesTable.d.ts.map +1 -1
  140. package/dist/migrations/1749600000029.CreateSysPdfTemplatesTable.js +19 -17
  141. package/dist/migrations/1749600000029.CreateSysPdfTemplatesTable.js.map +1 -1
  142. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts +4 -4
  143. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.d.ts.map +1 -1
  144. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js +17 -16
  145. package/dist/migrations/1749600000030.CreateSysTenantUsersTable.js.map +1 -1
  146. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts +4 -4
  147. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.d.ts.map +1 -1
  148. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js +28 -26
  149. package/dist/migrations/1749600000031.CreateSysTenantInvitationsTable.js.map +1 -1
  150. package/dist/migrations/1749600000032.CreateSysEmailVerificationTokensTable.d.ts +4 -4
  151. package/dist/migrations/1749600000032.CreateSysEmailVerificationTokensTable.d.ts.map +1 -1
  152. package/dist/migrations/1749600000032.CreateSysEmailVerificationTokensTable.js +19 -15
  153. package/dist/migrations/1749600000032.CreateSysEmailVerificationTokensTable.js.map +1 -1
  154. package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts +4 -4
  155. package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts.map +1 -1
  156. package/dist/migrations/1749600000033.CreateSysPermissionsTable.js +15 -14
  157. package/dist/migrations/1749600000033.CreateSysPermissionsTable.js.map +1 -1
  158. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts +4 -4
  159. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts.map +1 -1
  160. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js +16 -12
  161. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js.map +1 -1
  162. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts +4 -4
  163. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts.map +1 -1
  164. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js +18 -17
  165. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js.map +1 -1
  166. package/dist/migrations/1749600000037.CreateSysLimitsTable.d.ts +4 -4
  167. package/dist/migrations/1749600000037.CreateSysLimitsTable.d.ts.map +1 -1
  168. package/dist/migrations/1749600000037.CreateSysLimitsTable.js +19 -18
  169. package/dist/migrations/1749600000037.CreateSysLimitsTable.js.map +1 -1
  170. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.d.ts +4 -4
  171. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.d.ts.map +1 -1
  172. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.js +19 -17
  173. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.js.map +1 -1
  174. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.d.ts +4 -4
  175. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.d.ts.map +1 -1
  176. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.js +17 -14
  177. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.js.map +1 -1
  178. package/dist/migrations/1749600000041.CreateSysPlansTable.d.ts +4 -4
  179. package/dist/migrations/1749600000041.CreateSysPlansTable.d.ts.map +1 -1
  180. package/dist/migrations/1749600000041.CreateSysPlansTable.js +22 -20
  181. package/dist/migrations/1749600000041.CreateSysPlansTable.js.map +1 -1
  182. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.d.ts +4 -4
  183. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.d.ts.map +1 -1
  184. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.js +16 -12
  185. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.js.map +1 -1
  186. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.d.ts +4 -4
  187. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.d.ts.map +1 -1
  188. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.js +17 -13
  189. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.js.map +1 -1
  190. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.d.ts +4 -4
  191. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.d.ts.map +1 -1
  192. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.js +22 -21
  193. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.js.map +1 -1
  194. package/dist/migrations/1749600000045.CreateSysPaymentsTable.d.ts +4 -4
  195. package/dist/migrations/1749600000045.CreateSysPaymentsTable.d.ts.map +1 -1
  196. package/dist/migrations/1749600000045.CreateSysPaymentsTable.js +29 -28
  197. package/dist/migrations/1749600000045.CreateSysPaymentsTable.js.map +1 -1
  198. package/dist/migrations/1749600000046.CreateSysWebhookEventsTable.d.ts +4 -4
  199. package/dist/migrations/1749600000046.CreateSysWebhookEventsTable.d.ts.map +1 -1
  200. package/dist/migrations/1749600000046.CreateSysWebhookEventsTable.js +22 -19
  201. package/dist/migrations/1749600000046.CreateSysWebhookEventsTable.js.map +1 -1
  202. package/dist/migrations/1749600000047.CreateSysOtpsTable.d.ts +4 -4
  203. package/dist/migrations/1749600000047.CreateSysOtpsTable.d.ts.map +1 -1
  204. package/dist/migrations/1749600000047.CreateSysOtpsTable.js +22 -20
  205. package/dist/migrations/1749600000047.CreateSysOtpsTable.js.map +1 -1
  206. package/dist/migrations/1749600000049.CreateSysScriptsTable.d.ts +4 -4
  207. package/dist/migrations/1749600000049.CreateSysScriptsTable.d.ts.map +1 -1
  208. package/dist/migrations/1749600000049.CreateSysScriptsTable.js +15 -13
  209. package/dist/migrations/1749600000049.CreateSysScriptsTable.js.map +1 -1
  210. package/dist/migrations/1749600000050.CreateSysReportDetailsTable.d.ts +4 -4
  211. package/dist/migrations/1749600000050.CreateSysReportDetailsTable.d.ts.map +1 -1
  212. package/dist/migrations/1749600000050.CreateSysReportDetailsTable.js +30 -25
  213. package/dist/migrations/1749600000050.CreateSysReportDetailsTable.js.map +1 -1
  214. package/dist/migrations/1749600000051.CreateSysReportSheetsTable.d.ts +4 -4
  215. package/dist/migrations/1749600000051.CreateSysReportSheetsTable.d.ts.map +1 -1
  216. package/dist/migrations/1749600000051.CreateSysReportSheetsTable.js +20 -16
  217. package/dist/migrations/1749600000051.CreateSysReportSheetsTable.js.map +1 -1
  218. package/dist/migrations/1749600000052.CreateTnReportDetailsTable.d.ts +4 -4
  219. package/dist/migrations/1749600000052.CreateTnReportDetailsTable.d.ts.map +1 -1
  220. package/dist/migrations/1749600000052.CreateTnReportDetailsTable.js +20 -14
  221. package/dist/migrations/1749600000052.CreateTnReportDetailsTable.js.map +1 -1
  222. package/dist/migrations/1749600000053.CreateTnTenantReportsTable.d.ts +4 -4
  223. package/dist/migrations/1749600000053.CreateTnTenantReportsTable.d.ts.map +1 -1
  224. package/dist/migrations/1749600000053.CreateTnTenantReportsTable.js +22 -18
  225. package/dist/migrations/1749600000053.CreateTnTenantReportsTable.js.map +1 -1
  226. package/package.json +1 -1
  227. package/dist/global/types/migration.helper.types.d.ts +0 -27
  228. package/dist/global/types/migration.helper.types.d.ts.map +0 -1
  229. package/dist/global/types/migration.helper.types.js.map +0 -1
  230. package/dist/global/utilities/migration.helper.d.ts +0 -48
  231. package/dist/global/utilities/migration.helper.d.ts.map +0 -1
  232. package/dist/global/utilities/migration.helper.js +0 -275
  233. package/dist/global/utilities/migration.helper.js.map +0 -1
package/README.md CHANGED
@@ -101,7 +101,7 @@ these are free to change without a breaking release.
101
101
  | Area | Key exports | Notes |
102
102
  | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
103
103
  | Entities | `RootEntity`, `CommonEntity`, `CommonAdminEntity`, `UserEntity`, `AdminUserEntity`, `SystemRoleEntity`, `SystemAdminRoleEntity`, ... | uuid PK, soft deletes, `created_by`/`updated_by` (+ `creator`/`updater` relations), jsonb `attributes`; entity-level `findOneOrNew`, `hardDelete`, `restore`, `paginate` statics plus a row-wise `softDelete()` |
104
- | Migrations | `MigrationHelper`, `SeederUtility` (the 31 table migrations ship in `dist/migrations` — glob them, they are not barrel exports) | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding |
104
+ | Migrations | `CreateTable`, `AlterTable`, `TableBuilder`, `SeederUtility` (the 31 table migrations ship in `dist/migrations` — glob them, they are not barrel exports) | `tableBuilder.ids().string().audit()` chains, typed partial-index `where`, `addRecord()` seeding |
105
105
  | Queue | `QueueModule`, `QueueModule.withConnection()`, `QueueService`, `BaseJob` | BullMQ `@Processor`/`WorkerHost` consumer; auto-discovered jobs, duplicate prevention, recurring schedulers, completed jobs cleared from Redis on success (1-day TTL on failures), `clearQueue()`, retries, failures persisted to `sys_failed_jobs`; connection from `BULL_REDIS_*` or supplied by the app — never register `BullModule.forRoot()` yourself, two roots race over the worker's connection |
106
106
  | Scheduled events | `SystemScheduledTaskEntity`, `ScheduledEventEntity`, `ScheduleKind`, `ScheduleSpec`, `IsCronExpression` | schedule definitions in `sys_scheduled_tasks` → events in `sys_scheduled_events`; interval / cron / once specs with timezones, drift-free slots, horizon materialisation, catch-up + overlap policies, fire-once dispatch with backoff, cadence via `SCHEDULED_EVENT_MIN` |
107
107
  | Auth | `AuthModule`, `AuthService.validateRole()`/`validatePermission()`, `RoleHierarchy`, `TenantRole`, `Auth`, `JwtMiddleware` | imperative auth (open by default); scoped RBAC — roles ranked by priority within a scope (parent scopes cover children), permissions per role, scope admins granting their scope's roles, with `global.admin` overriding every check; JwtMiddleware resolves the user into `Auth`'s AsyncLocalStorage context per request; access + rotating refresh tokens; session-based logout invalidation (`sys_auth_sessions`); Google SSO via ID token at `POST /auth/google`; impersonation — a tenantless `has_global_access` user signs into one organization at `POST /auth/impersonation/login`; multi-organization membership with per-organization roles, organization switching and invitations by `global.admin` or scope admins (`TenantMembershipService`, `TenantInvitationService`) |
@@ -0,0 +1,26 @@
1
+ export declare enum ActorTable {
2
+ USER = "sys_users",
3
+ ADMIN = "sys_admin_users"
4
+ }
5
+ export declare enum TimestampColumn {
6
+ CREATED_AT = "created_at",
7
+ UPDATED_AT = "updated_at",
8
+ DELETED_AT = "deleted_at"
9
+ }
10
+ export declare enum AuditColumn {
11
+ CREATED_BY = "created_by",
12
+ UPDATED_BY = "updated_by"
13
+ }
14
+ export declare enum TableBuilderDefault {
15
+ PRIMARY_COLUMN = "id",
16
+ SERIAL_COLUMN = "sn",
17
+ STRING_LENGTH = 255,
18
+ NUMERIC_PRECISION = 12,
19
+ NUMERIC_SCALE = 2,
20
+ IDENTIFIER_MAX_LENGTH = 63
21
+ }
22
+ export declare enum SqlFunction {
23
+ RANDOM_UUID = "gen_random_uuid()",
24
+ NOW = "now()"
25
+ }
26
+ //# sourceMappingURL=table.builder.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.builder.enum.d.ts","sourceRoot":"","sources":["../../../src/global/enums/table.builder.enum.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,IAAI,cAAc;IAClB,KAAK,oBAAoB;CAC1B;AAED,oBAAY,eAAe;IACzB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B;AAED,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B;AAED,oBAAY,mBAAmB;IAC7B,cAAc,OAAO;IACrB,aAAa,OAAO;IACpB,aAAa,MAAM;IACnB,iBAAiB,KAAK;IACtB,aAAa,IAAI;IAEjB,qBAAqB,KAAK;CAC3B;AAED,oBAAY,WAAW;IACrB,WAAW,sBAAsB;IACjC,GAAG,UAAU;CACd"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqlFunction = exports.TableBuilderDefault = exports.AuditColumn = exports.TimestampColumn = exports.ActorTable = void 0;
4
+ var ActorTable;
5
+ (function (ActorTable) {
6
+ ActorTable["USER"] = "sys_users";
7
+ ActorTable["ADMIN"] = "sys_admin_users";
8
+ })(ActorTable || (exports.ActorTable = ActorTable = {}));
9
+ var TimestampColumn;
10
+ (function (TimestampColumn) {
11
+ TimestampColumn["CREATED_AT"] = "created_at";
12
+ TimestampColumn["UPDATED_AT"] = "updated_at";
13
+ TimestampColumn["DELETED_AT"] = "deleted_at";
14
+ })(TimestampColumn || (exports.TimestampColumn = TimestampColumn = {}));
15
+ var AuditColumn;
16
+ (function (AuditColumn) {
17
+ AuditColumn["CREATED_BY"] = "created_by";
18
+ AuditColumn["UPDATED_BY"] = "updated_by";
19
+ })(AuditColumn || (exports.AuditColumn = AuditColumn = {}));
20
+ var TableBuilderDefault;
21
+ (function (TableBuilderDefault) {
22
+ TableBuilderDefault["PRIMARY_COLUMN"] = "id";
23
+ TableBuilderDefault["SERIAL_COLUMN"] = "sn";
24
+ TableBuilderDefault[TableBuilderDefault["STRING_LENGTH"] = 255] = "STRING_LENGTH";
25
+ TableBuilderDefault[TableBuilderDefault["NUMERIC_PRECISION"] = 12] = "NUMERIC_PRECISION";
26
+ TableBuilderDefault[TableBuilderDefault["NUMERIC_SCALE"] = 2] = "NUMERIC_SCALE";
27
+ TableBuilderDefault[TableBuilderDefault["IDENTIFIER_MAX_LENGTH"] = 63] = "IDENTIFIER_MAX_LENGTH";
28
+ })(TableBuilderDefault || (exports.TableBuilderDefault = TableBuilderDefault = {}));
29
+ var SqlFunction;
30
+ (function (SqlFunction) {
31
+ SqlFunction["RANDOM_UUID"] = "gen_random_uuid()";
32
+ SqlFunction["NOW"] = "now()";
33
+ })(SqlFunction || (exports.SqlFunction = SqlFunction = {}));
34
+ //# sourceMappingURL=table.builder.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.builder.enum.js","sourceRoot":"","sources":["../../../src/global/enums/table.builder.enum.ts"],"names":[],"mappings":";;;AACA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,gCAAkB,CAAA;IAClB,uCAAyB,CAAA;AAC3B,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,4CAAyB,CAAA;IACzB,4CAAyB,CAAA;IACzB,4CAAyB,CAAA;AAC3B,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,wCAAyB,CAAA;AAC3B,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,2CAAoB,CAAA;IACpB,iFAAmB,CAAA;IACnB,wFAAsB,CAAA;IACtB,+EAAiB,CAAA;IAEjB,gGAA0B,CAAA;AAC5B,CAAC,EARW,mBAAmB,mCAAnB,mBAAmB,QAQ9B;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gDAAiC,CAAA;IACjC,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB"}
@@ -0,0 +1,83 @@
1
+ export type OnAction = 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'NO ACTION' | 'SET DEFAULT';
2
+ export interface ColumnModifiers {
3
+ nullable?: boolean;
4
+ default?: unknown;
5
+ unique?: boolean;
6
+ comment?: string;
7
+ }
8
+ export interface StringColumnModifiers extends ColumnModifiers {
9
+ length?: number;
10
+ }
11
+ export interface DecimalColumnModifiers extends ColumnModifiers {
12
+ precision?: number;
13
+ scale?: number;
14
+ }
15
+ export interface ForeignKeyOptions extends ColumnModifiers {
16
+ name: string;
17
+ foreignTable: string;
18
+ foreignColumn?: string;
19
+ onDelete?: OnAction;
20
+ onUpdate?: OnAction;
21
+ indexed?: boolean;
22
+ }
23
+ export interface AuditOptions {
24
+ actorTable?: string;
25
+ indexed?: boolean;
26
+ }
27
+ export type Scalar = string | number | boolean | bigint;
28
+ export type Operator = {
29
+ readonly eq: Scalar;
30
+ } | {
31
+ readonly ne: Scalar;
32
+ } | {
33
+ readonly gt: Scalar;
34
+ } | {
35
+ readonly gte: Scalar;
36
+ } | {
37
+ readonly lt: Scalar;
38
+ } | {
39
+ readonly lte: Scalar;
40
+ } | {
41
+ readonly in: readonly Scalar[];
42
+ } | {
43
+ readonly notIn: readonly Scalar[];
44
+ } | {
45
+ readonly isNull: boolean;
46
+ };
47
+ export type FieldCondition = Scalar | null | Operator;
48
+ export interface AndWhere {
49
+ readonly $and: readonly Where[];
50
+ }
51
+ export interface OrWhere {
52
+ readonly $or: readonly Where[];
53
+ }
54
+ export interface NotWhere {
55
+ readonly $not: Where;
56
+ }
57
+ export interface RawWhere {
58
+ readonly $raw: string;
59
+ }
60
+ export interface FieldsWhere {
61
+ readonly [column: string]: FieldCondition;
62
+ }
63
+ export type Where = AndWhere | OrWhere | NotWhere | RawWhere | FieldsWhere;
64
+ export type KeyPart = string | {
65
+ readonly lower: string;
66
+ } | {
67
+ readonly desc: string;
68
+ };
69
+ export interface IndexOptions {
70
+ name?: string;
71
+ unique?: boolean;
72
+ where?: Where;
73
+ }
74
+ export interface NamedIndexOptions {
75
+ name?: string;
76
+ }
77
+ export interface ExpressionIndex {
78
+ name: string;
79
+ expression: string;
80
+ unique: boolean;
81
+ where?: string;
82
+ }
83
+ //# sourceMappingURL=table.builder.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.builder.types.d.ts","sourceRoot":"","sources":["../../../src/global/types/table.builder.types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=migration.helper.types.js.map
3
+ //# sourceMappingURL=table.builder.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.builder.types.js","sourceRoot":"","sources":["../../../src/global/types/table.builder.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ import { TableBuilder } from './table.builder';
3
+ export { TableBuilder, live } from './table.builder';
4
+ export type * from '../types/table.builder.types';
5
+ declare abstract class TableMigration implements MigrationInterface {
6
+ protected abstract readonly table: string;
7
+ protected abstract define(tableBuilder: TableBuilder): void;
8
+ abstract up(queryRunner: QueryRunner): Promise<void>;
9
+ abstract down(queryRunner: QueryRunner): Promise<void>;
10
+ protected build(): TableBuilder;
11
+ }
12
+ export declare abstract class CreateTable extends TableMigration {
13
+ up(queryRunner: QueryRunner): Promise<void>;
14
+ down(queryRunner: QueryRunner): Promise<void>;
15
+ }
16
+ export declare abstract class AlterTable extends TableMigration {
17
+ up(queryRunner: QueryRunner): Promise<void>;
18
+ down(queryRunner: QueryRunner): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=migration.bases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.bases.d.ts","sourceRoot":"","sources":["../../../src/global/utilities/migration.bases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrD,mBAAmB,8BAA8B,CAAC;AAGlD,uBAAe,cAAe,YAAW,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAE3D,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtD,SAAS,CAAC,KAAK,IAAI,YAAY;CAKhC;AAGD,8BAAsB,WAAY,SAAQ,cAAc;IAChD,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAGpD;AAGD,8BAAsB,UAAW,SAAQ,cAAc;IAC/C,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BpD"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AlterTable = exports.CreateTable = exports.live = exports.TableBuilder = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const table_builder_1 = require("./table.builder");
6
+ var table_builder_2 = require("./table.builder");
7
+ Object.defineProperty(exports, "TableBuilder", { enumerable: true, get: function () { return table_builder_2.TableBuilder; } });
8
+ Object.defineProperty(exports, "live", { enumerable: true, get: function () { return table_builder_2.live; } });
9
+ class TableMigration {
10
+ build() {
11
+ const tableBuilder = new table_builder_1.TableBuilder(this.table);
12
+ this.define(tableBuilder);
13
+ return tableBuilder;
14
+ }
15
+ }
16
+ class CreateTable extends TableMigration {
17
+ async up(queryRunner) {
18
+ const tableBuilder = this.build();
19
+ await queryRunner.createTable(new typeorm_1.Table({
20
+ name: tableBuilder.table,
21
+ columns: tableBuilder.columns,
22
+ foreignKeys: tableBuilder.foreignKeys,
23
+ indices: tableBuilder.indices,
24
+ }), false);
25
+ await createExpressionIndices(queryRunner, tableBuilder);
26
+ }
27
+ async down(queryRunner) {
28
+ await queryRunner.dropTable(this.table, true, true, true);
29
+ }
30
+ }
31
+ exports.CreateTable = CreateTable;
32
+ class AlterTable extends TableMigration {
33
+ async up(queryRunner) {
34
+ const tableBuilder = this.build();
35
+ for (const column of tableBuilder.columns)
36
+ if (!(await queryRunner.hasColumn(tableBuilder.table, column.name)))
37
+ await queryRunner.addColumn(tableBuilder.table, column);
38
+ for (const foreignKey of tableBuilder.foreignKeys) {
39
+ const table = await queryRunner.getTable(tableBuilder.table);
40
+ const exists = table?.foreignKeys.some((existing) => sameColumns(existing.columnNames, foreignKey.columnNames));
41
+ if (!exists)
42
+ await queryRunner.createForeignKey(tableBuilder.table, foreignKey);
43
+ }
44
+ for (const index of tableBuilder.indices) {
45
+ const table = await queryRunner.getTable(tableBuilder.table);
46
+ const name = indexName(queryRunner, tableBuilder.table, index);
47
+ if (!table?.indices.some((existing) => existing.name === name))
48
+ await queryRunner.createIndex(tableBuilder.table, index);
49
+ }
50
+ await createExpressionIndices(queryRunner, tableBuilder);
51
+ }
52
+ async down(queryRunner) {
53
+ const tableBuilder = this.build();
54
+ const table = await queryRunner.getTable(tableBuilder.table);
55
+ if (!table)
56
+ return;
57
+ for (const index of tableBuilder.expressionIndices)
58
+ await queryRunner.query(`DROP INDEX IF EXISTS "${index.name}"`);
59
+ for (const index of tableBuilder.indices) {
60
+ const name = indexName(queryRunner, tableBuilder.table, index);
61
+ const existing = table.indices.find((candidate) => candidate.name === name);
62
+ if (existing)
63
+ await queryRunner.dropIndex(tableBuilder.table, existing);
64
+ }
65
+ for (const foreignKey of tableBuilder.foreignKeys) {
66
+ const existing = table.foreignKeys.find((candidate) => sameColumns(candidate.columnNames, foreignKey.columnNames));
67
+ if (existing)
68
+ await queryRunner.dropForeignKey(tableBuilder.table, existing);
69
+ }
70
+ for (const column of tableBuilder.columns)
71
+ if (await queryRunner.hasColumn(tableBuilder.table, column.name))
72
+ await queryRunner.dropColumn(tableBuilder.table, column.name);
73
+ }
74
+ }
75
+ exports.AlterTable = AlterTable;
76
+ async function createExpressionIndices(queryRunner, tableBuilder) {
77
+ for (const index of tableBuilder.expressionIndices) {
78
+ const where = index.where ? ` WHERE ${index.where}` : '';
79
+ await queryRunner.query(`CREATE ${index.unique ? 'UNIQUE ' : ''}INDEX IF NOT EXISTS "${index.name}" ON "${tableBuilder.table}" (${index.expression})${where}`);
80
+ }
81
+ }
82
+ function indexName(queryRunner, table, index) {
83
+ return (index.name ??
84
+ queryRunner.connection.namingStrategy.indexName(table, index.columnNames, index.where));
85
+ }
86
+ function sameColumns(left, right) {
87
+ return (left.length === right.length &&
88
+ [...left].sort().join(',') === [...right].sort().join(','));
89
+ }
90
+ //# sourceMappingURL=migration.bases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.bases.js","sourceRoot":"","sources":["../../../src/global/utilities/migration.bases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { KeyPart, Scalar, Where } from '../types/table.builder.types';
2
+ export declare function assertIdentifier(name: string): string;
3
+ export declare function sqlLiteral(value: string): string;
4
+ export declare function sqlValue(value: Scalar): string;
5
+ export declare function columnDefault(value: unknown): string | undefined;
6
+ export declare function keyPartColumn(part: KeyPart): string;
7
+ export declare function compileKeyParts(parts: readonly KeyPart[]): string;
8
+ export declare function compileWhere(where: Where): string;
9
+ //# sourceMappingURL=sql.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.util.d.ts","sourceRoot":"","sources":["../../../src/global/utilities/sql.util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,OAAO,EAIP,MAAM,EACN,KAAK,EACN,MAAM,8BAA8B,CAAC;AAGtC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAa9C;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWhE;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGnD;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CASjE;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAkBjD"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertIdentifier = assertIdentifier;
4
+ exports.sqlLiteral = sqlLiteral;
5
+ exports.sqlValue = sqlValue;
6
+ exports.columnDefault = columnDefault;
7
+ exports.keyPartColumn = keyPartColumn;
8
+ exports.compileKeyParts = compileKeyParts;
9
+ exports.compileWhere = compileWhere;
10
+ const table_builder_enum_1 = require("../enums/table.builder.enum");
11
+ function assertIdentifier(name) {
12
+ if (!/^[a-z_][a-z0-9_]*$/.test(name))
13
+ throw new Error(`Invalid SQL identifier: "${name}"`);
14
+ if (name.length > Number(table_builder_enum_1.TableBuilderDefault.IDENTIFIER_MAX_LENGTH))
15
+ throw new Error(`SQL identifier longer than 63 characters: "${name}"`);
16
+ return name;
17
+ }
18
+ function sqlLiteral(value) {
19
+ if (value.includes('\0'))
20
+ throw new Error('NUL byte in SQL literal');
21
+ return `'${value.replace(/'/g, "''")}'`;
22
+ }
23
+ function sqlValue(value) {
24
+ switch (typeof value) {
25
+ case 'string':
26
+ return sqlLiteral(value);
27
+ case 'boolean':
28
+ return value ? 'true' : 'false';
29
+ case 'bigint':
30
+ return value.toString();
31
+ default:
32
+ if (!Number.isFinite(value))
33
+ throw new Error(`Invalid numeric SQL value: ${value}`);
34
+ return value.toString();
35
+ }
36
+ }
37
+ function columnDefault(value) {
38
+ if (value === undefined)
39
+ return undefined;
40
+ if (value === null)
41
+ return 'NULL';
42
+ if (typeof value === 'string' ||
43
+ typeof value === 'number' ||
44
+ typeof value === 'boolean' ||
45
+ typeof value === 'bigint')
46
+ return sqlValue(value);
47
+ return sqlLiteral(JSON.stringify(value));
48
+ }
49
+ function keyPartColumn(part) {
50
+ if (typeof part === 'string')
51
+ return part;
52
+ return 'lower' in part ? part.lower : part.desc;
53
+ }
54
+ function compileKeyParts(parts) {
55
+ if (!parts.length)
56
+ throw new Error('An index needs at least one key part');
57
+ return parts
58
+ .map((part) => {
59
+ const column = assertIdentifier(keyPartColumn(part));
60
+ if (typeof part === 'string')
61
+ return column;
62
+ return 'lower' in part ? `lower(${column})` : `${column} DESC`;
63
+ })
64
+ .join(', ');
65
+ }
66
+ function compileWhere(where) {
67
+ const keys = Object.keys(where);
68
+ if (!keys.length)
69
+ throw new Error('Empty where condition');
70
+ if (keys.some((key) => key.startsWith('$')) && keys.length > 1)
71
+ throw new Error(`Combine ${keys.join(', ')} through $and; a $ key stands alone`);
72
+ if (isAnd(where))
73
+ return compileGroup(where.$and, ' AND ', '$and');
74
+ if (isOr(where))
75
+ return compileGroup(where.$or, ' OR ', '$or');
76
+ if (isNot(where))
77
+ return `NOT (${compileWhere(where.$not)})`;
78
+ if (isRaw(where)) {
79
+ const sql = where.$raw.trim();
80
+ if (!sql)
81
+ throw new Error('Empty $raw condition');
82
+ return sql;
83
+ }
84
+ return Object.entries(where)
85
+ .map(([column, condition]) => compileCondition(column, condition))
86
+ .join(' AND ');
87
+ }
88
+ function compileGroup(items, joiner, key) {
89
+ if (!items.length)
90
+ throw new Error(`Empty ${key} condition`);
91
+ if (items.length === 1)
92
+ return compileWhere(items[0]);
93
+ return items.map((item) => `(${compileWhere(item)})`).join(joiner);
94
+ }
95
+ function compileCondition(column, condition) {
96
+ assertIdentifier(column);
97
+ if (condition === null)
98
+ return `${column} IS NULL`;
99
+ if (typeof condition !== 'object')
100
+ return `${column} = ${sqlValue(condition)}`;
101
+ const keys = Object.keys(condition);
102
+ if (keys.length !== 1)
103
+ throw new Error(`Condition on "${column}" needs exactly one operator`);
104
+ if ('isNull' in condition)
105
+ return `${column} IS ${condition.isNull ? '' : 'NOT '}NULL`;
106
+ if ('in' in condition)
107
+ return `${column} IN (${sqlList(condition.in)})`;
108
+ if ('notIn' in condition)
109
+ return `${column} NOT IN (${sqlList(condition.notIn)})`;
110
+ if ('eq' in condition)
111
+ return `${column} = ${sqlValue(condition.eq)}`;
112
+ if ('ne' in condition)
113
+ return `${column} <> ${sqlValue(condition.ne)}`;
114
+ if ('gt' in condition)
115
+ return `${column} > ${sqlValue(condition.gt)}`;
116
+ if ('gte' in condition)
117
+ return `${column} >= ${sqlValue(condition.gte)}`;
118
+ if ('lt' in condition)
119
+ return `${column} < ${sqlValue(condition.lt)}`;
120
+ if ('lte' in condition)
121
+ return `${column} <= ${sqlValue(condition.lte)}`;
122
+ throw new Error(`Unknown operator "${keys[0]}" on "${column}"`);
123
+ }
124
+ function sqlList(values) {
125
+ if (!values.length)
126
+ throw new Error('Empty IN list');
127
+ return values.map(sqlValue).join(', ');
128
+ }
129
+ function isAnd(where) {
130
+ return '$and' in where;
131
+ }
132
+ function isOr(where) {
133
+ return '$or' in where;
134
+ }
135
+ function isNot(where) {
136
+ return '$not' in where;
137
+ }
138
+ function isRaw(where) {
139
+ return '$raw' in where;
140
+ }
141
+ //# sourceMappingURL=sql.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.util.js","sourceRoot":"","sources":["../../../src/global/utilities/sql.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { TableColumn, TableForeignKey, TableIndex } from 'typeorm';
2
+ import type { AuditOptions, ColumnModifiers, DecimalColumnModifiers, ExpressionIndex, ForeignKeyOptions, IndexOptions, KeyPart, NamedIndexOptions, StringColumnModifiers, Where } from '../types/table.builder.types';
3
+ export declare const live: Where;
4
+ export declare class TableBuilder {
5
+ readonly table: string;
6
+ readonly columns: TableColumn[];
7
+ readonly foreignKeys: TableForeignKey[];
8
+ readonly indices: TableIndex[];
9
+ readonly expressionIndices: ExpressionIndex[];
10
+ constructor(table: string);
11
+ primary(name?: string): this;
12
+ ids(): this;
13
+ string(name: string, mods?: StringColumnModifiers): this;
14
+ text(name: string, mods?: ColumnModifiers): this;
15
+ number(name: string, mods?: ColumnModifiers): this;
16
+ bigInteger(name: string, mods?: ColumnModifiers): this;
17
+ decimal(name: string, mods?: DecimalColumnModifiers): this;
18
+ boolean(name: string, mods?: ColumnModifiers): this;
19
+ date(name: string, mods?: ColumnModifiers): this;
20
+ dateOnly(name: string, mods?: ColumnModifiers): this;
21
+ time(name: string, mods?: ColumnModifiers): this;
22
+ json(name: string, mods?: ColumnModifiers): this;
23
+ uuid(name: string, mods?: ColumnModifiers): this;
24
+ foreign(options: ForeignKeyOptions): this;
25
+ timestamps(): this;
26
+ audit(options?: AuditOptions): this;
27
+ index(columns: string | string[], options?: IndexOptions): this;
28
+ unique(columns: string | string[], options?: Omit<IndexOptions, 'unique'>): this;
29
+ indexOn(parts: KeyPart[], options?: IndexOptions): this;
30
+ expressionIndex(name: string, expression: string, options?: Omit<IndexOptions, 'name'>): this;
31
+ softUnique(columns: string | string[], options?: NamedIndexOptions): this;
32
+ softUniqueLower(column: string, options?: NamedIndexOptions): this;
33
+ private indexName;
34
+ private add;
35
+ }
36
+ //# sourceMappingURL=table.builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.builder.d.ts","sourceRoot":"","sources":["../../../src/global/utilities/table.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AAQjB,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,EACN,MAAM,8BAA8B,CAAC;AAUtC,eAAO,MAAM,IAAI,EAAE,KAA8C,CAAC;AAMlE,qBAAa,YAAY;IAMX,QAAQ,CAAC,KAAK,EAAE,MAAM;IALlC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAM;IACrC,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE,CAAM;IAC7C,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAM;IACpC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,EAAE,CAAM;gBAE9B,KAAK,EAAE,MAAM;IAKlC,OAAO,CAAC,IAAI,GAAE,MAA2C,GAAG,IAAI;IAahE,GAAG,IAAI,IAAI;IASX,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,IAAI;IAM5D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAIpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAItD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAI1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,IAAI;IAO9D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAKvD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAIpD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAIxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAKpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAIpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,IAAI;IAKpD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAqBzC,UAAU,IAAI,IAAI;IAiBlB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI;IASvC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAmBnE,MAAM,CACJ,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAM,GACzC,IAAI;IAKP,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAW3D,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAM,GACvC,IAAI;IAWP,UAAU,CACR,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,GAAE,iBAAsB,GAC9B,IAAI;IASP,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAQtE,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,GAAG;CAsBZ"}