@mrxsys/mrx-core 2.4.0 → 2.5.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 (312) hide show
  1. package/CHANGELOG.md +318 -33
  2. package/README.md +3 -3
  3. package/dist/chunk-1a3wj3m1.js +272 -0
  4. package/dist/chunk-370444pc.js +43 -0
  5. package/dist/chunk-5qtpggzv.js +38 -0
  6. package/dist/chunk-84mqvfsk.js +69 -0
  7. package/dist/chunk-cq973ydc.js +82 -0
  8. package/dist/chunk-f5z7x01b.js +352 -0
  9. package/dist/chunk-pc66jgqv.js +220 -0
  10. package/dist/chunk-s07amdhx.js +77 -0
  11. package/dist/chunk-v8v7982b.js +58 -0
  12. package/dist/chunk-vknq69e0.js +23 -0
  13. package/dist/chunk-yvyahr2h.js +40 -0
  14. package/dist/errors/baseError.d.ts +9 -0
  15. package/dist/errors/enums/httpErrorStatusCodes.d.ts +42 -0
  16. package/dist/errors/httpError.d.ts +14 -0
  17. package/dist/errors/index.d.ts +2 -0
  18. package/dist/errors/index.js +11 -0
  19. package/dist/errors/types/baseErrorOptions.d.ts +15 -0
  20. package/dist/errors/types/httpErrorOptions.d.ts +13 -0
  21. package/dist/errors/types/index.d.ts +2 -0
  22. package/dist/modules/data/data.d.ts +115 -0
  23. package/dist/modules/data/enums/dataErrorKeys.d.ts +3 -0
  24. package/dist/modules/data/index.d.ts +1 -0
  25. package/dist/modules/data/index.js +16 -0
  26. package/dist/modules/data/transformers/camelCase.d.ts +25 -0
  27. package/dist/modules/data/transformers/index.d.ts +4 -0
  28. package/dist/modules/data/transformers/index.js +32 -0
  29. package/dist/modules/data/transformers/kebabCase.d.ts +25 -0
  30. package/dist/modules/data/transformers/pascalCase.d.ts +25 -0
  31. package/dist/modules/data/transformers/snakeCase.d.ts +25 -0
  32. package/dist/modules/data/types/camelCase.d.ts +1 -0
  33. package/dist/modules/data/types/caseTransformer.d.ts +13 -0
  34. package/dist/modules/data/types/index.d.ts +10 -0
  35. package/dist/modules/data/types/kebabCase.d.ts +1 -0
  36. package/dist/modules/data/types/pascalCase.d.ts +2 -0
  37. package/dist/modules/data/types/snakeCase.d.ts +1 -0
  38. package/dist/modules/data/types/transformKeysCamelCase.d.ts +4 -0
  39. package/dist/modules/data/types/transformKeysKebabCase.d.ts +4 -0
  40. package/dist/modules/data/types/transformKeysPascalCase.d.ts +4 -0
  41. package/dist/modules/data/types/transformKeysSnakeCase.d.ts +4 -0
  42. package/dist/modules/data/types/transformObjectKeys.d.ts +9 -0
  43. package/dist/modules/database/enums/databaseErrorKeys.d.ts +28 -0
  44. package/dist/modules/database/enums/mssqlErrorCode.d.ts +25 -0
  45. package/dist/modules/database/events/index.d.ts +2 -0
  46. package/dist/modules/database/events/mssqlEventMap.d.ts +6 -0
  47. package/dist/modules/database/events/tableEventMap.d.ts +7 -0
  48. package/dist/modules/database/index.d.ts +2 -0
  49. package/dist/modules/database/index.js +14 -0
  50. package/dist/{database → modules/database}/mssql.d.ts +21 -25
  51. package/dist/{database → modules/database}/table.d.ts +6 -6
  52. package/dist/modules/database/types/index.d.ts +3 -0
  53. package/dist/{database → modules/database}/types/mssqlDatabaseOption.d.ts +16 -37
  54. package/dist/modules/database/types/mssqlEventLog.d.ts +14 -0
  55. package/dist/modules/database/types/queryContext.d.ts +11 -0
  56. package/dist/modules/elysia/crud/crud.d.ts +46 -0
  57. package/dist/modules/elysia/crud/index.d.ts +1 -0
  58. package/dist/modules/elysia/crud/index.js +299 -0
  59. package/dist/modules/elysia/crud/types/crudOperationBaseOptions.d.ts +6 -0
  60. package/dist/modules/elysia/crud/types/crudOperationCountOptions.d.ts +2 -0
  61. package/dist/modules/elysia/crud/types/crudOperationDeleteOneOptions.d.ts +2 -0
  62. package/dist/modules/elysia/crud/types/crudOperationDeleteOptions.d.ts +2 -0
  63. package/dist/modules/elysia/crud/types/crudOperationFindOneOptions.d.ts +2 -0
  64. package/dist/modules/elysia/crud/types/crudOperationFindOptions.d.ts +2 -0
  65. package/dist/modules/elysia/crud/types/crudOperationInsertOptions.d.ts +2 -0
  66. package/dist/modules/elysia/crud/types/crudOperationUpdateOneOptions.d.ts +2 -0
  67. package/dist/modules/elysia/crud/types/crudOperationUpdateOptions.d.ts +2 -0
  68. package/dist/modules/elysia/crud/types/crudOperationsOptions.d.ts +18 -0
  69. package/dist/modules/elysia/crud/types/crudOptions.d.ts +23 -0
  70. package/dist/modules/elysia/crud/types/index.d.ts +11 -0
  71. package/dist/modules/elysia/crudSchema/crudSchema.d.ts +18 -0
  72. package/dist/modules/elysia/crudSchema/index.d.ts +1 -0
  73. package/dist/modules/elysia/crudSchema/index.js +10 -0
  74. package/dist/modules/elysia/crudSchema/types/adaptiveWhereClauseSchema.d.ts +31 -0
  75. package/dist/modules/elysia/crudSchema/types/crudModelsType.d.ts +14 -0
  76. package/dist/modules/elysia/crudSchema/types/crudSchemaOperations.d.ts +10 -0
  77. package/dist/modules/elysia/crudSchema/types/crudSchemaOptions.d.ts +13 -0
  78. package/dist/modules/elysia/crudSchema/types/index.d.ts +8 -0
  79. package/dist/modules/elysia/crudSchema/types/orderSchema.d.ts +11 -0
  80. package/dist/modules/elysia/crudSchema/types/qSchema.d.ts +15 -0
  81. package/dist/modules/elysia/crudSchema/types/queryOptionsBuilderOptions.d.ts +11 -0
  82. package/dist/modules/elysia/crudSchema/types/selectedFieldSchema.d.ts +6 -0
  83. package/dist/modules/elysia/crudSchema/utils/createAdaptiveWhereClauseSchema.d.ts +17 -0
  84. package/dist/modules/elysia/crudSchema/utils/createCountResponse200Schema.d.ts +11 -0
  85. package/dist/modules/elysia/crudSchema/utils/createCountSchema.d.ts +16 -0
  86. package/dist/modules/elysia/crudSchema/utils/createDeleteSchema.d.ts +18 -0
  87. package/dist/modules/elysia/crudSchema/utils/createFiltersSchema.d.ts +17 -0
  88. package/dist/modules/elysia/crudSchema/utils/createFindSchema.d.ts +22 -0
  89. package/dist/modules/elysia/crudSchema/utils/createIdParamSchema.d.ts +4 -0
  90. package/dist/modules/elysia/crudSchema/utils/createInsertSchema.d.ts +8 -0
  91. package/dist/modules/elysia/crudSchema/utils/createOrderSchema.d.ts +12 -0
  92. package/dist/modules/elysia/crudSchema/utils/createPropertiesSchema.d.ts +12 -0
  93. package/dist/modules/elysia/crudSchema/utils/createQSchema.d.ts +12 -0
  94. package/dist/modules/elysia/crudSchema/utils/createResponse200Schema.d.ts +5 -0
  95. package/dist/modules/elysia/crudSchema/utils/createSelectedFieldsSchema.d.ts +12 -0
  96. package/dist/modules/elysia/crudSchema/utils/createUpdateOneSchema.d.ts +4 -0
  97. package/dist/modules/elysia/crudSchema/utils/createUpdateSchema.d.ts +10 -0
  98. package/dist/modules/elysia/crudSchema/utils/index.d.ts +15 -0
  99. package/dist/modules/elysia/crudSchema/utils/index.js +37 -0
  100. package/dist/modules/elysia/crudSchema/utils/isDateFromElysiaTypeBox.d.ts +2 -0
  101. package/dist/modules/elysia/dbResolver/dbResolver.d.ts +17 -0
  102. package/dist/modules/elysia/dbResolver/enums/dbResolverErrorKeys.d.ts +3 -0
  103. package/dist/modules/elysia/dbResolver/index.d.ts +1 -0
  104. package/dist/modules/elysia/dbResolver/index.js +14 -0
  105. package/dist/modules/elysia/dbResolver/types/dynamicDbOptions.d.ts +7 -0
  106. package/dist/modules/elysia/dbResolver/types/index.d.ts +1 -0
  107. package/dist/modules/elysia/error/error.d.ts +34 -0
  108. package/dist/modules/elysia/error/index.d.ts +1 -0
  109. package/dist/modules/elysia/error/index.js +58 -0
  110. package/dist/modules/elysia/jwt/enums/jwtErrorKeys.d.ts +4 -0
  111. package/dist/modules/elysia/jwt/index.d.ts +1 -0
  112. package/dist/modules/elysia/jwt/index.js +81 -0
  113. package/dist/modules/elysia/jwt/jwt.d.ts +119 -0
  114. package/dist/modules/elysia/jwt/types/index.d.ts +1 -0
  115. package/dist/modules/elysia/jwt/types/jwtOptions.d.ts +98 -0
  116. package/dist/modules/elysia/microservice/index.d.ts +1 -0
  117. package/dist/modules/elysia/microservice/index.js +96 -0
  118. package/dist/{elysia → modules/elysia/microservice}/microservice.d.ts +1 -1
  119. package/dist/modules/elysia/ratelimit/enums/ratelimitErrorKeys.d.ts +3 -0
  120. package/dist/modules/elysia/ratelimit/index.d.ts +1 -0
  121. package/dist/modules/elysia/ratelimit/index.js +55 -0
  122. package/dist/{elysia → modules/elysia/ratelimit}/ratelimit.d.ts +3 -13
  123. package/dist/modules/elysia/ratelimit/types/index.d.ts +1 -0
  124. package/dist/{elysia → modules/elysia/ratelimit}/types/rateLimitOptions.d.ts +6 -16
  125. package/dist/modules/logger/enums/loggerErrorKeys.d.ts +6 -0
  126. package/dist/modules/logger/events/index.d.ts +1 -0
  127. package/dist/modules/logger/events/loggerEvents.d.ts +11 -0
  128. package/dist/modules/logger/index.d.ts +1 -0
  129. package/dist/modules/logger/index.js +139 -0
  130. package/dist/modules/logger/logger.d.ts +189 -0
  131. package/dist/{logger → modules/logger}/strategies/consoleLogger.d.ts +4 -4
  132. package/dist/{logger → modules/logger}/strategies/fileLogger.d.ts +4 -4
  133. package/dist/modules/logger/strategies/index.d.ts +2 -0
  134. package/dist/modules/logger/strategies/index.js +44 -0
  135. package/dist/modules/logger/types/index.d.ts +6 -0
  136. package/dist/modules/logger/types/index.js +1 -0
  137. package/dist/{logger → modules/logger}/types/logStreamChunk.d.ts +4 -4
  138. package/dist/{logger → modules/logger}/types/loggerStrategy.d.ts +1 -1
  139. package/dist/modules/mailer/enums/mailerErrorKeys.d.ts +5 -0
  140. package/dist/modules/mailer/index.d.ts +1 -0
  141. package/dist/modules/mailer/index.js +64 -0
  142. package/dist/{mailer → modules/mailer}/smtp.d.ts +6 -6
  143. package/dist/modules/mailer/types/index.d.ts +3 -0
  144. package/dist/modules/mailer/types/index.js +1 -0
  145. package/dist/{mailer → modules/mailer}/types/smtpCredentials.d.ts +2 -2
  146. package/dist/{mailer → modules/mailer}/types/smtpOptions.d.ts +5 -5
  147. package/dist/{mailer → modules/mailer}/types/smtpPoolOptions.d.ts +1 -1
  148. package/dist/modules/repository/index.d.ts +1 -0
  149. package/dist/modules/repository/index.js +10 -0
  150. package/dist/modules/repository/repository.d.ts +421 -0
  151. package/dist/modules/repository/types/adaptiveWhereClause.d.ts +30 -0
  152. package/dist/modules/repository/types/filter.d.ts +43 -0
  153. package/dist/modules/repository/types/index.d.ts +8 -0
  154. package/dist/modules/repository/types/index.js +1 -0
  155. package/dist/modules/repository/types/orderByItem.d.ts +42 -0
  156. package/dist/modules/repository/types/queryOptions.d.ts +36 -0
  157. package/dist/{repository → modules/repository}/types/queryOptionsExtendPagination.d.ts +2 -2
  158. package/dist/{repository → modules/repository}/types/queryOptionsExtendStream.d.ts +1 -1
  159. package/dist/modules/repository/types/selectedFields.d.ts +37 -0
  160. package/dist/modules/singletonManager/enums/singletonManagerErrorKeys.d.ts +4 -0
  161. package/dist/modules/singletonManager/index.d.ts +1 -0
  162. package/dist/modules/singletonManager/index.js +8 -0
  163. package/dist/modules/singletonManager/singletonManager.d.ts +75 -0
  164. package/dist/modules/typedEventEmitter/index.d.ts +1 -0
  165. package/dist/modules/typedEventEmitter/index.js +7 -0
  166. package/dist/{typedEventEmitter → modules/typedEventEmitter}/typedEventEmitter.d.ts +33 -11
  167. package/dist/modules/typedEventEmitter/types/index.d.ts +1 -0
  168. package/dist/modules/typedEventEmitter/types/index.js +1 -0
  169. package/dist/utils/enums/utilsErrorKeys.d.ts +3 -0
  170. package/dist/utils/env.d.ts +1 -1
  171. package/dist/utils/index.d.ts +3 -3
  172. package/dist/utils/index.js +32 -1
  173. package/dist/utils/isDateString.d.ts +16 -0
  174. package/dist/utils/stream.d.ts +12 -1
  175. package/dist/utils/types/index.d.ts +1 -1
  176. package/dist/utils/types/streamWithAsyncIterable.d.ts +12 -5
  177. package/package.json +128 -128
  178. package/dist/chunk-1c7w5cx7.js +0 -3
  179. package/dist/chunk-40pg2cqx.js +0 -2
  180. package/dist/chunk-4v4tp5qj.js +0 -2
  181. package/dist/chunk-4w7nd4nw.js +0 -2
  182. package/dist/chunk-5nvsx7md.js +0 -2
  183. package/dist/chunk-89mnpfvy.js +0 -2
  184. package/dist/chunk-91srr77d.js +0 -2
  185. package/dist/chunk-9hj714bv.js +0 -2
  186. package/dist/chunk-9rss6865.js +0 -2
  187. package/dist/chunk-df9xr1f5.js +0 -2
  188. package/dist/chunk-dq00mfya.js +0 -2
  189. package/dist/chunk-fnb68m68.js +0 -2
  190. package/dist/chunk-g6a16nyh.js +0 -2
  191. package/dist/chunk-gtgpa8nc.js +0 -2
  192. package/dist/chunk-gxjax5n3.js +0 -2
  193. package/dist/chunk-h9er1sh5.js +0 -2
  194. package/dist/chunk-mwpajm9x.js +0 -2
  195. package/dist/chunk-n5w9cwwg.js +0 -2
  196. package/dist/chunk-pt7wrvtr.js +0 -2
  197. package/dist/chunk-qndyhwdn.js +0 -2
  198. package/dist/chunk-v5dfx8mh.js +0 -2
  199. package/dist/chunk-wgq0yyqw.js +0 -2
  200. package/dist/chunk-wtfcgg9s.js +0 -2
  201. package/dist/chunk-z00b1r18.js +0 -2
  202. package/dist/data/data.d.ts +0 -99
  203. package/dist/data/enums/dataErrorKeys.d.ts +0 -7
  204. package/dist/data/enums/index.d.ts +0 -1
  205. package/dist/data/enums/index.js +0 -2
  206. package/dist/data/index.d.ts +0 -1
  207. package/dist/data/index.js +0 -2
  208. package/dist/data/transformers/camelCase.d.ts +0 -25
  209. package/dist/data/transformers/index.d.ts +0 -4
  210. package/dist/data/transformers/index.js +0 -2
  211. package/dist/data/transformers/kebabCase.d.ts +0 -25
  212. package/dist/data/transformers/pascalCase.d.ts +0 -25
  213. package/dist/data/transformers/snakeCase.d.ts +0 -25
  214. package/dist/data/types/index.d.ts +0 -1
  215. package/dist/data/types/keyTransformer.d.ts +0 -11
  216. package/dist/database/enums/databaseErrorKeys.d.ts +0 -52
  217. package/dist/database/enums/index.d.ts +0 -2
  218. package/dist/database/enums/index.js +0 -2
  219. package/dist/database/enums/mssqlErrorCode.d.ts +0 -25
  220. package/dist/database/events/index.d.ts +0 -2
  221. package/dist/database/events/mssqlEventMap.d.ts +0 -6
  222. package/dist/database/events/tableEventMap.d.ts +0 -7
  223. package/dist/database/index.d.ts +0 -2
  224. package/dist/database/index.js +0 -2
  225. package/dist/database/types/index.d.ts +0 -3
  226. package/dist/database/types/mssqlEventLog.d.ts +0 -29
  227. package/dist/database/types/queryContext.d.ts +0 -11
  228. package/dist/elysia/advancedSearch.d.ts +0 -460
  229. package/dist/elysia/crud.d.ts +0 -609
  230. package/dist/elysia/dynamicDatabaseSelector.d.ts +0 -352
  231. package/dist/elysia/enums/elysiaErrorKeys.d.ts +0 -12
  232. package/dist/elysia/enums/httpStatusCode.d.ts +0 -241
  233. package/dist/elysia/enums/index.d.ts +0 -2
  234. package/dist/elysia/enums/index.js +0 -2
  235. package/dist/elysia/error.d.ts +0 -46
  236. package/dist/elysia/index.d.ts +0 -7
  237. package/dist/elysia/index.js +0 -2
  238. package/dist/elysia/jwt.d.ts +0 -46
  239. package/dist/elysia/schemas/index.d.ts +0 -2
  240. package/dist/elysia/schemas/index.js +0 -2
  241. package/dist/elysia/types/crudOptions.d.ts +0 -126
  242. package/dist/elysia/types/crudRoutes.d.ts +0 -2
  243. package/dist/elysia/types/dynamicDatabaseSelectorPluginOptions.d.ts +0 -30
  244. package/dist/elysia/types/index.d.ts +0 -5
  245. package/dist/elysia/types/jwtOptions.d.ts +0 -92
  246. package/dist/error/coreError.d.ts +0 -89
  247. package/dist/error/index.d.ts +0 -1
  248. package/dist/error/index.js +0 -2
  249. package/dist/error/types/coreErrorOptions.d.ts +0 -21
  250. package/dist/error/types/index.d.ts +0 -1
  251. package/dist/index.d.ts +0 -68
  252. package/dist/index.js +0 -2
  253. package/dist/logger/enums/index.d.ts +0 -1
  254. package/dist/logger/enums/index.js +0 -2
  255. package/dist/logger/enums/loggerErrorKeys.d.ts +0 -6
  256. package/dist/logger/events/index.d.ts +0 -1
  257. package/dist/logger/events/loggerEvents.d.ts +0 -4
  258. package/dist/logger/index.d.ts +0 -1
  259. package/dist/logger/index.js +0 -2
  260. package/dist/logger/logger.d.ts +0 -173
  261. package/dist/logger/strategies/index.d.ts +0 -2
  262. package/dist/logger/strategies/index.js +0 -2
  263. package/dist/logger/types/index.d.ts +0 -6
  264. package/dist/mailer/enums/index.d.ts +0 -1
  265. package/dist/mailer/enums/index.js +0 -2
  266. package/dist/mailer/enums/mailerErrorKeys.d.ts +0 -8
  267. package/dist/mailer/index.d.ts +0 -1
  268. package/dist/mailer/index.js +0 -2
  269. package/dist/mailer/types/index.d.ts +0 -3
  270. package/dist/repository/index.d.ts +0 -1
  271. package/dist/repository/index.js +0 -2
  272. package/dist/repository/repository.d.ts +0 -378
  273. package/dist/repository/types/advancedSearch.d.ts +0 -47
  274. package/dist/repository/types/index.d.ts +0 -8
  275. package/dist/repository/types/orderBy.d.ts +0 -21
  276. package/dist/repository/types/queryOptions.d.ts +0 -33
  277. package/dist/repository/types/selectedFields.d.ts +0 -16
  278. package/dist/repository/types/whereClause.d.ts +0 -15
  279. package/dist/singletonManager/enums/index.d.ts +0 -1
  280. package/dist/singletonManager/enums/index.js +0 -2
  281. package/dist/singletonManager/enums/singletonManagerErrorKeys.d.ts +0 -7
  282. package/dist/singletonManager/index.d.ts +0 -1
  283. package/dist/singletonManager/index.js +0 -2
  284. package/dist/singletonManager/singletonManager.d.ts +0 -112
  285. package/dist/store/index.d.ts +0 -1
  286. package/dist/store/index.js +0 -2
  287. package/dist/store/redis.d.ts +0 -6
  288. package/dist/typedEventEmitter/index.d.ts +0 -1
  289. package/dist/typedEventEmitter/index.js +0 -2
  290. package/dist/typedEventEmitter/types/index.d.ts +0 -1
  291. package/dist/utils/enums/index.d.ts +0 -1
  292. package/dist/utils/enums/index.js +0 -2
  293. package/dist/utils/enums/utilErrorKeys.d.ts +0 -4
  294. package/dist/utils/isIsoDateString.d.ts +0 -1
  295. /package/dist/{data → errors}/types/index.js +0 -0
  296. /package/dist/{database/events → modules/data/types}/index.js +0 -0
  297. /package/dist/{database/types → modules/database/events}/index.js +0 -0
  298. /package/dist/{elysia → modules/database}/types/index.js +0 -0
  299. /package/dist/{error → modules/elysia/crud}/types/index.js +0 -0
  300. /package/dist/{logger/events → modules/elysia/crudSchema/types}/index.js +0 -0
  301. /package/dist/{logger → modules/elysia/dbResolver}/types/index.js +0 -0
  302. /package/dist/{mailer → modules/elysia/jwt}/types/index.js +0 -0
  303. /package/dist/{elysia → modules/elysia/microservice}/schemas/info.d.ts +0 -0
  304. /package/dist/{elysia → modules/elysia/microservice}/schemas/ping.d.ts +0 -0
  305. /package/dist/{repository → modules/elysia/ratelimit}/types/index.js +0 -0
  306. /package/dist/{typedEventEmitter/types → modules/logger/events}/index.js +0 -0
  307. /package/dist/{logger → modules/logger}/types/bodiesIntersection.d.ts +0 -0
  308. /package/dist/{logger → modules/logger}/types/logLevels.d.ts +0 -0
  309. /package/dist/{logger → modules/logger}/types/strategyBody.d.ts +0 -0
  310. /package/dist/{logger → modules/logger}/types/strategyMap.d.ts +0 -0
  311. /package/dist/{repository → modules/repository}/types/transaction.d.ts +0 -0
  312. /package/dist/{typedEventEmitter → modules/typedEventEmitter}/types/eventMap.d.ts +0 -0
