@uql/core 1.0.12 → 3.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 (466) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/LICENSE.md +2 -2
  3. package/dist/CHANGELOG.md +186 -0
  4. package/dist/README.md +413 -0
  5. package/dist/browser/http/bus.d.ts +3 -0
  6. package/dist/browser/http/bus.js +14 -0
  7. package/dist/browser/http/http.d.ts +6 -0
  8. package/dist/browser/http/http.js +45 -0
  9. package/dist/browser/http/index.d.ts +2 -0
  10. package/dist/browser/http/index.js +3 -0
  11. package/dist/browser/index.d.ts +4 -0
  12. package/dist/browser/index.js +5 -0
  13. package/dist/browser/options.d.ts +4 -0
  14. package/dist/browser/options.js +14 -0
  15. package/dist/browser/querier/genericClientRepository.d.ts +17 -0
  16. package/dist/browser/querier/genericClientRepository.js +39 -0
  17. package/dist/browser/querier/httpQuerier.d.ts +20 -0
  18. package/dist/browser/querier/httpQuerier.js +71 -0
  19. package/dist/browser/querier/index.d.ts +3 -0
  20. package/dist/browser/querier/index.js +4 -0
  21. package/dist/browser/querier/querier.util.d.ts +2 -0
  22. package/dist/browser/querier/querier.util.js +17 -0
  23. package/dist/browser/type/clientQuerier.d.ts +16 -0
  24. package/dist/browser/type/clientQuerier.js +2 -0
  25. package/dist/browser/type/clientQuerierPool.d.ts +4 -0
  26. package/dist/browser/type/clientQuerierPool.js +2 -0
  27. package/dist/browser/type/clientRepository.d.ts +13 -0
  28. package/dist/browser/type/clientRepository.js +2 -0
  29. package/dist/browser/type/index.d.ts +4 -0
  30. package/dist/browser/type/index.js +5 -0
  31. package/dist/browser/type/request.d.ts +28 -0
  32. package/dist/browser/type/request.js +2 -0
  33. package/dist/browser/uql-browser.min.js +2150 -0
  34. package/dist/browser/uql-browser.min.js.map +1 -0
  35. package/dist/dialect/abstractDialect.d.ts +16 -0
  36. package/dist/dialect/abstractDialect.js +28 -0
  37. package/dist/dialect/abstractSqlDialect.d.ts +47 -0
  38. package/dist/dialect/abstractSqlDialect.js +650 -0
  39. package/dist/dialect/index.d.ts +3 -0
  40. package/dist/dialect/index.js +4 -0
  41. package/dist/dialect/queryContext.d.ts +48 -0
  42. package/dist/dialect/queryContext.js +65 -0
  43. package/{entity → dist/entity}/decorator/definition.d.ts +3 -3
  44. package/dist/entity/decorator/definition.js +214 -0
  45. package/{entity → dist/entity}/decorator/entity.d.ts +1 -1
  46. package/dist/entity/decorator/entity.js +7 -0
  47. package/{entity → dist/entity}/decorator/field.d.ts +1 -1
  48. package/dist/entity/decorator/field.js +8 -0
  49. package/{entity → dist/entity}/decorator/id.d.ts +1 -1
  50. package/dist/entity/decorator/id.js +8 -0
  51. package/dist/entity/decorator/index.d.ts +5 -0
  52. package/dist/entity/decorator/index.js +6 -0
  53. package/{entity → dist/entity}/decorator/relation.d.ts +1 -1
  54. package/dist/entity/decorator/relation.js +20 -0
  55. package/dist/entity/index.d.ts +1 -0
  56. package/dist/entity/index.js +2 -0
  57. package/dist/express/index.d.ts +2 -0
  58. package/dist/express/index.js +3 -0
  59. package/dist/express/querierMiddleware.d.ts +26 -0
  60. package/dist/express/querierMiddleware.js +190 -0
  61. package/dist/express/query.util.d.ts +2 -0
  62. package/dist/express/query.util.js +19 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.js +10 -0
  65. package/dist/maria/index.d.ts +3 -0
  66. package/dist/maria/index.js +4 -0
  67. package/dist/maria/mariaDialect.d.ts +8 -0
  68. package/dist/maria/mariaDialect.js +38 -0
  69. package/dist/maria/mariaQuerierPool.test.d.ts +5 -0
  70. package/dist/maria/mariaQuerierPool.test.js +19 -0
  71. package/dist/maria/mariadbQuerier.d.ts +17 -0
  72. package/dist/maria/mariadbQuerier.js +39 -0
  73. package/dist/maria/mariadbQuerier.test.d.ts +4 -0
  74. package/dist/maria/mariadbQuerier.test.js +19 -0
  75. package/dist/maria/mariadbQuerierPool.d.ts +10 -0
  76. package/dist/maria/mariadbQuerierPool.js +17 -0
  77. package/dist/migrate/cli.d.ts +2 -0
  78. package/dist/migrate/cli.js +254 -0
  79. package/dist/migrate/generator/index.d.ts +4 -0
  80. package/dist/migrate/generator/index.js +5 -0
  81. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +12 -0
  82. package/dist/migrate/generator/mongoSchemaGenerator.js +100 -0
  83. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +14 -0
  84. package/dist/migrate/generator/mysqlSchemaGenerator.js +81 -0
  85. package/dist/migrate/generator/postgresSchemaGenerator.d.ts +18 -0
  86. package/dist/migrate/generator/postgresSchemaGenerator.js +111 -0
  87. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +14 -0
  88. package/dist/migrate/generator/sqliteSchemaGenerator.js +68 -0
  89. package/dist/migrate/index.d.ts +12 -0
  90. package/dist/migrate/index.js +17 -0
  91. package/dist/migrate/introspection/index.d.ts +4 -0
  92. package/dist/migrate/introspection/index.js +5 -0
  93. package/dist/migrate/introspection/mongoIntrospector.d.ts +8 -0
  94. package/dist/migrate/introspection/mongoIntrospector.js +46 -0
  95. package/dist/migrate/introspection/mysqlIntrospector.d.ts +25 -0
  96. package/dist/migrate/introspection/mysqlIntrospector.js +220 -0
  97. package/dist/migrate/introspection/postgresIntrospector.d.ts +21 -0
  98. package/dist/migrate/introspection/postgresIntrospector.js +269 -0
  99. package/dist/migrate/introspection/sqliteIntrospector.d.ts +23 -0
  100. package/dist/migrate/introspection/sqliteIntrospector.js +212 -0
  101. package/dist/migrate/migrator-mongo.test.d.ts +1 -0
  102. package/dist/migrate/migrator-mongo.test.js +54 -0
  103. package/dist/migrate/migrator.d.ts +133 -0
  104. package/dist/migrate/migrator.js +600 -0
  105. package/dist/migrate/migrator.test.d.ts +1 -0
  106. package/dist/migrate/migrator.test.js +106 -0
  107. package/dist/migrate/schemaGenerator.d.ts +78 -0
  108. package/dist/migrate/schemaGenerator.js +363 -0
  109. package/dist/migrate/storage/databaseStorage.d.ts +24 -0
  110. package/dist/migrate/storage/databaseStorage.js +77 -0
  111. package/dist/migrate/storage/index.d.ts +2 -0
  112. package/dist/migrate/storage/index.js +3 -0
  113. package/dist/migrate/storage/jsonStorage.d.ts +15 -0
  114. package/dist/migrate/storage/jsonStorage.js +51 -0
  115. package/dist/migrate/type.d.ts +1 -0
  116. package/dist/migrate/type.js +2 -0
  117. package/dist/mongo/index.d.ts +3 -0
  118. package/dist/mongo/index.js +4 -0
  119. package/dist/mongo/mongoDialect.d.ts +34 -0
  120. package/dist/mongo/mongoDialect.js +163 -0
  121. package/dist/mongo/mongodbQuerier.d.ts +28 -0
  122. package/dist/mongo/mongodbQuerier.js +204 -0
  123. package/dist/mongo/mongodbQuerier.test.d.ts +1 -0
  124. package/dist/mongo/mongodbQuerier.test.js +36 -0
  125. package/dist/mongo/mongodbQuerierPool.d.ts +10 -0
  126. package/dist/mongo/mongodbQuerierPool.js +20 -0
  127. package/dist/mongo/mongodbQuerierPool.test.d.ts +1 -0
  128. package/dist/mongo/mongodbQuerierPool.test.js +21 -0
  129. package/dist/mysql/index.d.ts +3 -0
  130. package/dist/mysql/index.js +4 -0
  131. package/dist/mysql/mysql2Querier.d.ts +17 -0
  132. package/dist/mysql/mysql2Querier.js +43 -0
  133. package/dist/mysql/mysql2Querier.test.d.ts +4 -0
  134. package/dist/mysql/mysql2Querier.test.js +16 -0
  135. package/dist/mysql/mysql2QuerierPool.d.ts +10 -0
  136. package/dist/mysql/mysql2QuerierPool.js +17 -0
  137. package/dist/mysql/mysql2QuerierPool.test.d.ts +5 -0
  138. package/dist/mysql/mysql2QuerierPool.test.js +16 -0
  139. package/dist/mysql/mysqlDialect.d.ts +5 -0
  140. package/dist/mysql/mysqlDialect.js +15 -0
  141. package/dist/namingStrategy/defaultNamingStrategy.d.ts +9 -0
  142. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  143. package/dist/namingStrategy/index.d.ts +2 -0
  144. package/dist/namingStrategy/index.js +3 -0
  145. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +8 -0
  146. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  147. package/{options.d.ts → dist/options.d.ts} +1 -1
  148. package/dist/options.js +14 -0
  149. package/dist/package.json +131 -0
  150. package/dist/postgres/index.d.ts +3 -0
  151. package/dist/postgres/index.js +4 -0
  152. package/dist/postgres/pgQuerier.d.ts +17 -0
  153. package/dist/postgres/pgQuerier.js +39 -0
  154. package/dist/postgres/pgQuerier.test.d.ts +4 -0
  155. package/dist/postgres/pgQuerier.test.js +20 -0
  156. package/dist/postgres/pgQuerierPool.d.ts +10 -0
  157. package/dist/postgres/pgQuerierPool.js +17 -0
  158. package/dist/postgres/pgQuerierPool.test.d.ts +5 -0
  159. package/dist/postgres/pgQuerierPool.test.js +23 -0
  160. package/dist/postgres/postgresDialect.d.ts +13 -0
  161. package/dist/postgres/postgresDialect.js +110 -0
  162. package/dist/querier/abstractQuerier-test.d.ts +45 -0
  163. package/dist/querier/abstractQuerier-test.js +461 -0
  164. package/dist/querier/abstractQuerier.d.ts +50 -0
  165. package/dist/querier/abstractQuerier.js +278 -0
  166. package/dist/querier/abstractQuerierPool-test.d.ts +9 -0
  167. package/dist/querier/abstractQuerierPool-test.js +18 -0
  168. package/dist/querier/abstractQuerierPool.d.ts +14 -0
  169. package/dist/querier/abstractQuerierPool.js +9 -0
  170. package/dist/querier/abstractSqlQuerier-test.d.ts +9 -0
  171. package/dist/querier/abstractSqlQuerier-test.js +16 -0
  172. package/dist/querier/abstractSqlQuerier.d.ts +28 -0
  173. package/dist/querier/abstractSqlQuerier.js +133 -0
  174. package/dist/querier/decorator/index.d.ts +3 -0
  175. package/dist/querier/decorator/index.js +4 -0
  176. package/dist/querier/decorator/injectQuerier.d.ts +3 -0
  177. package/dist/querier/decorator/injectQuerier.js +33 -0
  178. package/dist/querier/decorator/serialized.d.ts +6 -0
  179. package/dist/querier/decorator/serialized.js +14 -0
  180. package/{querier → dist/querier}/decorator/transactional.d.ts +1 -1
  181. package/dist/querier/decorator/transactional.js +48 -0
  182. package/dist/querier/index.d.ts +4 -0
  183. package/dist/querier/index.js +5 -0
  184. package/dist/repository/genericRepository.d.ts +20 -0
  185. package/dist/repository/genericRepository.js +51 -0
  186. package/dist/repository/index.d.ts +1 -0
  187. package/dist/repository/index.js +2 -0
  188. package/dist/sqlite/index.d.ts +3 -0
  189. package/dist/sqlite/index.js +4 -0
  190. package/dist/sqlite/sqliteDialect.d.ts +10 -0
  191. package/dist/sqlite/sqliteDialect.js +48 -0
  192. package/dist/sqlite/sqliteQuerier.d.ts +15 -0
  193. package/dist/sqlite/sqliteQuerier.js +33 -0
  194. package/dist/sqlite/sqliteQuerier.test.d.ts +5 -0
  195. package/dist/sqlite/sqliteQuerier.test.js +19 -0
  196. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
  197. package/dist/sqlite/sqliteQuerierPool.js +34 -0
  198. package/dist/sqlite/sqliteQuerierPool.test.d.ts +5 -0
  199. package/dist/sqlite/sqliteQuerierPool.test.js +10 -0
  200. package/dist/test/entityMock.d.ts +164 -0
  201. package/dist/test/entityMock.js +554 -0
  202. package/dist/test/index.d.ts +3 -0
  203. package/dist/test/index.js +4 -0
  204. package/dist/test/it.util.d.ts +4 -0
  205. package/dist/test/it.util.js +55 -0
  206. package/dist/test/spec.util.d.ts +14 -0
  207. package/dist/test/spec.util.js +50 -0
  208. package/{type → dist/type}/entity.d.ts +97 -4
  209. package/dist/type/entity.js +5 -0
  210. package/dist/type/index.d.ts +9 -0
  211. package/dist/type/index.js +10 -0
  212. package/dist/type/migration.d.ts +213 -0
  213. package/dist/type/migration.js +2 -0
  214. package/dist/type/namingStrategy.d.ts +17 -0
  215. package/dist/type/namingStrategy.js +2 -0
  216. package/dist/type/querier.d.ts +96 -0
  217. package/dist/type/querier.js +11 -0
  218. package/{type → dist/type}/querierPool.d.ts +7 -3
  219. package/dist/type/querierPool.js +2 -0
  220. package/{type → dist/type}/query.d.ts +170 -108
  221. package/dist/type/query.js +9 -0
  222. package/{type → dist/type}/repository.d.ts +42 -35
  223. package/dist/type/repository.js +2 -0
  224. package/{type → dist/type}/universalQuerier.d.ts +50 -28
  225. package/dist/type/universalQuerier.js +2 -0
  226. package/dist/type/utility.d.ts +13 -0
  227. package/dist/type/utility.js +2 -0
  228. package/dist/util/dialect.util.d.ts +12 -0
  229. package/dist/util/dialect.util.js +93 -0
  230. package/dist/util/index.d.ts +5 -0
  231. package/dist/util/index.js +6 -0
  232. package/dist/util/object.util.d.ts +7 -0
  233. package/dist/util/object.util.js +19 -0
  234. package/dist/util/raw.d.ts +8 -0
  235. package/dist/util/raw.js +11 -0
  236. package/dist/util/sql.util.d.ts +13 -0
  237. package/dist/util/sql.util.js +78 -0
  238. package/{util → dist/util}/string.util.d.ts +1 -0
  239. package/dist/util/string.util.js +34 -0
  240. package/package.json +84 -16
  241. package/src/@types/index.d.ts +1 -0
  242. package/src/@types/jest.d.ts +6 -0
  243. package/src/browser/http/bus.spec.ts +22 -0
  244. package/src/browser/http/bus.ts +17 -0
  245. package/src/browser/http/http.spec.ts +70 -0
  246. package/src/browser/http/http.ts +55 -0
  247. package/src/browser/http/index.ts +2 -0
  248. package/src/browser/index.ts +4 -0
  249. package/src/browser/options.spec.ts +37 -0
  250. package/src/browser/options.ts +18 -0
  251. package/src/browser/querier/genericClientRepository.spec.ts +105 -0
  252. package/src/browser/querier/genericClientRepository.ts +49 -0
  253. package/src/browser/querier/httpQuerier.ts +82 -0
  254. package/src/browser/querier/index.ts +3 -0
  255. package/src/browser/querier/querier.util.spec.ts +35 -0
  256. package/src/browser/querier/querier.util.ts +18 -0
  257. package/src/browser/type/clientQuerier.ts +45 -0
  258. package/src/browser/type/clientQuerierPool.ts +5 -0
  259. package/src/browser/type/clientRepository.ts +22 -0
  260. package/src/browser/type/index.ts +4 -0
  261. package/src/browser/type/request.ts +25 -0
  262. package/src/dialect/abstractDialect.ts +28 -0
  263. package/src/dialect/abstractSqlDialect-spec.ts +1309 -0
  264. package/src/dialect/abstractSqlDialect.ts +805 -0
  265. package/src/dialect/index.ts +3 -0
  266. package/src/dialect/namingStrategy.spec.ts +52 -0
  267. package/src/dialect/queryContext.ts +69 -0
  268. package/src/entity/decorator/definition.spec.ts +736 -0
  269. package/src/entity/decorator/definition.ts +265 -0
  270. package/src/entity/decorator/entity.ts +8 -0
  271. package/src/entity/decorator/field.ts +9 -0
  272. package/src/entity/decorator/id.ts +9 -0
  273. package/src/entity/decorator/index.ts +5 -0
  274. package/src/entity/decorator/relation.spec.ts +41 -0
  275. package/src/entity/decorator/relation.ts +34 -0
  276. package/src/entity/index.ts +1 -0
  277. package/src/express/@types/express.d.ts +8 -0
  278. package/src/express/@types/index.d.ts +1 -0
  279. package/src/express/index.ts +2 -0
  280. package/src/express/querierMiddleware.ts +217 -0
  281. package/src/express/query.util.spec.ts +40 -0
  282. package/src/express/query.util.ts +21 -0
  283. package/src/index.ts +9 -0
  284. package/src/maria/index.ts +3 -0
  285. package/src/maria/mariaDialect.spec.ts +207 -0
  286. package/src/maria/mariaDialect.ts +42 -0
  287. package/src/maria/mariaQuerierPool.test.ts +23 -0
  288. package/src/maria/mariadbQuerier.test.ts +23 -0
  289. package/src/maria/mariadbQuerier.ts +45 -0
  290. package/src/maria/mariadbQuerierPool.ts +21 -0
  291. package/src/migrate/cli.ts +301 -0
  292. package/src/migrate/generator/index.ts +4 -0
  293. package/src/migrate/generator/mongoSchemaGenerator.spec.ts +112 -0
  294. package/src/migrate/generator/mongoSchemaGenerator.ts +115 -0
  295. package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +34 -0
  296. package/src/migrate/generator/mysqlSchemaGenerator.ts +92 -0
  297. package/src/migrate/generator/postgresSchemaGenerator.spec.ts +44 -0
  298. package/src/migrate/generator/postgresSchemaGenerator.ts +127 -0
  299. package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +33 -0
  300. package/src/migrate/generator/sqliteSchemaGenerator.ts +81 -0
  301. package/src/migrate/index.ts +41 -0
  302. package/src/migrate/introspection/index.ts +4 -0
  303. package/src/migrate/introspection/mongoIntrospector.spec.ts +75 -0
  304. package/src/migrate/introspection/mongoIntrospector.ts +47 -0
  305. package/src/migrate/introspection/mysqlIntrospector.spec.ts +113 -0
  306. package/src/migrate/introspection/mysqlIntrospector.ts +278 -0
  307. package/src/migrate/introspection/postgresIntrospector.spec.ts +112 -0
  308. package/src/migrate/introspection/postgresIntrospector.ts +329 -0
  309. package/src/migrate/introspection/sqliteIntrospector.spec.ts +112 -0
  310. package/src/migrate/introspection/sqliteIntrospector.ts +296 -0
  311. package/src/migrate/migrator-mongo.test.ts +54 -0
  312. package/src/migrate/migrator.spec.ts +255 -0
  313. package/src/migrate/migrator.test.ts +94 -0
  314. package/src/migrate/migrator.ts +719 -0
  315. package/src/migrate/namingStrategy.spec.ts +22 -0
  316. package/src/migrate/schemaGenerator-advanced.spec.ts +138 -0
  317. package/src/migrate/schemaGenerator.spec.ts +190 -0
  318. package/src/migrate/schemaGenerator.ts +478 -0
  319. package/src/migrate/storage/databaseStorage.spec.ts +69 -0
  320. package/src/migrate/storage/databaseStorage.ts +100 -0
  321. package/src/migrate/storage/index.ts +2 -0
  322. package/src/migrate/storage/jsonStorage.ts +58 -0
  323. package/src/migrate/type.ts +1 -0
  324. package/src/mongo/index.ts +3 -0
  325. package/src/mongo/mongoDialect.spec.ts +251 -0
  326. package/src/mongo/mongoDialect.ts +238 -0
  327. package/src/mongo/mongodbQuerier.test.ts +45 -0
  328. package/src/mongo/mongodbQuerier.ts +256 -0
  329. package/src/mongo/mongodbQuerierPool.test.ts +25 -0
  330. package/src/mongo/mongodbQuerierPool.ts +24 -0
  331. package/src/mysql/index.ts +3 -0
  332. package/src/mysql/mysql2Querier.test.ts +20 -0
  333. package/src/mysql/mysql2Querier.ts +49 -0
  334. package/src/mysql/mysql2QuerierPool.test.ts +20 -0
  335. package/src/mysql/mysql2QuerierPool.ts +21 -0
  336. package/src/mysql/mysqlDialect.spec.ts +20 -0
  337. package/src/mysql/mysqlDialect.ts +16 -0
  338. package/src/namingStrategy/defaultNamingStrategy.ts +18 -0
  339. package/src/namingStrategy/index.spec.ts +36 -0
  340. package/src/namingStrategy/index.ts +2 -0
  341. package/src/namingStrategy/snakeCaseNamingStrategy.ts +15 -0
  342. package/src/options.spec.ts +41 -0
  343. package/src/options.ts +18 -0
  344. package/src/postgres/index.ts +3 -0
  345. package/src/postgres/manual-types.d.ts +4 -0
  346. package/src/postgres/pgQuerier.test.ts +25 -0
  347. package/src/postgres/pgQuerier.ts +45 -0
  348. package/src/postgres/pgQuerierPool.test.ts +28 -0
  349. package/src/postgres/pgQuerierPool.ts +21 -0
  350. package/src/postgres/postgresDialect.spec.ts +428 -0
  351. package/src/postgres/postgresDialect.ts +144 -0
  352. package/src/querier/abstractQuerier-test.ts +584 -0
  353. package/src/querier/abstractQuerier.ts +353 -0
  354. package/src/querier/abstractQuerierPool-test.ts +20 -0
  355. package/src/querier/abstractQuerierPool.ts +18 -0
  356. package/src/querier/abstractSqlQuerier-spec.ts +979 -0
  357. package/src/querier/abstractSqlQuerier-test.ts +21 -0
  358. package/src/querier/abstractSqlQuerier.ts +138 -0
  359. package/src/querier/decorator/index.ts +3 -0
  360. package/src/querier/decorator/injectQuerier.spec.ts +74 -0
  361. package/src/querier/decorator/injectQuerier.ts +45 -0
  362. package/src/querier/decorator/serialized.spec.ts +98 -0
  363. package/src/querier/decorator/serialized.ts +13 -0
  364. package/src/querier/decorator/transactional.spec.ts +240 -0
  365. package/src/querier/decorator/transactional.ts +56 -0
  366. package/src/querier/index.ts +4 -0
  367. package/src/repository/genericRepository.spec.ts +111 -0
  368. package/src/repository/genericRepository.ts +74 -0
  369. package/src/repository/index.ts +1 -0
  370. package/src/sqlite/index.ts +3 -0
  371. package/src/sqlite/manual-types.d.ts +4 -0
  372. package/src/sqlite/sqliteDialect.spec.ts +155 -0
  373. package/src/sqlite/sqliteDialect.ts +76 -0
  374. package/src/sqlite/sqliteQuerier.spec.ts +36 -0
  375. package/src/sqlite/sqliteQuerier.test.ts +21 -0
  376. package/src/sqlite/sqliteQuerier.ts +37 -0
  377. package/src/sqlite/sqliteQuerierPool.test.ts +12 -0
  378. package/src/sqlite/sqliteQuerierPool.ts +38 -0
  379. package/src/test/entityMock.ts +375 -0
  380. package/src/test/index.ts +3 -0
  381. package/src/test/it.util.ts +69 -0
  382. package/src/test/spec.util.ts +57 -0
  383. package/src/type/entity.ts +218 -0
  384. package/src/type/index.ts +9 -0
  385. package/src/type/migration.ts +241 -0
  386. package/src/type/namingStrategy.ts +17 -0
  387. package/src/type/querier.ts +143 -0
  388. package/src/type/querierPool.ts +26 -0
  389. package/src/type/query.ts +506 -0
  390. package/src/type/repository.ts +142 -0
  391. package/src/type/universalQuerier.ts +133 -0
  392. package/src/type/utility.ts +21 -0
  393. package/src/util/dialect.util-extra.spec.ts +96 -0
  394. package/src/util/dialect.util.spec.ts +23 -0
  395. package/src/util/dialect.util.ts +134 -0
  396. package/src/util/index.ts +5 -0
  397. package/src/util/object.util.spec.ts +29 -0
  398. package/src/util/object.util.ts +27 -0
  399. package/src/util/raw.ts +11 -0
  400. package/src/util/sql.util-extra.spec.ts +17 -0
  401. package/src/util/sql.util.spec.ts +208 -0
  402. package/src/util/sql.util.ts +104 -0
  403. package/src/util/string.util.spec.ts +46 -0
  404. package/src/util/string.util.ts +35 -0
  405. package/tsconfig.build.json +5 -0
  406. package/tsconfig.json +8 -0
  407. package/README.md +0 -177
  408. package/dialect/abstractSqlDialect.d.ts +0 -30
  409. package/dialect/abstractSqlDialect.js +0 -365
  410. package/dialect/index.d.ts +0 -4
  411. package/dialect/index.js +0 -8
  412. package/dialect/mysqlDialect.d.ts +0 -6
  413. package/dialect/mysqlDialect.js +0 -21
  414. package/dialect/postgresDialect.d.ts +0 -8
  415. package/dialect/postgresDialect.js +0 -44
  416. package/dialect/sqliteDialect.d.ts +0 -4
  417. package/dialect/sqliteDialect.js +0 -11
  418. package/entity/decorator/definition.js +0 -223
  419. package/entity/decorator/entity.js +0 -11
  420. package/entity/decorator/field.js +0 -12
  421. package/entity/decorator/id.js +0 -12
  422. package/entity/decorator/index.d.ts +0 -5
  423. package/entity/decorator/index.js +0 -12
  424. package/entity/decorator/relation.js +0 -27
  425. package/entity/index.d.ts +0 -1
  426. package/entity/index.js +0 -5
  427. package/index.d.ts +0 -1
  428. package/index.js +0 -5
  429. package/options.js +0 -20
  430. package/querier/abstractQuerier.d.ts +0 -30
  431. package/querier/abstractQuerier.js +0 -230
  432. package/querier/abstractSqlQuerier.d.ts +0 -27
  433. package/querier/abstractSqlQuerier.js +0 -88
  434. package/querier/decorator/index.d.ts +0 -2
  435. package/querier/decorator/index.js +0 -6
  436. package/querier/decorator/injectQuerier.d.ts +0 -3
  437. package/querier/decorator/injectQuerier.js +0 -39
  438. package/querier/decorator/transactional.js +0 -52
  439. package/querier/index.d.ts +0 -3
  440. package/querier/index.js +0 -7
  441. package/repository/genericRepository.d.ts +0 -19
  442. package/repository/genericRepository.js +0 -52
  443. package/repository/index.d.ts +0 -1
  444. package/repository/index.js +0 -5
  445. package/type/entity.js +0 -5
  446. package/type/index.d.ts +0 -7
  447. package/type/index.js +0 -11
  448. package/type/querier.d.ts +0 -53
  449. package/type/querier.js +0 -3
  450. package/type/querierPool.js +0 -3
  451. package/type/query.js +0 -13
  452. package/type/repository.js +0 -3
  453. package/type/universalQuerier.js +0 -3
  454. package/type/utility.d.ts +0 -12
  455. package/type/utility.js +0 -3
  456. package/util/dialect.util.d.ts +0 -17
  457. package/util/dialect.util.js +0 -114
  458. package/util/index.d.ts +0 -5
  459. package/util/index.js +0 -9
  460. package/util/object.util.d.ts +0 -3
  461. package/util/object.util.js +0 -22
  462. package/util/raw.d.ts +0 -2
  463. package/util/raw.js +0 -9
  464. package/util/sql.util.d.ts +0 -2
  465. package/util/sql.util.js +0 -55
  466. package/util/string.util.js +0 -20