@@ -0,0 +1,352 @@
1
+ import {
2
+ filterByKeyExclusionRecursive
3
+ } from "./chunk-cq973ydc.js";
4
+
5
+ // source/modules/elysia/crudSchema/utils/createCountResponse200Schema.ts
6
+ import { t } from "elysia";
7
+ var createCountResponse200Schema = () => t.Object({
8
+ message: t.String(),
9
+ content: t.Number()
10
+ });
11
+
12
+ // source/modules/elysia/crudSchema/utils/isDateFromElysiaTypeBox.ts
13
+ import { Kind } from "@sinclair/typebox/type";
14
+ var isDateFromElysiaTypeBox = (schema) => schema[Kind] === "Union" && Array.isArray(schema.anyOf) && schema.anyOf.length === 4 && schema.anyOf.some((item) => item[Kind] === "Date") && schema.anyOf.some((item) => item[Kind] === "String" && item.format === "date-time") && schema.anyOf.some((item) => item[Kind] === "String" && item.format === "date") && schema.anyOf.some((item) => item[Kind] === "Number");
15
+
16
+ // source/modules/elysia/crudSchema/utils/createAdaptiveWhereClauseSchema.ts
17
+ import {
18
+ TypeGuard
19
+ } from "@sinclair/typebox";
20
+ import { t as t2 } from "elysia";
21
+ var createAdaptiveWhereClauseSchema = (schema) => {
22
+ const common = {
23
+ $eq: schema,
24
+ $neq: schema,
25
+ $isNull: t2.Boolean()
26
+ };
27
+ const strNumDate = TypeGuard.IsString(schema) || TypeGuard.IsNumber(schema) || isDateFromElysiaTypeBox(schema) ? {
28
+ $in: t2.Array(schema, { minItems: 1, uniqueItems: true }),
29
+ $nin: t2.Array(schema, { minItems: 1, uniqueItems: true }),
30
+ $like: t2.String(),
31
+ $nlike: t2.String()
32
+ } : {};
33
+ const numDate = TypeGuard.IsNumber(schema) || isDateFromElysiaTypeBox(schema) ? {
34
+ $lt: schema,
35
+ $lte: schema,
36
+ $gt: schema,
37
+ $gte: schema,
38
+ $between: t2.Tuple([schema, schema]),
39
+ $nbetween: t2.Tuple([schema, schema])
40
+ } : {};
41
+ return t2.Partial(t2.Object({ ...common, ...strNumDate, ...numDate }));
42
+ };
43
+
44
+ // source/modules/elysia/crudSchema/utils/createPropertiesSchema.ts
45
+ import { t as t3 } from "elysia";
46
+ var createPropertiesSchema = (schema) => {
47
+ const { properties } = schema;
48
+ const clauseSchema = {};
49
+ for (const [key, propertySchema] of Object.entries(properties))
50
+ clauseSchema[key] = t3.Union([
51
+ createAdaptiveWhereClauseSchema(propertySchema),
52
+ propertySchema
53
+ ]);
54
+ return t3.Object(clauseSchema);
55
+ };
56
+
57
+ // source/modules/elysia/crudSchema/utils/createQSchema.ts
58
+ import { t as t4 } from "elysia/type-system";
59
+ var createQSchema = (schema) => t4.Union([
60
+ t4.Object({
61
+ selectedFields: t4.Union([
62
+ t4.KeyOf(schema),
63
+ t4.Array(t4.KeyOf(schema), {
64
+ minItems: 1,
65
+ uniqueItems: true
66
+ })
67
+ ]),
68
+ value: t4.Union([
69
+ t4.Number(),
70
+ t4.String()
71
+ ])
72
+ }),
73
+ t4.Number(),
74
+ t4.String()
75
+ ]);
76
+
77
+ // source/modules/elysia/crudSchema/utils/createFiltersSchema.ts
78
+ import { t as t5 } from "elysia";
79
+ var createFiltersSchema = (schema) => t5.Composite([
80
+ t5.Object({
81
+ $q: createQSchema(schema)
82
+ }),
83
+ createPropertiesSchema(schema)
84
+ ], {
85
+ minProperties: 1
86
+ });
87
+
88
+ // source/modules/elysia/crudSchema/utils/createCountSchema.ts
89
+ import { t as t6 } from "elysia";
90
+ var createCountSchema = (schema) => {
91
+ const sanitizedSchema = filterByKeyExclusionRecursive(schema, [
92
+ "minLength",
93
+ "maxLength",
94
+ "pattern",
95
+ "minimum",
96
+ "maximum",
97
+ "exclusiveMinimum",
98
+ "exclusiveMaximum",
99
+ "multipleOf",
100
+ "minItems",
101
+ "maxItems",
102
+ "maxContains",
103
+ "minContains",
104
+ "minProperties",
105
+ "maxProperties",
106
+ "uniqueItems",
107
+ "minimumTimestamp",
108
+ "maximumTimestamp",
109
+ "exclusiveMinimumTimestamp",
110
+ "exclusiveMaximumTimestamp",
111
+ "multipleOfTimestamp",
112
+ "required",
113
+ "examples",
114
+ "example",
115
+ "default",
116
+ "title",
117
+ "description"
118
+ ]);
119
+ return t6.Partial(t6.Object({
120
+ queryOptions: t6.Partial(t6.Object({
121
+ filters: t6.Union([
122
+ t6.Partial(createFiltersSchema(sanitizedSchema)),
123
+ t6.Array(t6.Partial(createFiltersSchema(sanitizedSchema)))
124
+ ])
125
+ }))
126
+ }));
127
+ };
128
+
129
+ // source/modules/elysia/crudSchema/utils/createSelectedFieldsSchema.ts
130
+ import { t as t7 } from "elysia/type-system";
131
+ var createSelectedFieldsSchema = (schema) => t7.Union([
132
+ t7.KeyOf(schema),
133
+ t7.Literal("*"),
134
+ t7.Array(t7.KeyOf(schema), {
135
+ minItems: 1,
136
+ uniqueItems: true
137
+ })
138
+ ]);
139
+
140
+ // source/modules/elysia/crudSchema/utils/createDeleteSchema.ts
141
+ import { t as t8 } from "elysia";
142
+ var createDeleteSchema = (schema) => {
143
+ const sanitizedSchema = filterByKeyExclusionRecursive(schema, [
144
+ "minLength",
145
+ "maxLength",
146
+ "pattern",
147
+ "minimum",
148
+ "maximum",
149
+ "exclusiveMinimum",
150
+ "exclusiveMaximum",
151
+ "multipleOf",
152
+ "minItems",
153
+ "maxItems",
154
+ "maxContains",
155
+ "minContains",
156
+ "minProperties",
157
+ "maxProperties",
158
+ "uniqueItems",
159
+ "minimumTimestamp",
160
+ "maximumTimestamp",
161
+ "exclusiveMinimumTimestamp",
162
+ "exclusiveMaximumTimestamp",
163
+ "multipleOfTimestamp",
164
+ "required",
165
+ "examples",
166
+ "example",
167
+ "default",
168
+ "title",
169
+ "description"
170
+ ]);
171
+ return t8.Object({
172
+ queryOptions: t8.Object({
173
+ selectedFields: t8.Optional(createSelectedFieldsSchema(sanitizedSchema)),
174
+ filters: t8.Union([
175
+ t8.Partial(createFiltersSchema(sanitizedSchema)),
176
+ t8.Array(t8.Partial(createFiltersSchema(sanitizedSchema)), { minItems: 1 })
177
+ ])
178
+ })
179
+ });
180
+ };
181
+
182
+ // source/modules/elysia/crudSchema/utils/createOrderSchema.ts
183
+ import { t as t9 } from "elysia/type-system";
184
+ var createOrderSchema = (schema) => t9.Union([
185
+ t9.Object({
186
+ selectedField: t9.KeyOf(schema),
187
+ direction: t9.Union([t9.Literal("asc"), t9.Literal("desc")])
188
+ }),
189
+ t9.Array(t9.Object({
190
+ selectedField: t9.KeyOf(schema),
191
+ direction: t9.Union([t9.Literal("asc"), t9.Literal("desc")])
192
+ }), {
193
+ minItems: 1,
194
+ uniqueItems: true
195
+ })
196
+ ]);
197
+
198
+ // source/modules/elysia/crudSchema/utils/createFindSchema.ts
199
+ import { t as t10 } from "elysia";
200
+ var createFindSchema = (schema) => {
201
+ const sanitizedSchema = filterByKeyExclusionRecursive(schema, [
202
+ "minLength",
203
+ "maxLength",
204
+ "pattern",
205
+ "minimum",
206
+ "maximum",
207
+ "exclusiveMinimum",
208
+ "exclusiveMaximum",
209
+ "multipleOf",
210
+ "minItems",
211
+ "maxItems",
212
+ "maxContains",
213
+ "minContains",
214
+ "minProperties",
215
+ "maxProperties",
216
+ "uniqueItems",
217
+ "minimumTimestamp",
218
+ "maximumTimestamp",
219
+ "exclusiveMinimumTimestamp",
220
+ "exclusiveMaximumTimestamp",
221
+ "multipleOfTimestamp",
222
+ "required",
223
+ "examples",
224
+ "example",
225
+ "default",
226
+ "title",
227
+ "description"
228
+ ]);
229
+ return t10.Partial(t10.Object({
230
+ queryOptions: t10.Partial(t10.Object({
231
+ selectedFields: createSelectedFieldsSchema(sanitizedSchema),
232
+ orderBy: createOrderSchema(sanitizedSchema),
233
+ filters: t10.Union([
234
+ t10.Partial(createFiltersSchema(sanitizedSchema)),
235
+ t10.Array(t10.Partial(createFiltersSchema(sanitizedSchema)))
236
+ ]),
237
+ limit: t10.Number({
238
+ default: 100,
239
+ minimum: 1
240
+ }),
241
+ offset: t10.Number({
242
+ default: 0,
243
+ minimum: 0
244
+ })
245
+ }))
246
+ }));
247
+ };
248
+
249
+ // source/modules/elysia/crudSchema/utils/createIdParamSchema.ts
250
+ import { t as t11 } from "elysia";
251
+ var createIdParamSchema = () => t11.Object({
252
+ id: t11.Union([
253
+ t11.String({
254
+ format: "uuid"
255
+ }),
256
+ t11.Number({
257
+ minimum: 1,
258
+ maximum: Number.MAX_SAFE_INTEGER
259
+ })
260
+ ])
261
+ });
262
+
263
+ // source/modules/elysia/crudSchema/utils/createResponse200Schema.ts
264
+ import { TypeGuard as TypeGuard2 } from "@sinclair/typebox";
265
+ import { t as t12 } from "elysia";
266
+ var createResponse200Schema = (schema) => {
267
+ const sanitizedSchema = filterByKeyExclusionRecursive(schema, [
268
+ "minLength",
269
+ "maxLength",
270
+ "pattern",
271
+ "format",
272
+ "minimum",
273
+ "maximum",
274
+ "exclusiveMinimum",
275
+ "exclusiveMaximum",
276
+ "multipleOf",
277
+ "minItems",
278
+ "maxItems",
279
+ "maxContains",
280
+ "minContains",
281
+ "minProperties",
282
+ "maxProperties",
283
+ "uniqueItems",
284
+ "minimumTimestamp",
285
+ "maximumTimestamp",
286
+ "exclusiveMinimumTimestamp",
287
+ "exclusiveMaximumTimestamp",
288
+ "multipleOfTimestamp",
289
+ "required",
290
+ "default"
291
+ ]);
292
+ const { properties } = sanitizedSchema;
293
+ const responseSchema = {};
294
+ for (const key in properties)
295
+ responseSchema[key] = TypeGuard2.IsString(properties[key]) ? t12.Union([properties[key], t12.Undefined(), t12.Literal(""), t12.Null()]) : t12.Union([properties[key], t12.Undefined(), t12.Null()]);
296
+ return t12.Object({
297
+ message: t12.String(),
298
+ content: t12.Array(t12.Partial(t12.Object(responseSchema)))
299
+ });
300
+ };
301
+
302
+ // source/modules/elysia/crudSchema/utils/createUpdateOneSchema.ts
303
+ import { t as t13 } from "elysia";
304
+ var createUpdateOneSchema = (schema) => t13.Object({
305
+ data: t13.Partial(schema)
306
+ });
307
+
308
+ // source/modules/elysia/crudSchema/utils/createUpdateSchema.ts
309
+ import { t as t14 } from "elysia";
310
+ var createUpdateSchema = (schema) => {
311
+ const sanitizedSchema = filterByKeyExclusionRecursive(schema, [
312
+ "minLength",
313
+ "maxLength",
314
+ "pattern",
315
+ "minimum",
316
+ "maximum",
317
+ "exclusiveMinimum",
318
+ "exclusiveMaximum",
319
+ "multipleOf",
320
+ "minItems",
321
+ "maxItems",
322
+ "maxContains",
323
+ "minContains",
324
+ "minProperties",
325
+ "maxProperties",
326
+ "uniqueItems",
327
+ "minimumTimestamp",
328
+ "maximumTimestamp",
329
+ "exclusiveMinimumTimestamp",
330
+ "exclusiveMaximumTimestamp",
331
+ "multipleOfTimestamp",
332
+ "required",
333
+ "examples",
334
+ "example",
335
+ "default",
336
+ "title",
337
+ "description"
338
+ ]);
339
+ schema.minProperties = 1;
340
+ return t14.Object({
341
+ queryOptions: t14.Object({
342
+ selectedFields: t14.Optional(createSelectedFieldsSchema(sanitizedSchema)),
343
+ filters: t14.Union([
344
+ t14.Partial(createFiltersSchema(sanitizedSchema)),
345
+ t14.Array(t14.Partial(createFiltersSchema(sanitizedSchema)), { minItems: 1 })
346
+ ])
347
+ }),
348
+ data: t14.Partial(schema)
349
+ });
350
+ };
351
+
352
+ export { createCountResponse200Schema, isDateFromElysiaTypeBox, createAdaptiveWhereClauseSchema, createPropertiesSchema, createQSchema, createFiltersSchema, createCountSchema, createSelectedFieldsSchema, createDeleteSchema, createOrderSchema, createFindSchema, createIdParamSchema, createResponse200Schema, createUpdateOneSchema, createUpdateSchema };
@@ -0,0 +1,220 @@
1
+ import {
2
+ DATABASE_ERROR_KEYS,
3
+ Repository
4
+ } from "./chunk-1a3wj3m1.js";
5
+ import {
6
+ TypedEventEmitter
7
+ } from "./chunk-yvyahr2h.js";
8
+ import {
9
+ BaseError
10
+ } from "./chunk-vknq69e0.js";
11
+
12
+ // source/modules/database/table.ts
13
+ class Table extends TypedEventEmitter {
14
+ _databaseName;
15
+ _fields = [];
16
+ _name;
17
+ _primaryKey;
18
+ constructor(databaseName, tableName, fields, primaryKey) {
19
+ super();
20
+ this._databaseName = databaseName;
21
+ this._name = tableName;
22
+ this._fields = fields;
23
+ this._primaryKey = primaryKey;
24
+ }
25
+ get databaseName() {
26
+ return this._databaseName;
27
+ }
28
+ get name() {
29
+ return this._name;
30
+ }
31
+ get fields() {
32
+ return this._fields;
33
+ }
34
+ get primaryKey() {
35
+ return this._primaryKey;
36
+ }
37
+ }
38
+
39
+ // source/modules/database/mssql.ts
40
+ import knex from "knex";
41
+ class MSSQL extends TypedEventEmitter {
42
+ _isConnected = false;
43
+ _databaseName;
44
+ _tables = new Map;
45
+ _repositories = new Map;
46
+ _db;
47
+ _isEventEnabled;
48
+ constructor(options) {
49
+ super();
50
+ this._databaseName = options.databaseName;
51
+ this._isEventEnabled = options.isEventEnabled ?? false;
52
+ this._db = knex({
53
+ client: "mssql",
54
+ acquireConnectionTimeout: options.connectionTimeout ?? 20000,
55
+ compileSqlOnError: true,
56
+ connection: {
57
+ database: options.databaseName,
58
+ host: options.host,
59
+ port: options.port,
60
+ user: options.user,
61
+ password: options.password,
62
+ options: {
63
+ encrypt: options.encrypt ?? true
64
+ },
65
+ bigNumberStrings: false
66
+ },
67
+ pool: {
68
+ min: options.poolMin ?? 2,
69
+ max: options.poolMax ?? 10
70
+ }
71
+ });
72
+ }
73
+ async connect() {
74
+ try {
75
+ await this._introspectDatabase();
76
+ this._isConnected = true;
77
+ if (this._isEventEnabled)
78
+ this._addEventKnex();
79
+ } catch (error) {
80
+ throw new BaseError({
81
+ message: DATABASE_ERROR_KEYS.MSSQL_CONNECTION_ERROR,
82
+ cause: {
83
+ databaseName: this._databaseName,
84
+ error
85
+ }
86
+ });
87
+ }
88
+ }
89
+ async disconnect() {
90
+ if (!this._isConnected)
91
+ throw new BaseError({
92
+ message: DATABASE_ERROR_KEYS.MSSQL_NOT_CONNECTED,
93
+ cause: { databaseName: this._databaseName }
94
+ });
95
+ try {
96
+ await this._db.destroy();
97
+ this._isConnected = false;
98
+ } catch (error) {
99
+ throw new BaseError({
100
+ message: DATABASE_ERROR_KEYS.MSSQL_DISCONNECT_ERROR,
101
+ cause: {
102
+ databaseName: this._databaseName,
103
+ error
104
+ }
105
+ });
106
+ }
107
+ }
108
+ getRepository(tableName, customRepository) {
109
+ if (!this._isConnected)
110
+ throw new BaseError({
111
+ message: DATABASE_ERROR_KEYS.MSSQL_NOT_CONNECTED,
112
+ cause: { databaseName: this._databaseName }
113
+ });
114
+ if (!this._tables.has(tableName))
115
+ throw new BaseError({
116
+ message: DATABASE_ERROR_KEYS.MSSQL_TABLE_NOT_FOUND,
117
+ cause: { table: tableName }
118
+ });
119
+ let repo = this._repositories.get(tableName);
120
+ if (customRepository) {
121
+ const table = this._tables.get(tableName);
122
+ if (repo && repo instanceof customRepository)
123
+ return repo;
124
+ repo = new customRepository(this._db, table);
125
+ this._repositories.set(tableName, repo);
126
+ return repo;
127
+ }
128
+ return this._repositories.get(tableName);
129
+ }
130
+ getTable(tableName) {
131
+ if (!this._isConnected)
132
+ throw new BaseError({
133
+ message: DATABASE_ERROR_KEYS.MSSQL_NOT_CONNECTED,
134
+ cause: { databaseName: this._databaseName }
135
+ });
136
+ if (!this._tables.has(tableName))
137
+ throw new BaseError({
138
+ message: DATABASE_ERROR_KEYS.MSSQL_TABLE_NOT_FOUND,
139
+ cause: { table: tableName }
140
+ });
141
+ return this._tables.get(tableName);
142
+ }
143
+ get databaseName() {
144
+ return this._databaseName;
145
+ }
146
+ get tables() {
147
+ return this._tables;
148
+ }
149
+ get repositories() {
150
+ return this._repositories;
151
+ }
152
+ get isConnected() {
153
+ return this._isConnected;
154
+ }
155
+ get db() {
156
+ if (!this._isConnected)
157
+ throw new BaseError({
158
+ message: DATABASE_ERROR_KEYS.MSSQL_NOT_CONNECTED,
159
+ cause: { databaseName: this._databaseName }
160
+ });
161
+ return this._db;
162
+ }
163
+ async _introspectDatabase() {
164
+ const result = await this._db.from({ c: "information_schema.columns" }).select("c.table_name as tableName").select(this._db.raw("STRING_AGG(c.column_name, ',') AS fields")).select("pk.primaryKeyColumn as primaryKeyColumn").select("pk.primaryKeyType as primaryKeyType").leftJoin(this._db.from({ tc: "information_schema.table_constraints" }).join({ kcu: "information_schema.key_column_usage" }, "tc.constraint_name", "kcu.constraint_name").join({ col: "information_schema.columns" }, (builder) => {
165
+ builder.on("col.table_name", "=", "kcu.table_name").andOn("col.column_name", "=", "kcu.column_name");
166
+ }).where("tc.constraint_type", "PRIMARY KEY").groupBy("tc.table_name", "kcu.column_name", "col.data_type").select("tc.table_name as tableName").select("kcu.column_name as primaryKeyColumn").select("col.data_type as primaryKeyType").as("pk"), "c.table_name", "pk.tableName").groupBy("c.table_name", "pk.primaryKeyColumn", "pk.primaryKeyType");
167
+ const fieldsByTable = result.reduce((acc, { tableName, fields, primaryKeyColumn, primaryKeyType }) => {
168
+ const primaryKeyTypeTs = primaryKeyType === "int" ? "NUMBER" : "STRING";
169
+ acc.set(tableName, {
170
+ fields: fields.split(","),
171
+ primaryKey: [primaryKeyColumn, primaryKeyTypeTs]
172
+ });
173
+ return acc;
174
+ }, new Map);
175
+ fieldsByTable.forEach((desc, tableName) => {
176
+ const table = new Table(this._databaseName, tableName, desc.fields, desc.primaryKey);
177
+ this._tables.set(tableName, table);
178
+ this._repositories.set(tableName, new Repository(this._db, table));
179
+ });
180
+ }
181
+ _extractTablesFromSqlQuery(sql) {
182
+ const tableRegex = /(?:update|insert\s+into|delete\s+from|from|join|with)\s+\[?([^\]\s]+)\]?/gi;
183
+ const matches = [...sql.matchAll(tableRegex)].map((match) => match[1]);
184
+ return Array.from(new Set(matches));
185
+ }
186
+ _handleQueryResponse(response, queryContext) {
187
+ const tables = this._extractTablesFromSqlQuery(queryContext.sql);
188
+ const table = this._tables.get(tables[0]);
189
+ switch (queryContext.method) {
190
+ case "select":
191
+ table?.emit("selected", response, queryContext);
192
+ break;
193
+ case "insert":
194
+ table?.emit("inserted", response, queryContext);
195
+ break;
196
+ case "update":
197
+ table?.emit("updated", response, queryContext);
198
+ break;
199
+ case "del":
200
+ table?.emit("deleted", response, queryContext);
201
+ break;
202
+ default:
203
+ break;
204
+ }
205
+ }
206
+ _addEventKnex() {
207
+ this._db.on("query", (queryContext) => {
208
+ this.emit("query", queryContext);
209
+ });
210
+ this._db.on("query-error", (error, queryContext) => {
211
+ this.emit("query:error", error, queryContext);
212
+ });
213
+ this._db.on("query-response", (response, queryContext) => {
214
+ this.emit("query:response", response, queryContext);
215
+ this._handleQueryResponse(response, queryContext);
216
+ });
217
+ }
218
+ }
219
+
220
+ export { Table, MSSQL };
@@ -0,0 +1,77 @@
1
+ import {
2
+ createCountResponse200Schema,
3
+ createCountSchema,
4
+ createDeleteSchema,
5
+ createFindSchema,
6
+ createIdParamSchema,
7
+ createResponse200Schema,
8
+ createSelectedFieldsSchema,
9
+ createUpdateOneSchema,
10
+ createUpdateSchema
11
+ } from "./chunk-f5z7x01b.js";
12
+
13
+ // source/modules/elysia/crudSchema/crudSchema.ts
14
+ import { Elysia } from "elysia";
15
+
16
+ // source/modules/elysia/crudSchema/utils/createInsertSchema.ts
17
+ import { t } from "elysia";
18
+ var createInsertSchema = (schema) => t.Object({
19
+ queryOptions: t.Optional(t.Object({
20
+ selectedFields: createSelectedFieldsSchema(schema)
21
+ })),
22
+ data: t.Union([
23
+ schema,
24
+ t.Array(schema, {
25
+ minItems: 1,
26
+ uniqueItems: true
27
+ })
28
+ ])
29
+ });
30
+
31
+ // source/modules/elysia/crudSchema/crudSchema.ts
32
+ var crudSchema = ({
33
+ sourceSchemaName,
34
+ sourceSchema,
35
+ sourceInsertSchema = sourceSchema,
36
+ sourceFindSchema = sourceSchema,
37
+ sourceCountSchema = sourceSchema,
38
+ sourceUpdateSchema = sourceSchema,
39
+ sourceDeleteSchema = sourceSchema,
40
+ sourceResponseSchema = sourceSchema,
41
+ operations = {
42
+ count: true,
43
+ find: true,
44
+ findOne: true,
45
+ insert: true,
46
+ update: true,
47
+ updateOne: true,
48
+ delete: true,
49
+ deleteOne: true
50
+ }
51
+ }) => {
52
+ const models = {};
53
+ if (operations.insert)
54
+ models[`${sourceSchemaName}Insert`] = createInsertSchema(sourceInsertSchema);
55
+ if (operations.find)
56
+ models[`${sourceSchemaName}Find`] = createFindSchema(sourceFindSchema);
57
+ if (operations.count)
58
+ models[`${sourceSchemaName}Count`] = createCountSchema(sourceCountSchema);
59
+ if (operations.update)
60
+ models[`${sourceSchemaName}Update`] = createUpdateSchema(sourceUpdateSchema);
61
+ if (operations.updateOne)
62
+ models[`${sourceSchemaName}UpdateOne`] = createUpdateOneSchema(sourceUpdateSchema);
63
+ if (operations.delete)
64
+ models[`${sourceSchemaName}Delete`] = createDeleteSchema(sourceDeleteSchema);
65
+ if (operations.findOne || operations.updateOne || operations.deleteOne)
66
+ models[`${sourceSchemaName}IdParam`] = createIdParamSchema();
67
+ if (operations.find || operations.findOne || operations.insert || operations.update || operations.updateOne || operations.delete || operations.deleteOne)
68
+ models[`${sourceSchemaName}Response200`] = createResponse200Schema(sourceResponseSchema);
69
+ if (operations.count)
70
+ models[`${sourceSchemaName}CountResponse200`] = createCountResponse200Schema();
71
+ const app = new Elysia({
72
+ name: `crudSchemaPlugin-${sourceSchemaName}`
73
+ }).model(models);
74
+ return app;
75
+ };
76
+
77
+ export { crudSchema };
@@ -0,0 +1,58 @@
1
+ import {
2
+ SingletonManager
3
+ } from "./chunk-370444pc.js";
4
+ import {
5
+ MSSQL
6
+ } from "./chunk-pc66jgqv.js";
7
+ import {
8
+ HttpError
9
+ } from "./chunk-84mqvfsk.js";
10
+
11
+ // source/modules/elysia/dbResolver/dbResolver.ts
12
+ import { Elysia, t } from "elysia";
13
+
14
+ // source/modules/elysia/dbResolver/enums/dbResolverErrorKeys.ts
15
+ var DB_RESOLVER_ERROR_KEYS = {
16
+ DB_RESOLVER_HEADER_KEY_NOT_FOUND: "elysia.dbResolver.error.key_not_found"
17
+ };
18
+
19
+ // source/modules/elysia/dbResolver/dbResolver.ts
20
+ var _resolveDatabaseConnection = async (database, headers) => {
21
+ if (typeof database === "string")
22
+ return {
23
+ staticDB: SingletonManager.get(`database:${database}`)
24
+ };
25
+ const databaseName = headers["database-using"];
26
+ if (!databaseName)
27
+ throw new HttpError({
28
+ message: DB_RESOLVER_ERROR_KEYS.DB_RESOLVER_HEADER_KEY_NOT_FOUND,
29
+ httpStatusCode: "BAD_REQUEST"
30
+ });
31
+ if (!SingletonManager.has(`database:${databaseName}`)) {
32
+ SingletonManager.register(`database:${databaseName}`, MSSQL, {
33
+ ...database.config,
34
+ databaseName
35
+ });
36
+ await SingletonManager.get(`database:${databaseName}`).connect();
37
+ }
38
+ return {
39
+ dynamicDB: SingletonManager.get(`database:${databaseName}`)
40
+ };
41
+ };
42
+ var dbResolver = (database) => {
43
+ const app = new Elysia({
44
+ name: "dbResolverPlugin",
45
+ seed: database
46
+ }).resolve({ as: "global" }, async ({ headers }) => _resolveDatabaseConnection(database, headers));
47
+ if (typeof database === "object")
48
+ app.model({
49
+ ResolveDbHeader: t.Object({
50
+ "database-using": t.String({
51
+ description: "The name of the database to be used for the request"
52
+ })
53
+ })
54
+ });
55
+ return app;
56
+ };
57
+
58
+ export { dbResolver };