@@ -0,0 +1,190 @@
1
+ import { Router as expressRouter } from 'express';
2
+ import { getEntities, getMeta } from '../entity/index.js';
3
+ import { getQuerier } from '../index.js';
4
+ import { kebabCase } from '../util/index.js';
5
+ import { parseQuery } from './query.util.js';
6
+ export function querierMiddleware(opts = {}) {
7
+ const router = expressRouter();
8
+ const { include, exclude, ...extra } = opts;
9
+ let entities = include ?? getEntities();
10
+ if (exclude) {
11
+ entities = entities.filter((entity) => !opts.exclude.includes(entity));
12
+ }
13
+ if (!entities.length) {
14
+ throw new TypeError('no entities for the uql express middleware');
15
+ }
16
+ for (const entity of entities) {
17
+ const path = kebabCase(entity.name);
18
+ const subRouter = buildQuerierRouter(entity, extra);
19
+ router.use('/' + path, subRouter);
20
+ }
21
+ return router;
22
+ }
23
+ export function buildQuerierRouter(entity, opts) {
24
+ const meta = getMeta(entity);
25
+ const router = expressRouter();
26
+ router.use((req, res, next) => {
27
+ pre(req, meta, opts);
28
+ next();
29
+ });
30
+ router.get('/one', async (req, res, next) => {
31
+ const q = req.query;
32
+ const querier = await getQuerier();
33
+ try {
34
+ const data = await querier.findOne(entity, q);
35
+ res.json({ data, count: data ? 1 : 0 });
36
+ }
37
+ catch (err) {
38
+ next(err);
39
+ }
40
+ });
41
+ router.get('/:id', async (req, res, next) => {
42
+ const id = req.params.id;
43
+ const q = req.query;
44
+ q.$where ??= {};
45
+ if (Array.isArray(q.$where)) {
46
+ q.$where.push(id);
47
+ }
48
+ else {
49
+ q.$where[meta.id] = id;
50
+ }
51
+ const querier = await getQuerier();
52
+ try {
53
+ const data = await querier.findOne(entity, q);
54
+ res.json({ data, count: data ? 1 : 0 });
55
+ }
56
+ catch (err) {
57
+ next(err);
58
+ }
59
+ });
60
+ router.get('/', async (req, res, next) => {
61
+ const q = req.query;
62
+ const querier = await getQuerier();
63
+ try {
64
+ const findManyPromise = querier.findMany(entity, q);
65
+ const countPromise = req.query.count ? querier.count(entity, q) : undefined;
66
+ const [data, count] = await Promise.all([findManyPromise, countPromise]);
67
+ res.json({ data, count });
68
+ }
69
+ catch (err) {
70
+ next(err);
71
+ }
72
+ });
73
+ router.get('/count', async (req, res, next) => {
74
+ const q = req.query;
75
+ const querier = await getQuerier();
76
+ try {
77
+ const count = await querier.count(entity, q);
78
+ res.json({ data: count, count });
79
+ }
80
+ catch (err) {
81
+ next(err);
82
+ }
83
+ });
84
+ router.post('/', async (req, res, next) => {
85
+ const payload = req.body;
86
+ const querier = await getQuerier();
87
+ try {
88
+ await querier.beginTransaction();
89
+ const id = await querier.insertOne(entity, payload);
90
+ await querier.commitTransaction();
91
+ res.json({ data: id, count: id ? 1 : 0 });
92
+ }
93
+ catch (err) {
94
+ await querier.rollbackTransaction();
95
+ next(err);
96
+ }
97
+ finally {
98
+ await querier.release();
99
+ }
100
+ });
101
+ router.patch('/:id', async (req, res, next) => {
102
+ const payload = req.body;
103
+ const id = req.params.id;
104
+ const q = req.query;
105
+ q.$where ??= {};
106
+ if (Array.isArray(q.$where)) {
107
+ q.$where.push(id);
108
+ }
109
+ else {
110
+ q.$where[meta.id] = id;
111
+ }
112
+ const querier = await getQuerier();
113
+ try {
114
+ await querier.beginTransaction();
115
+ const count = await querier.updateMany(entity, q, payload);
116
+ await querier.commitTransaction();
117
+ res.json({ data: req.params.id, count });
118
+ }
119
+ catch (err) {
120
+ await querier.rollbackTransaction();
121
+ next(err);
122
+ }
123
+ finally {
124
+ await querier.release();
125
+ }
126
+ });
127
+ router.delete('/:id', async (req, res, next) => {
128
+ const id = req.params.id;
129
+ const q = req.query;
130
+ q.$where ??= {};
131
+ if (Array.isArray(q.$where)) {
132
+ q.$where.push(id);
133
+ }
134
+ else {
135
+ q.$where[meta.id] = id;
136
+ }
137
+ const querier = await getQuerier();
138
+ try {
139
+ await querier.beginTransaction();
140
+ const count = await querier.deleteMany(entity, q, {
141
+ softDelete: !!req.query.softDelete,
142
+ });
143
+ await querier.commitTransaction();
144
+ res.json({ data: req.params.id, count });
145
+ }
146
+ catch (err) {
147
+ await querier.rollbackTransaction();
148
+ next(err);
149
+ }
150
+ finally {
151
+ await querier.release();
152
+ }
153
+ });
154
+ router.delete('/', async (req, res, next) => {
155
+ const q = req.query;
156
+ const querier = await getQuerier();
157
+ let ids = [];
158
+ let count = 0;
159
+ try {
160
+ await querier.beginTransaction();
161
+ const founds = await querier.findMany(entity, q);
162
+ if (founds.length) {
163
+ ids = founds.map((found) => found[meta.id]);
164
+ count = await querier.deleteMany(entity, { $where: ids }, { softDelete: !!req.query.softDelete });
165
+ }
166
+ await querier.commitTransaction();
167
+ res.json({ data: ids, count });
168
+ }
169
+ catch (err) {
170
+ await querier.rollbackTransaction();
171
+ next(err);
172
+ }
173
+ finally {
174
+ await querier.release();
175
+ }
176
+ });
177
+ return router;
178
+ }
179
+ function pre(req, meta, extra) {
180
+ const method = req.method;
181
+ parseQuery(req);
182
+ extra.pre?.(req, meta);
183
+ if (method === 'POST' || method === 'PATCH' || method === 'PUT') {
184
+ extra.preSave?.(req, meta);
185
+ }
186
+ else if (method === 'GET' || method === 'DELETE') {
187
+ extra.preFilter?.(req, meta);
188
+ }
189
+ }
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllck1pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhwcmVzcy9xdWVyaWVyTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsRUFBNkIsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQTBCLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFL0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFNUMsSUFBSSxRQUFRLEdBQUcsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRXhDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BD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QztJQUMxQixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixJQUFJLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDaEUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO1NBQU0sSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIGFzIGV4cHJlc3NSb3V0ZXIsIHR5cGUgUmVxdWVzdCwgdHlwZSBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGdldEVudGl0aWVzLCBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGdldFF1ZXJpZXIgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IEVudGl0eU1ldGEsIElkVmFsdWUsIFF1ZXJ5LCBUeXBlIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBrZWJhYkNhc2UgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IHBhcnNlUXVlcnkgfSBmcm9tICcuL3F1ZXJ5LnV0aWwuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcXVlcmllck1pZGRsZXdhcmUob3B0czogTWlkZGxld2FyZU9wdGlvbnMgPSB7fSk6IFJvdXRlciB7XG4gIGNvbnN0IHJvdXRlciA9IGV4cHJlc3NSb3V0ZXIoKTtcblxuICBjb25zdCB7IGluY2x1ZGUsIGV4Y2x1ZGUsIC4uLmV4dHJhIH0gPSBvcHRzO1xuXG4gIGxldCBlbnRpdGllcyA9IGluY2x1ZGUgPz8gZ2V0RW50aXRpZXMoKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGVudGl0aWVzID0gZW50aXRpZXMuZmlsdGVyKChlbnRpdHkpID0+ICFvcHRzLmV4Y2x1ZGUuaW5jbHVkZXMoZW50aXR5KSk7XG4gIH1cblxuICBpZiAoIWVudGl0aWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vIGVudGl0aWVzIGZvciB0aGUgdXFsIGV4cHJlc3MgbWlkZGxld2FyZScpO1xuICB9XG5cbiAgZm9yIChjb25zdCBlbnRpdHkgb2YgZW50aXRpZXMpIHtcbiAgICBjb25zdCBwYXRoID0ga2ViYWJDYXNlKGVudGl0eS5uYW1lKTtcbiAgICBjb25zdCBzdWJSb3V0ZXIgPSBidWlsZFF1ZXJpZXJSb3V0ZXIoZW50aXR5LCBleHRyYSk7XG4gICAgcm91dGVyLnVzZSgnLycgKyBwYXRoLCBzdWJSb3V0ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUXVlcmllclJvdXRlcjxFPihlbnRpdHk6IFR5cGU8RT4sIG9wdHM6IEV4dHJhT3B0aW9ucyk6IFJvdXRlciB7XG4gIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gIGNvbnN0IHJvdXRlciA9IGV4cHJlc3NSb3V0ZXIoKTtcblxuICByb3V0ZXIudXNlKChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIHByZShyZXEsIG1ldGEsIG9wdHMpO1xuICAgIG5leHQoKTtcbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnL29uZScsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgY29uc3QgcXVlcmllciA9IGF3YWl0IGdldFF1ZXJpZXIoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHF1ZXJpZXIuZmluZE9uZShlbnRpdHksIHEpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhLCBjb3VudDogZGF0YSA/IDEgOiAwIH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIuZ2V0KCcvOmlkJywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSByZXEucGFyYW1zLmlkIGFzIElkVmFsdWU8RT47XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBxLiR3aGVyZSA/Pz0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocS4kd2hlcmUpKSB7XG4gICAgICBxLiR3aGVyZS5wdXNoKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcS4kd2hlcmVbbWV0YS5pZCBhcyBzdHJpbmddID0gaWQ7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBxdWVyaWVyLmZpbmRPbmUoZW50aXR5LCBxKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YSwgY291bnQ6IGRhdGEgPyAxIDogMCB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnLycsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgY29uc3QgcXVlcmllciA9IGF3YWl0IGdldFF1ZXJpZXIoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmluZE1hbnlQcm9taXNlID0gcXVlcmllci5maW5kTWFueShlbnRpdHksIHEpO1xuICAgICAgY29uc3QgY291bnRQcm9taXNlID0gcmVxLnF1ZXJ5LmNvdW50ID8gcXVlcmllci5jb3VudChlbnRpdHksIHEpIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgW2RhdGEsIGNvdW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFtmaW5kTWFueVByb21pc2UsIGNvdW50UHJvbWlzZV0pO1xuICAgICAgcmVzLmpzb24oeyBkYXRhLCBjb3VudCB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnL2NvdW50JywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgZ2V0UXVlcmllcigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHF1ZXJpZXIuY291bnQoZW50aXR5LCBxKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YTogY291bnQsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIucG9zdCgnLycsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXEuYm9keSBhcyBFO1xuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgaWQgPSBhd2FpdCBxdWVyaWVyLmluc2VydE9uZShlbnRpdHksIHBheWxvYWQpO1xuICAgICAgYXdhaXQgcXVlcmllci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhOiBpZCwgY291bnQ6IGlkID8gMSA6IDAgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgbmV4dChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJlbGVhc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJvdXRlci5wYXRjaCgnLzppZCcsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXEuYm9keSBhcyBFO1xuICAgIGNvbnN0IGlkID0gcmVxLnBhcmFtcy5pZCBhcyBJZFZhbHVlPEU+O1xuICAgIGNvbnN0IHEgPSByZXEucXVlcnkgYXMgUXVlcnk8RT47XG4gICAgcS4kd2hlcmUgPz89IHt9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHEuJHdoZXJlKSkge1xuICAgICAgcS4kd2hlcmUucHVzaChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHEuJHdoZXJlW21ldGEuaWQgYXMgc3RyaW5nXSA9IGlkO1xuICAgIH1cbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgZ2V0UXVlcmllcigpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgcXVlcmllci51cGRhdGVNYW55KGVudGl0eSwgcSwgcGF5bG9hZCk7XG4gICAgICBhd2FpdCBxdWVyaWVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgICByZXMuanNvbih7IGRhdGE6IHJlcS5wYXJhbXMuaWQsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZXIuZGVsZXRlKCcvOmlkJywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3QgaWQgPSByZXEucGFyYW1zLmlkIGFzIElkVmFsdWU8RT47XG4gICAgY29uc3QgcSA9IHJlcS5xdWVyeSBhcyBRdWVyeTxFPjtcbiAgICBxLiR3aGVyZSA/Pz0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocS4kd2hlcmUpKSB7XG4gICAgICBxLiR3aGVyZS5wdXNoKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcS4kd2hlcmVbbWV0YS5pZCBhcyBzdHJpbmddID0gaWQ7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCBxdWVyaWVyLmRlbGV0ZU1hbnkoZW50aXR5LCBxLCB7XG4gICAgICAgIHNvZnREZWxldGU6ICEhcmVxLnF1ZXJ5LnNvZnREZWxldGUsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHF1ZXJpZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICAgIHJlcy5qc29uKHsgZGF0YTogcmVxLnBhcmFtcy5pZCwgY291bnQgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgbmV4dChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJlbGVhc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJvdXRlci5kZWxldGUoJy8nLCBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBxID0gcmVxLnF1ZXJ5IGFzIFF1ZXJ5PEU+O1xuICAgIGNvbnN0IHF1ZXJpZXIgPSBhd2FpdCBnZXRRdWVyaWVyKCk7XG4gICAgbGV0IGlkczogSWRWYWx1ZTxFPltdID0gW107XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcXVlcmllci5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICBjb25zdCBmb3VuZHMgPSBhd2FpdCBxdWVyaWVyLmZpbmRNYW55KGVudGl0eSwgcSk7XG4gICAgICBpZiAoZm91bmRzLmxlbmd0aCkge1xuICAgICAgICBpZHMgPSBmb3VuZHMubWFwKChmb3VuZCkgPT4gZm91bmRbbWV0YS5pZF0pO1xuICAgICAgICBjb3VudCA9IGF3YWl0IHF1ZXJpZXIuZGVsZXRlTWFueShlbnRpdHksIHsgJHdoZXJlOiBpZHMgfSwgeyBzb2Z0RGVsZXRlOiAhIXJlcS5xdWVyeS5zb2Z0RGVsZXRlIH0pO1xuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcmllci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmVzLmpzb24oeyBkYXRhOiBpZHMsIGNvdW50IH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBhd2FpdCBxdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcmllci5yZWxlYXNlKCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcm91dGVyO1xufVxuXG5mdW5jdGlvbiBwcmUocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPGFueT4sIGV4dHJhOiBFeHRyYU9wdGlvbnMpIHtcbiAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgcGFyc2VRdWVyeShyZXEpO1xuICBleHRyYS5wcmU/LihyZXEsIG1ldGEpO1xuICBpZiAobWV0aG9kID09PSAnUE9TVCcgfHwgbWV0aG9kID09PSAnUEFUQ0gnIHx8IG1ldGhvZCA9PT0gJ1BVVCcpIHtcbiAgICBleHRyYS5wcmVTYXZlPy4ocmVxLCBtZXRhKTtcbiAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdHRVQnIHx8IG1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICBleHRyYS5wcmVGaWx0ZXI/LihyZXEsIG1ldGEpO1xuICB9XG59XG5cbnR5cGUgRXh0cmFPcHRpb25zID0ge1xuICAvKipcbiAgICogQWxsb3cgYXVnbWVudCBhbnkga2luZCBvZiByZXF1ZXN0IGJlZm9yZSBpdCBydW5zXG4gICAqL1xuICByZWFkb25seSBwcmU/OiBQcmU7XG4gIC8qKlxuICAgKiBBbGxvdyBhdWdtZW50IGEgc2F2aW5nIHJlcXVlc3QgKFBPU1QsIFBBVENILCBQVVQpIGJlZm9yZSBpdCBydW5zXG4gICAqL1xuICByZWFkb25seSBwcmVTYXZlPzogUHJlU2F2ZTtcbiAgLyoqXG4gICAqIEFsbG93IGF1Z21lbnQgYSBmaWx0ZXJpbmcgcmVxdWVzdCAoR0VULCBQVVQsIERFTEVURSkgYmVmb3JlIGl0IHJ1bnNcbiAgICovXG4gIHJlYWRvbmx5IHByZUZpbHRlcj86IFByZUZpbHRlcjtcbn07XG5cbnR5cGUgTWlkZGxld2FyZU9wdGlvbnMgPSB7XG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBUeXBlPHVua25vd24+W107XG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBUeXBlPHVua25vd24+W107XG59ICYgRXh0cmFPcHRpb25zO1xuXG50eXBlIFByZSA9IDxFID0gdW5rbm93bj4ocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPEU+KSA9PiB2b2lkO1xudHlwZSBQcmVTYXZlID0gPEUgPSB1bmtub3duPihyZXE6IFJlcXVlc3QsIG1ldGE6IEVudGl0eU1ldGE8RT4pID0+IHZvaWQ7XG50eXBlIFByZUZpbHRlciA9IDxFID0gdW5rbm93bj4ocmVxOiBSZXF1ZXN0LCBtZXRhOiBFbnRpdHlNZXRhPEU+KSA9PiB2b2lkO1xuIl19
@@ -0,0 +1,2 @@
1
+ import type { Request } from 'express';
2
+ export declare function parseQuery(req: Request): void;
@@ -0,0 +1,19 @@
1
+ export function parseQuery(req) {
2
+ req.query ??= {};
3
+ const qmsSrc = req.query;
4
+ const qm = qmsSrc;
5
+ if (qmsSrc.$select) {
6
+ qm.$select = JSON.parse(qmsSrc.$select);
7
+ }
8
+ qm.$where = qmsSrc.$where ? JSON.parse(qmsSrc.$where) : {};
9
+ if (qmsSrc.$sort) {
10
+ qm.$sort = JSON.parse(qmsSrc.$sort);
11
+ }
12
+ if (qmsSrc.$skip) {
13
+ qm.$skip = Number(qmsSrc.$skip);
14
+ }
15
+ if (qmsSrc.$limit) {
16
+ qm.$limit = Number(qmsSrc.$limit);
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHByZXNzL3F1ZXJ5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFZO0lBQ3JDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO0lBQ2pCLE1BQU0sTUFBTSxHQUFxQixHQUFHLENBQUMsS0FBSyxDQUFDO0lBQzNDLE1BQU0sRUFBRSxHQUFHLE1BQW1DLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeVN0cmluZ2lmaWVkIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5KHJlcTogUmVxdWVzdCkge1xuICByZXEucXVlcnkgPz89IHt9O1xuICBjb25zdCBxbXNTcmM6IFF1ZXJ5U3RyaW5naWZpZWQgPSByZXEucXVlcnk7XG4gIGNvbnN0IHFtID0gcW1zU3JjIGFzIHVua25vd24gYXMgUXVlcnk8dW5rbm93bj47XG4gIGlmIChxbXNTcmMuJHNlbGVjdCkge1xuICAgIHFtLiRzZWxlY3QgPSBKU09OLnBhcnNlKHFtc1NyYy4kc2VsZWN0KTtcbiAgfVxuICBxbS4kd2hlcmUgPSBxbXNTcmMuJHdoZXJlID8gSlNPTi5wYXJzZShxbXNTcmMuJHdoZXJlKSA6IHt9O1xuICBpZiAocW1zU3JjLiRzb3J0KSB7XG4gICAgcW0uJHNvcnQgPSBKU09OLnBhcnNlKHFtc1NyYy4kc29ydCk7XG4gIH1cbiAgaWYgKHFtc1NyYy4kc2tpcCkge1xuICAgIHFtLiRza2lwID0gTnVtYmVyKHFtc1NyYy4kc2tpcCk7XG4gIH1cbiAgaWYgKHFtc1NyYy4kbGltaXQpIHtcbiAgICBxbS4kbGltaXQgPSBOdW1iZXIocW1zU3JjLiRsaW1pdCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ export * from './dialect/index.js';
2
+ export * from './entity/index.js';
3
+ export * from './migrate/index.js';
4
+ export * from './namingStrategy/index.js';
5
+ export * from './options.js';
6
+ export * from './querier/index.js';
7
+ export * from './repository/index.js';
8
+ export * from './type/index.js';
9
+ export * from './util/index.js';
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './dialect/index.js';
2
+ export * from './entity/index.js';
3
+ export * from './migrate/index.js';
4
+ export * from './namingStrategy/index.js';
5
+ export * from './options.js';
6
+ export * from './querier/index.js';
7
+ export * from './repository/index.js';
8
+ export * from './type/index.js';
9
+ export * from './util/index.js';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaWFsZWN0L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZW50aXR5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWlncmF0ZS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL25hbWluZ1N0cmF0ZWd5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJpZXIvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvc2l0b3J5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS9pbmRleC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvaW5kZXguanMnO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './mariaDialect.js';
2
+ export * from './mariadbQuerier.js';
3
+ export * from './mariadbQuerierPool.js';
@@ -0,0 +1,4 @@
1
+ export * from './mariaDialect.js';
2
+ export * from './mariadbQuerier.js';
3
+ export * from './mariadbQuerierPool.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyaWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcmlhRGlhbGVjdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21hcmlhZGJRdWVyaWVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFyaWFkYlF1ZXJpZXJQb29sLmpzJztcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { AbstractSqlDialect } from '../dialect/index.js';
2
+ import type { QueryConflictPaths, QueryContext, QueryOptions, Type } from '../type/index.js';
3
+ export declare class MariaDialect extends AbstractSqlDialect {
4
+ addValue(values: unknown[], value: unknown): string;
5
+ insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void;
6
+ upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void;
7
+ escape(value: unknown): string;
8
+ }
@@ -0,0 +1,38 @@
1
+ import SqlString from 'sqlstring';
2
+ import { AbstractSqlDialect } from '../dialect/index.js';
3
+ import { getMeta } from '../entity/index.js';
4
+ export class MariaDialect extends AbstractSqlDialect {
5
+ addValue(values, value) {
6
+ if (value instanceof Date) {
7
+ values.push(value);
8
+ return '?';
9
+ }
10
+ return super.addValue(values, value);
11
+ }
12
+ insert(ctx, entity, payload, opts) {
13
+ super.insert(ctx, entity, payload, opts);
14
+ ctx.append(' ' + this.returningId(entity));
15
+ }
16
+ upsert(ctx, entity, conflictPaths, payload) {
17
+ const meta = getMeta(entity);
18
+ const update = this.getUpsertUpdateAssignments(ctx, meta, conflictPaths, payload, (name) => `VALUES(${name})`);
19
+ const returning = this.returningId(entity);
20
+ if (update) {
21
+ super.insert(ctx, entity, payload);
22
+ ctx.append(` ON DUPLICATE KEY UPDATE ${update} ${returning}`);
23
+ }
24
+ else {
25
+ const insertCtx = this.createContext();
26
+ super.insert(insertCtx, entity, payload);
27
+ ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));
28
+ ctx.append(' ' + returning);
29
+ insertCtx.values.forEach((val) => {
30
+ ctx.pushValue(val);
31
+ });
32
+ }
33
+ }
34
+ escape(value) {
35
+ return SqlString.escape(value);
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFEaWFsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhRGlhbGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsa0JBQWtCO0lBQ3pDLFFBQVEsQ0FBQyxNQUFpQixFQUFFLEtBQWM7UUFDakQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUSxNQUFNLENBQUksR0FBaUIsRUFBRSxNQUFlLEVBQUUsT0FBZ0IsRUFBRSxJQUFtQjtRQUMxRixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVEsTUFBTSxDQUFJLEdBQWlCLEVBQUUsTUFBZSxFQUFFLGFBQW9DLEVBQUUsT0FBVTtRQUNyRyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9HLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuQyxHQUFHLENBQUMsTUFBTSxDQUFDLDRCQUE0QixNQUFNLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUM5RCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM1QixTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFUSxNQUFNLENBQUMsS0FBYztRQUM1QixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNxbFN0cmluZyBmcm9tICdzcWxzdHJpbmcnO1xuaW1wb3J0IHsgQWJzdHJhY3RTcWxEaWFsZWN0IH0gZnJvbSAnLi4vZGlhbGVjdC9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgUXVlcnlDb25mbGljdFBhdGhzLCBRdWVyeUNvbnRleHQsIFF1ZXJ5T3B0aW9ucywgVHlwZSB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFEaWFsZWN0IGV4dGVuZHMgQWJzdHJhY3RTcWxEaWFsZWN0IHtcbiAgb3ZlcnJpZGUgYWRkVmFsdWUodmFsdWVzOiB1bmtub3duW10sIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICByZXR1cm4gJz8nO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYWRkVmFsdWUodmFsdWVzLCB2YWx1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBpbnNlcnQ8RT4oY3R4OiBRdWVyeUNvbnRleHQsIGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSB8IEVbXSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLmluc2VydChjdHgsIGVudGl0eSwgcGF5bG9hZCwgb3B0cyk7XG4gICAgY3R4LmFwcGVuZCgnICcgKyB0aGlzLnJldHVybmluZ0lkKGVudGl0eSkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgdXBzZXJ0PEU+KGN0eDogUXVlcnlDb250ZXh0LCBlbnRpdHk6IFR5cGU8RT4sIGNvbmZsaWN0UGF0aHM6IFF1ZXJ5Q29uZmxpY3RQYXRoczxFPiwgcGF5bG9hZDogRSk6IHZvaWQge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgdXBkYXRlID0gdGhpcy5nZXRVcHNlcnRVcGRhdGVBc3NpZ25tZW50cyhjdHgsIG1ldGEsIGNvbmZsaWN0UGF0aHMsIHBheWxvYWQsIChuYW1lKSA9PiBgVkFMVUVTKCR7bmFtZX0pYCk7XG4gICAgY29uc3QgcmV0dXJuaW5nID0gdGhpcy5yZXR1cm5pbmdJZChlbnRpdHkpO1xuXG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgc3VwZXIuaW5zZXJ0KGN0eCwgZW50aXR5LCBwYXlsb2FkKTtcbiAgICAgIGN0eC5hcHBlbmQoYCBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSAke3VwZGF0ZX0gJHtyZXR1cm5pbmd9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluc2VydEN0eCA9IHRoaXMuY3JlYXRlQ29udGV4dCgpO1xuICAgICAgc3VwZXIuaW5zZXJ0KGluc2VydEN0eCwgZW50aXR5LCBwYXlsb2FkKTtcbiAgICAgIGN0eC5hcHBlbmQoaW5zZXJ0Q3R4LnNxbC5yZXBsYWNlKC9eSU5TRVJULywgJ0lOU0VSVCBJR05PUkUnKSk7XG4gICAgICBjdHguYXBwZW5kKCcgJyArIHJldHVybmluZyk7XG4gICAgICBpbnNlcnRDdHgudmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBjdHgucHVzaFZhbHVlKHZhbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBlc2NhcGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBTcWxTdHJpbmcuZXNjYXBlKHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
2
+ import type { MariadbQuerier } from './mariadbQuerier.js';
3
+ export declare class MariadbQuerierPoolIt extends AbstractQuerierPoolIt<MariadbQuerier> {
4
+ constructor();
5
+ }
@@ -0,0 +1,19 @@
1
+ import { AbstractQuerierPoolIt } from '../querier/abstractQuerierPool-test.js';
2
+ import { createSpec } from '../test/index.js';
3
+ import { MariadbQuerierPool } from './mariadbQuerierPool.js';
4
+ export class MariadbQuerierPoolIt extends AbstractQuerierPoolIt {
5
+ constructor() {
6
+ super(new MariadbQuerierPool({
7
+ host: '0.0.0.0',
8
+ port: 3326,
9
+ user: 'test',
10
+ password: 'test',
11
+ database: 'test',
12
+ connectionLimit: 5,
13
+ trace: true,
14
+ bigIntAsNumber: true,
15
+ }));
16
+ }
17
+ }
18
+ createSpec(new MariadbQuerierPoolIt());
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFRdWVyaWVyUG9vbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhUXVlcmllclBvb2wudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHFCQUFxQztJQUM3RTtRQUNFLEtBQUssQ0FDSCxJQUFJLGtCQUFrQixDQUFDO1lBQ3JCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssRUFBRSxJQUFJO1lBQ1gsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFF1ZXJpZXJQb29sSXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0UXVlcmllclBvb2wtdGVzdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTcGVjIH0gZnJvbSAnLi4vdGVzdC9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE1hcmlhZGJRdWVyaWVyIH0gZnJvbSAnLi9tYXJpYWRiUXVlcmllci5qcyc7XG5pbXBvcnQgeyBNYXJpYWRiUXVlcmllclBvb2wgfSBmcm9tICcuL21hcmlhZGJRdWVyaWVyUG9vbC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNYXJpYWRiUXVlcmllclBvb2xJdCBleHRlbmRzIEFic3RyYWN0UXVlcmllclBvb2xJdDxNYXJpYWRiUXVlcmllcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBNYXJpYWRiUXVlcmllclBvb2woe1xuICAgICAgICBob3N0OiAnMC4wLjAuMCcsXG4gICAgICAgIHBvcnQ6IDMzMjYsXG4gICAgICAgIHVzZXI6ICd0ZXN0JyxcbiAgICAgICAgcGFzc3dvcmQ6ICd0ZXN0JyxcbiAgICAgICAgZGF0YWJhc2U6ICd0ZXN0JyxcbiAgICAgICAgY29ubmVjdGlvbkxpbWl0OiA1LFxuICAgICAgICB0cmFjZTogdHJ1ZSxcbiAgICAgICAgYmlnSW50QXNOdW1iZXI6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1hcmlhZGJRdWVyaWVyUG9vbEl0KCkpO1xuIl19
@@ -0,0 +1,17 @@
1
+ import type { PoolConnection } from 'mariadb';
2
+ import { AbstractSqlQuerier } from '../querier/index.js';
3
+ import type { ExtraOptions } from '../type/index.js';
4
+ export declare class MariadbQuerier extends AbstractSqlQuerier {
5
+ readonly connect: () => Promise<PoolConnection>;
6
+ readonly extra?: ExtraOptions;
7
+ conn: PoolConnection;
8
+ constructor(connect: () => Promise<PoolConnection>, extra?: ExtraOptions);
9
+ internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
10
+ internalRun(query: string, values?: unknown[]): Promise<{
11
+ changes: any;
12
+ ids: any;
13
+ firstId: any;
14
+ }>;
15
+ lazyConnect(): Promise<void>;
16
+ internalRelease(): Promise<void>;
17
+ }
@@ -0,0 +1,39 @@
1
+ import { AbstractSqlQuerier } from '../querier/index.js';
2
+ import { MariaDialect } from './mariaDialect.js';
3
+ export class MariadbQuerier extends AbstractSqlQuerier {
4
+ connect;
5
+ extra;
6
+ conn;
7
+ constructor(connect, extra) {
8
+ super(new MariaDialect(extra?.namingStrategy));
9
+ this.connect = connect;
10
+ this.extra = extra;
11
+ }
12
+ async internalAll(query, values) {
13
+ this.extra?.logger?.(query, values);
14
+ await this.lazyConnect();
15
+ const res = await this.conn.query(query, values);
16
+ return res.slice(0, res.length);
17
+ }
18
+ async internalRun(query, values) {
19
+ this.extra?.logger?.(query, values);
20
+ await this.lazyConnect();
21
+ const res = await this.conn.query(query, values);
22
+ const ids = res.length ? res.map((r) => r.id) : [];
23
+ return { changes: res.affectedRows, ids, firstId: ids[0] };
24
+ }
25
+ async lazyConnect() {
26
+ this.conn ??= await this.connect();
27
+ }
28
+ async internalRelease() {
29
+ if (this.hasOpenTransaction) {
30
+ throw TypeError('pending transaction');
31
+ }
32
+ if (!this.conn) {
33
+ return;
34
+ }
35
+ await this.conn.release();
36
+ this.conn = undefined;
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyaWEvbWFyaWFkYlF1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE1BQU0sT0FBTyxjQUFlLFNBQVEsa0JBQWtCO0lBSXpDO0lBQ0E7SUFKWCxJQUFJLENBQWlCO0lBRXJCLFlBQ1csT0FBc0MsRUFDdEMsS0FBb0I7UUFFN0IsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBSHRDLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQWU7SUFHL0IsQ0FBQztJQUVRLEtBQUssQ0FBQyxXQUFXLENBQUksS0FBYSxFQUFFLE1BQWtCO1FBQzdELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFRLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFUSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFrQjtRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQThCLENBQUM7SUFDekYsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb29sQ29ubmVjdGlvbiB9IGZyb20gJ21hcmlhZGInO1xuaW1wb3J0IHsgQWJzdHJhY3RTcWxRdWVyaWVyIH0gZnJvbSAnLi4vcXVlcmllci9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhT3B0aW9ucywgUXVlcnlVcGRhdGVSZXN1bHQgfSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IE1hcmlhRGlhbGVjdCB9IGZyb20gJy4vbWFyaWFEaWFsZWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIE1hcmlhZGJRdWVyaWVyIGV4dGVuZHMgQWJzdHJhY3RTcWxRdWVyaWVyIHtcbiAgY29ubjogUG9vbENvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29ubmVjdDogKCkgPT4gUHJvbWlzZTxQb29sQ29ubmVjdGlvbj4sXG4gICAgcmVhZG9ubHkgZXh0cmE/OiBFeHRyYU9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKG5ldyBNYXJpYURpYWxlY3QoZXh0cmE/Lm5hbWluZ1N0cmF0ZWd5KSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbEFsbDxUPihxdWVyeTogc3RyaW5nLCB2YWx1ZXM/OiB1bmtub3duW10pIHtcbiAgICB0aGlzLmV4dHJhPy5sb2dnZXI/LihxdWVyeSwgdmFsdWVzKTtcbiAgICBhd2FpdCB0aGlzLmxhenlDb25uZWN0KCk7XG4gICAgY29uc3QgcmVzOiBUW10gPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgcmV0dXJuIHJlcy5zbGljZSgwLCByZXMubGVuZ3RoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGludGVybmFsUnVuKHF1ZXJ5OiBzdHJpbmcsIHZhbHVlcz86IHVua25vd25bXSkge1xuICAgIHRoaXMuZXh0cmE/LmxvZ2dlcj8uKHF1ZXJ5LCB2YWx1ZXMpO1xuICAgIGF3YWl0IHRoaXMubGF6eUNvbm5lY3QoKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm4ucXVlcnkocXVlcnksIHZhbHVlcyk7XG4gICAgY29uc3QgaWRzID0gcmVzLmxlbmd0aCA/IHJlcy5tYXAoKHI6IGFueSkgPT4gci5pZCkgOiBbXTtcbiAgICByZXR1cm4geyBjaGFuZ2VzOiByZXMuYWZmZWN0ZWRSb3dzLCBpZHMsIGZpcnN0SWQ6IGlkc1swXSB9IHNhdGlzZmllcyBRdWVyeVVwZGF0ZVJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIGxhenlDb25uZWN0KCkge1xuICAgIHRoaXMuY29ubiA/Pz0gYXdhaXQgdGhpcy5jb25uZWN0KCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbnRlcm5hbFJlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuaGFzT3BlblRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvbm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jb25uLnJlbGVhc2UoKTtcbiAgICB0aGlzLmNvbm4gPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
2
+ export declare class MariadbQuerierIt extends AbstractSqlQuerierIt {
3
+ constructor();
4
+ }
@@ -0,0 +1,19 @@
1
+ import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
2
+ import { createSpec } from '../test/index.js';
3
+ import { MariadbQuerierPool } from './mariadbQuerierPool.js';
4
+ export class MariadbQuerierIt extends AbstractSqlQuerierIt {
5
+ constructor() {
6
+ super(new MariadbQuerierPool({
7
+ host: '0.0.0.0',
8
+ port: 3326,
9
+ user: 'test',
10
+ password: 'test',
11
+ database: 'test',
12
+ connectionLimit: 5,
13
+ trace: true,
14
+ bigIntAsNumber: true,
15
+ }), 'INT AUTO_INCREMENT PRIMARY KEY');
16
+ }
17
+ }
18
+ createSpec(new MariadbQuerierIt());
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXJpYS9tYXJpYWRiUXVlcmllci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW9CO0lBQ3hEO1FBQ0UsS0FBSyxDQUNILElBQUksa0JBQWtCLENBQUM7WUFDckIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsZUFBZSxFQUFFLENBQUM7WUFDbEIsS0FBSyxFQUFFLElBQUk7WUFDWCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLEVBQ0YsZ0NBQWdDLENBQ2pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxVQUFVLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFNxbFF1ZXJpZXJJdCB9IGZyb20gJy4uL3F1ZXJpZXIvYWJzdHJhY3RTcWxRdWVyaWVyLXRlc3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3BlYyB9IGZyb20gJy4uL3Rlc3QvaW5kZXguanMnO1xuaW1wb3J0IHsgTWFyaWFkYlF1ZXJpZXJQb29sIH0gZnJvbSAnLi9tYXJpYWRiUXVlcmllclBvb2wuanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFkYlF1ZXJpZXJJdCBleHRlbmRzIEFic3RyYWN0U3FsUXVlcmllckl0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBuZXcgTWFyaWFkYlF1ZXJpZXJQb29sKHtcbiAgICAgICAgaG9zdDogJzAuMC4wLjAnLFxuICAgICAgICBwb3J0OiAzMzI2LFxuICAgICAgICB1c2VyOiAndGVzdCcsXG4gICAgICAgIHBhc3N3b3JkOiAndGVzdCcsXG4gICAgICAgIGRhdGFiYXNlOiAndGVzdCcsXG4gICAgICAgIGNvbm5lY3Rpb25MaW1pdDogNSxcbiAgICAgICAgdHJhY2U6IHRydWUsXG4gICAgICAgIGJpZ0ludEFzTnVtYmVyOiB0cnVlLFxuICAgICAgfSksXG4gICAgICAnSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZJyxcbiAgICApO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IE1hcmlhZGJRdWVyaWVySXQoKSk7XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { type Pool, type PoolConfig } from 'mariadb';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import type { ExtraOptions } from '../type/index.js';
4
+ import { MariadbQuerier } from './mariadbQuerier.js';
5
+ export declare class MariadbQuerierPool extends AbstractQuerierPool<MariadbQuerier> {
6
+ readonly pool: Pool;
7
+ constructor(opts: PoolConfig, extra?: ExtraOptions);
8
+ getQuerier(): Promise<MariadbQuerier>;
9
+ end(): Promise<void>;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { createPool } from 'mariadb';
2
+ import { AbstractQuerierPool } from '../querier/index.js';
3
+ import { MariadbQuerier } from './mariadbQuerier.js';
4
+ export class MariadbQuerierPool extends AbstractQuerierPool {
5
+ pool;
6
+ constructor(opts, extra) {
7
+ super('mariadb', extra);
8
+ this.pool = createPool(opts);
9
+ }
10
+ async getQuerier() {
11
+ return new MariadbQuerier(() => this.pool.getConnection(), this.extra);
12
+ }
13
+ async end() {
14
+ await this.pool.end();
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyaWFkYlF1ZXJpZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmlhL21hcmlhZGJRdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUE4QixNQUFNLFNBQVMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQztJQUNoRSxJQUFJLENBQU87SUFFcEIsWUFBWSxJQUFnQixFQUFFLEtBQW9CO1FBQ2hELEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUc7UUFDUCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUG9vbCwgdHlwZSBQb29sLCB0eXBlIFBvb2xDb25maWcgfSBmcm9tICdtYXJpYWRiJztcbmltcG9ydCB7IEFic3RyYWN0UXVlcmllclBvb2wgfSBmcm9tICcuLi9xdWVyaWVyL2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgRXh0cmFPcHRpb25zIH0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBNYXJpYWRiUXVlcmllciB9IGZyb20gJy4vbWFyaWFkYlF1ZXJpZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgTWFyaWFkYlF1ZXJpZXJQb29sIGV4dGVuZHMgQWJzdHJhY3RRdWVyaWVyUG9vbDxNYXJpYWRiUXVlcmllcj4ge1xuICByZWFkb25seSBwb29sOiBQb29sO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IFBvb2xDb25maWcsIGV4dHJhPzogRXh0cmFPcHRpb25zKSB7XG4gICAgc3VwZXIoJ21hcmlhZGInLCBleHRyYSk7XG4gICAgdGhpcy5wb29sID0gY3JlYXRlUG9vbChvcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldFF1ZXJpZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNYXJpYWRiUXVlcmllcigoKSA9PiB0aGlzLnBvb2wuZ2V0Q29ubmVjdGlvbigpLCB0aGlzLmV4dHJhKTtcbiAgfVxuXG4gIGFzeW5jIGVuZCgpIHtcbiAgICBhd2FpdCB0aGlzLnBvb2wuZW5kKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};