drizzle-orm 0.10.25 → 0.10.28

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 (363) hide show
  1. package/.eslintrc +28 -0
  2. package/.tslintignore +1 -0
  3. package/CHANGELOG.md +202 -0
  4. package/README.md +439 -0
  5. package/dist/builders/aggregators/abstractAggregator.d.ts +11 -0
  6. package/dist/builders/aggregators/abstractAggregator.js +35 -0
  7. package/dist/builders/aggregators/deleteAggregator.d.ts +16 -0
  8. package/dist/builders/aggregators/deleteAggregator.js +42 -0
  9. package/dist/builders/aggregators/insertAggregator.d.ts +22 -0
  10. package/dist/builders/aggregators/insertAggregator.js +106 -0
  11. package/dist/builders/aggregators/selectAggregator.d.ts +39 -0
  12. package/dist/builders/aggregators/selectAggregator.js +143 -0
  13. package/dist/builders/aggregators/updateAggregator.d.ts +19 -0
  14. package/dist/builders/aggregators/updateAggregator.js +50 -0
  15. package/dist/builders/highLvlBuilders/abstractRequestBuilder.d.ts +27 -0
  16. package/dist/builders/highLvlBuilders/abstractRequestBuilder.js +32 -0
  17. package/dist/builders/highLvlBuilders/deleteRequestBuilder.d.ts +19 -0
  18. package/dist/builders/highLvlBuilders/deleteRequestBuilder.js +61 -0
  19. package/dist/builders/highLvlBuilders/insertRequestBuilder.d.ts +20 -0
  20. package/dist/builders/highLvlBuilders/insertRequestBuilder.js +73 -0
  21. package/dist/builders/highLvlBuilders/order.d.ts +5 -0
  22. package/dist/builders/highLvlBuilders/order.js +8 -0
  23. package/dist/builders/highLvlBuilders/selectRequestBuilder.d.ts +47 -0
  24. package/dist/builders/highLvlBuilders/selectRequestBuilder.js +128 -0
  25. package/dist/builders/highLvlBuilders/updateRequestBuilder.d.ts +22 -0
  26. package/dist/builders/highLvlBuilders/updateRequestBuilder.js +80 -0
  27. package/dist/builders/index.d.ts +18 -0
  28. package/dist/builders/index.js +54 -0
  29. package/dist/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +40 -0
  30. package/dist/builders/joinBuilders/builders/abstractJoinBuilder.js +78 -0
  31. package/dist/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +35 -0
  32. package/dist/builders/joinBuilders/builders/selectWithFiveJoins.js +45 -0
  33. package/dist/builders/joinBuilders/builders/selectWithFourJoins.d.ts +55 -0
  34. package/dist/builders/joinBuilders/builders/selectWithFourJoins.js +78 -0
  35. package/dist/builders/joinBuilders/builders/selectWithJoin.d.ts +49 -0
  36. package/dist/builders/joinBuilders/builders/selectWithJoin.js +64 -0
  37. package/dist/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +53 -0
  38. package/dist/builders/joinBuilders/builders/selectWithThreeJoins.js +73 -0
  39. package/dist/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +51 -0
  40. package/dist/builders/joinBuilders/builders/selectWithTwoJoins.js +68 -0
  41. package/dist/builders/joinBuilders/join.d.ts +23 -0
  42. package/dist/builders/joinBuilders/join.js +28 -0
  43. package/dist/builders/joinBuilders/joinWith.d.ts +14 -0
  44. package/dist/builders/joinBuilders/joinWith.js +14 -0
  45. package/dist/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +20 -0
  46. package/dist/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
  47. package/dist/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +19 -0
  48. package/dist/builders/joinBuilders/responses/selectResponseFourJoins.js +34 -0
  49. package/dist/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +18 -0
  50. package/dist/builders/joinBuilders/responses/selectResponseThreeJoins.js +33 -0
  51. package/dist/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +17 -0
  52. package/dist/builders/joinBuilders/responses/selectResponseTwoJoins.js +32 -0
  53. package/dist/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +16 -0
  54. package/dist/builders/joinBuilders/responses/selectResponseWithJoin.js +31 -0
  55. package/dist/builders/joinBuilders/static.d.ts +5 -0
  56. package/dist/builders/joinBuilders/static.js +9 -0
  57. package/dist/builders/lowLvlBuilders/alter.d.ts +0 -0
  58. package/dist/builders/lowLvlBuilders/alter.js +1 -0
  59. package/dist/builders/lowLvlBuilders/create.d.ts +12 -0
  60. package/dist/builders/lowLvlBuilders/create.js +100 -0
  61. package/dist/builders/lowLvlBuilders/delets/delete.d.ts +5 -0
  62. package/dist/builders/lowLvlBuilders/delets/delete.js +15 -0
  63. package/dist/builders/lowLvlBuilders/delets/deleteFilter.d.ts +11 -0
  64. package/dist/builders/lowLvlBuilders/delets/deleteFilter.js +13 -0
  65. package/dist/builders/lowLvlBuilders/delets/deleteFrom.d.ts +12 -0
  66. package/dist/builders/lowLvlBuilders/delets/deleteFrom.js +14 -0
  67. package/dist/builders/lowLvlBuilders/inserts/insert.d.ts +5 -0
  68. package/dist/builders/lowLvlBuilders/inserts/insert.js +15 -0
  69. package/dist/builders/lowLvlBuilders/inserts/insertInto.d.ts +13 -0
  70. package/dist/builders/lowLvlBuilders/inserts/insertInto.js +16 -0
  71. package/dist/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +12 -0
  72. package/dist/builders/lowLvlBuilders/inserts/onConflictInsert.js +13 -0
  73. package/dist/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +16 -0
  74. package/dist/builders/lowLvlBuilders/inserts/valuesInsert.js +19 -0
  75. package/dist/builders/lowLvlBuilders/selects/select.d.ts +9 -0
  76. package/dist/builders/lowLvlBuilders/selects/select.js +16 -0
  77. package/dist/builders/lowLvlBuilders/selects/selectFrom.d.ts +28 -0
  78. package/dist/builders/lowLvlBuilders/selects/selectFrom.js +34 -0
  79. package/dist/builders/lowLvlBuilders/selects/selectJoined.d.ts +26 -0
  80. package/dist/builders/lowLvlBuilders/selects/selectJoined.js +30 -0
  81. package/dist/builders/lowLvlBuilders/selects/whereSelect.d.ts +17 -0
  82. package/dist/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
  83. package/dist/builders/lowLvlBuilders/updates/update.d.ts +5 -0
  84. package/dist/builders/lowLvlBuilders/updates/update.js +15 -0
  85. package/dist/builders/lowLvlBuilders/updates/updateIn.d.ts +13 -0
  86. package/dist/builders/lowLvlBuilders/updates/updateIn.js +15 -0
  87. package/dist/builders/lowLvlBuilders/updates/whereSelect.d.ts +11 -0
  88. package/dist/builders/lowLvlBuilders/updates/whereSelect.js +13 -0
  89. package/dist/builders/lowLvlBuilders/updates/whereSet.d.ts +14 -0
  90. package/dist/builders/lowLvlBuilders/updates/whereSet.js +18 -0
  91. package/dist/builders/requestBuilders/updates/combine.d.ts +9 -0
  92. package/dist/builders/requestBuilders/updates/combine.js +26 -0
  93. package/dist/builders/requestBuilders/updates/increment.d.ts +13 -0
  94. package/dist/builders/requestBuilders/updates/increment.js +18 -0
  95. package/dist/builders/requestBuilders/updates/setObjects.d.ts +12 -0
  96. package/dist/builders/requestBuilders/updates/setObjects.js +19 -0
  97. package/dist/builders/requestBuilders/updates/static.d.ts +7 -0
  98. package/dist/builders/requestBuilders/updates/static.js +15 -0
  99. package/dist/builders/requestBuilders/updates/updates.d.ts +9 -0
  100. package/dist/builders/requestBuilders/updates/updates.js +10 -0
  101. package/dist/builders/requestBuilders/where/and.d.ts +11 -0
  102. package/dist/builders/requestBuilders/where/and.js +31 -0
  103. package/dist/builders/requestBuilders/where/const.d.ts +9 -0
  104. package/dist/builders/requestBuilders/where/const.js +25 -0
  105. package/dist/builders/requestBuilders/where/constArray.d.ts +9 -0
  106. package/dist/builders/requestBuilders/where/constArray.js +39 -0
  107. package/dist/builders/requestBuilders/where/eqWhere.d.ts +12 -0
  108. package/dist/builders/requestBuilders/where/eqWhere.js +20 -0
  109. package/dist/builders/requestBuilders/where/greater.d.ts +15 -0
  110. package/dist/builders/requestBuilders/where/greater.js +20 -0
  111. package/dist/builders/requestBuilders/where/greaterEq.d.ts +15 -0
  112. package/dist/builders/requestBuilders/where/greaterEq.js +20 -0
  113. package/dist/builders/requestBuilders/where/in.d.ts +12 -0
  114. package/dist/builders/requestBuilders/where/in.js +20 -0
  115. package/dist/builders/requestBuilders/where/isNotNull.d.ts +11 -0
  116. package/dist/builders/requestBuilders/where/isNotNull.js +18 -0
  117. package/dist/builders/requestBuilders/where/isNull.d.ts +11 -0
  118. package/dist/builders/requestBuilders/where/isNull.js +18 -0
  119. package/dist/builders/requestBuilders/where/less.d.ts +15 -0
  120. package/dist/builders/requestBuilders/where/less.js +20 -0
  121. package/dist/builders/requestBuilders/where/lessEq.d.ts +15 -0
  122. package/dist/builders/requestBuilders/where/lessEq.js +20 -0
  123. package/dist/builders/requestBuilders/where/like.d.ts +12 -0
  124. package/dist/builders/requestBuilders/where/like.js +20 -0
  125. package/dist/builders/requestBuilders/where/notEqWhere.d.ts +12 -0
  126. package/dist/builders/requestBuilders/where/notEqWhere.js +20 -0
  127. package/dist/builders/requestBuilders/where/or.d.ts +11 -0
  128. package/dist/builders/requestBuilders/where/or.js +31 -0
  129. package/dist/builders/requestBuilders/where/rawWhere.d.ts +9 -0
  130. package/dist/builders/requestBuilders/where/rawWhere.js +15 -0
  131. package/dist/builders/requestBuilders/where/static.d.ts +17 -0
  132. package/dist/builders/requestBuilders/where/static.js +49 -0
  133. package/dist/builders/requestBuilders/where/var.d.ts +13 -0
  134. package/dist/builders/requestBuilders/where/var.js +18 -0
  135. package/dist/builders/requestBuilders/where/where.d.ts +8 -0
  136. package/dist/builders/requestBuilders/where/where.js +6 -0
  137. package/dist/builders/transaction/transaction.d.ts +8 -0
  138. package/dist/builders/transaction/transaction.js +20 -0
  139. package/dist/columns/column.d.ts +72 -0
  140. package/dist/columns/column.js +101 -0
  141. package/dist/columns/index.d.ts +10 -0
  142. package/dist/columns/index.js +27 -0
  143. package/dist/columns/types/columnType.d.ts +7 -0
  144. package/dist/columns/types/columnType.js +6 -0
  145. package/dist/columns/types/pgBigDecimal.d.ts +10 -0
  146. package/dist/columns/types/pgBigDecimal.js +31 -0
  147. package/dist/columns/types/pgBigInt.d.ts +15 -0
  148. package/dist/columns/types/pgBigInt.js +32 -0
  149. package/dist/columns/types/pgBigSerial.d.ts +15 -0
  150. package/dist/columns/types/pgBigSerial.js +32 -0
  151. package/dist/columns/types/pgBoolean.d.ts +8 -0
  152. package/dist/columns/types/pgBoolean.js +18 -0
  153. package/dist/columns/types/pgEnum.d.ts +9 -0
  154. package/dist/columns/types/pgEnum.js +18 -0
  155. package/dist/columns/types/pgInteger.d.ts +8 -0
  156. package/dist/columns/types/pgInteger.js +21 -0
  157. package/dist/columns/types/pgJsonb.d.ts +9 -0
  158. package/dist/columns/types/pgJsonb.js +20 -0
  159. package/dist/columns/types/pgSerial.d.ts +8 -0
  160. package/dist/columns/types/pgSerial.js +18 -0
  161. package/dist/columns/types/pgSmallInt.d.ts +8 -0
  162. package/dist/columns/types/pgSmallInt.js +18 -0
  163. package/dist/columns/types/pgText.d.ts +8 -0
  164. package/dist/columns/types/pgText.js +18 -0
  165. package/dist/columns/types/pgTime.d.ts +8 -0
  166. package/dist/columns/types/pgTime.js +18 -0
  167. package/dist/columns/types/pgTimestamp.d.ts +8 -0
  168. package/dist/columns/types/pgTimestamp.js +18 -0
  169. package/dist/columns/types/pgTimestamptz.d.ts +8 -0
  170. package/dist/columns/types/pgTimestamptz.js +18 -0
  171. package/dist/columns/types/pgVarChar.d.ts +9 -0
  172. package/dist/columns/types/pgVarChar.js +24 -0
  173. package/dist/db/db.d.ts +18 -0
  174. package/dist/db/db.js +25 -0
  175. package/dist/db/dbConnector.d.ts +9 -0
  176. package/dist/db/dbConnector.js +32 -0
  177. package/dist/db/dbStringConnector.d.ts +6 -0
  178. package/dist/db/dbStringConnector.js +29 -0
  179. package/dist/db/group_by.d.ts +0 -0
  180. package/dist/db/group_by.js +68 -0
  181. package/dist/db/index.d.ts +4 -0
  182. package/dist/db/index.js +14 -0
  183. package/dist/db/session.d.ts +9 -0
  184. package/dist/db/session.js +16 -0
  185. package/dist/docs/cases/simple_delete.d.ts +1 -0
  186. package/dist/docs/cases/simple_delete.js +35 -0
  187. package/dist/docs/cases/simple_insert.d.ts +1 -0
  188. package/dist/docs/cases/simple_insert.js +57 -0
  189. package/dist/docs/cases/simple_join.d.ts +1 -0
  190. package/dist/docs/cases/simple_join.js +115 -0
  191. package/dist/docs/cases/simple_select.d.ts +1 -0
  192. package/dist/docs/cases/simple_select.js +50 -0
  193. package/dist/docs/cases/simple_update.d.ts +1 -0
  194. package/dist/docs/cases/simple_update.js +39 -0
  195. package/dist/docs/tables/citiesTable.d.ts +14 -0
  196. package/dist/docs/tables/citiesTable.js +21 -0
  197. package/dist/docs/tables/userGroupsTable.d.ts +7 -0
  198. package/dist/docs/tables/userGroupsTable.js +18 -0
  199. package/dist/docs/tables/usersTable.d.ts +17 -0
  200. package/dist/docs/tables/usersTable.js +35 -0
  201. package/dist/docs/tables/usersToUserGroups.d.ts +7 -0
  202. package/dist/docs/tables/usersToUserGroups.js +20 -0
  203. package/dist/docs/types/rolesType.d.ts +1 -0
  204. package/dist/docs/types/rolesType.js +6 -0
  205. package/dist/errors/baseError.d.ts +22 -0
  206. package/dist/errors/baseError.js +35 -0
  207. package/dist/errors/builderError.d.ts +14 -0
  208. package/dist/errors/builderError.js +25 -0
  209. package/dist/errors/dbErrors.d.ts +12 -0
  210. package/dist/errors/dbErrors.js +28 -0
  211. package/dist/index.d.ts +11 -0
  212. package/dist/index.js +31 -0
  213. package/dist/indexes/tableIndex.d.ts +11 -0
  214. package/dist/indexes/tableIndex.js +17 -0
  215. package/dist/logger/abstractLogger.d.ts +4 -0
  216. package/dist/logger/abstractLogger.js +5 -0
  217. package/dist/logger/consoleLogger.d.ts +5 -0
  218. package/dist/logger/consoleLogger.js +15 -0
  219. package/dist/mappers/index.d.ts +0 -0
  220. package/dist/mappers/index.js +1 -0
  221. package/dist/mappers/responseMapper.d.ts +10 -0
  222. package/dist/mappers/responseMapper.js +35 -0
  223. package/dist/migrator/index.d.ts +0 -0
  224. package/dist/migrator/index.js +1 -0
  225. package/dist/migrator/migrator.d.ts +11 -0
  226. package/dist/migrator/migrator.js +105 -0
  227. package/dist/serializer/serializer.d.ts +47 -0
  228. package/dist/serializer/serializer.js +258 -0
  229. package/dist/tables/abstractTable.d.ts +68 -0
  230. package/dist/tables/abstractTable.js +151 -0
  231. package/dist/tables/index.d.ts +3 -0
  232. package/dist/tables/index.js +11 -0
  233. package/dist/tables/inferTypes.d.ts +39 -0
  234. package/dist/tables/inferTypes.js +2 -0
  235. package/dist/tables/migrationsTable.d.ts +7 -0
  236. package/dist/tables/migrationsTable.js +18 -0
  237. package/dist/test.d.ts +1 -0
  238. package/dist/test.js +65 -0
  239. package/dist/types/type.d.ts +10 -0
  240. package/dist/types/type.js +14 -0
  241. package/dist/utils/ecranate.d.ts +2 -0
  242. package/dist/utils/ecranate.js +8 -0
  243. package/package.json +3 -7
  244. package/pnpm-lock.yaml +1842 -0
  245. package/src/builders/aggregators/abstractAggregator.ts +41 -0
  246. package/src/builders/aggregators/deleteAggregator.ts +44 -0
  247. package/src/builders/aggregators/insertAggregator.ts +120 -0
  248. package/src/builders/aggregators/selectAggregator.ts +163 -0
  249. package/src/builders/aggregators/updateAggregator.ts +56 -0
  250. package/src/builders/highLvlBuilders/abstractRequestBuilder.ts +51 -0
  251. package/src/builders/highLvlBuilders/deleteRequestBuilder.ts +59 -0
  252. package/src/builders/highLvlBuilders/insertRequestBuilder.ts +75 -0
  253. package/src/builders/highLvlBuilders/order.ts +4 -0
  254. package/src/builders/highLvlBuilders/selectRequestBuilder.ts +229 -0
  255. package/src/builders/highLvlBuilders/updateRequestBuilder.ts +80 -0
  256. package/src/builders/index.ts +21 -0
  257. package/src/builders/joinBuilders/builders/abstractJoinBuilder.ts +98 -0
  258. package/src/builders/joinBuilders/builders/selectWithFiveJoins.ts +110 -0
  259. package/src/builders/joinBuilders/builders/selectWithFourJoins.ts +254 -0
  260. package/src/builders/joinBuilders/builders/selectWithJoin.ts +189 -0
  261. package/src/builders/joinBuilders/builders/selectWithThreeJoins.ts +231 -0
  262. package/src/builders/joinBuilders/builders/selectWithTwoJoins.ts +210 -0
  263. package/src/builders/joinBuilders/join.ts +40 -0
  264. package/src/builders/joinBuilders/joinWith.ts +21 -0
  265. package/src/builders/joinBuilders/responses/selectResponseFiveJoins.ts +82 -0
  266. package/src/builders/joinBuilders/responses/selectResponseFourJoins.ts +73 -0
  267. package/src/builders/joinBuilders/responses/selectResponseThreeJoins.ts +64 -0
  268. package/src/builders/joinBuilders/responses/selectResponseTwoJoins.ts +57 -0
  269. package/src/builders/joinBuilders/responses/selectResponseWithJoin.ts +49 -0
  270. package/src/builders/joinBuilders/static.ts +9 -0
  271. package/src/builders/lowLvlBuilders/alter.ts +0 -0
  272. package/src/builders/lowLvlBuilders/create.ts +115 -0
  273. package/src/builders/lowLvlBuilders/delets/delete.ts +13 -0
  274. package/src/builders/lowLvlBuilders/delets/deleteFilter.ts +17 -0
  275. package/src/builders/lowLvlBuilders/delets/deleteFrom.ts +15 -0
  276. package/src/builders/lowLvlBuilders/inserts/insert.ts +11 -0
  277. package/src/builders/lowLvlBuilders/inserts/insertInto.ts +16 -0
  278. package/src/builders/lowLvlBuilders/inserts/onConflictInsert.ts +19 -0
  279. package/src/builders/lowLvlBuilders/inserts/valuesInsert.ts +27 -0
  280. package/src/builders/lowLvlBuilders/selects/select.ts +14 -0
  281. package/src/builders/lowLvlBuilders/selects/selectFrom.ts +50 -0
  282. package/src/builders/lowLvlBuilders/selects/selectJoined.ts +44 -0
  283. package/src/builders/lowLvlBuilders/selects/whereSelect.ts +36 -0
  284. package/src/builders/lowLvlBuilders/updates/update.ts +13 -0
  285. package/src/builders/lowLvlBuilders/updates/updateIn.ts +17 -0
  286. package/src/builders/lowLvlBuilders/updates/whereSelect.ts +17 -0
  287. package/src/builders/lowLvlBuilders/updates/whereSet.ts +21 -0
  288. package/src/builders/requestBuilders/updates/combine.ts +34 -0
  289. package/src/builders/requestBuilders/updates/increment.ts +24 -0
  290. package/src/builders/requestBuilders/updates/setObjects.ts +27 -0
  291. package/src/builders/requestBuilders/updates/static.ts +15 -0
  292. package/src/builders/requestBuilders/updates/updates.ts +8 -0
  293. package/src/builders/requestBuilders/where/and.ts +35 -0
  294. package/src/builders/requestBuilders/where/const.ts +23 -0
  295. package/src/builders/requestBuilders/where/constArray.ts +37 -0
  296. package/src/builders/requestBuilders/where/eqWhere.ts +20 -0
  297. package/src/builders/requestBuilders/where/greater.ts +20 -0
  298. package/src/builders/requestBuilders/where/greaterEq.ts +20 -0
  299. package/src/builders/requestBuilders/where/in.ts +20 -0
  300. package/src/builders/requestBuilders/where/isNotNull.ts +17 -0
  301. package/src/builders/requestBuilders/where/isNull.ts +17 -0
  302. package/src/builders/requestBuilders/where/less.ts +20 -0
  303. package/src/builders/requestBuilders/where/lessEq.ts +20 -0
  304. package/src/builders/requestBuilders/where/like.ts +20 -0
  305. package/src/builders/requestBuilders/where/notEqWhere.ts +20 -0
  306. package/src/builders/requestBuilders/where/or.ts +35 -0
  307. package/src/builders/requestBuilders/where/rawWhere.ts +10 -0
  308. package/src/builders/requestBuilders/where/static.ts +60 -0
  309. package/src/builders/requestBuilders/where/var.ts +19 -0
  310. package/src/builders/requestBuilders/where/where.ts +5 -0
  311. package/src/builders/transaction/transaction.ts +21 -0
  312. package/src/columns/column.ts +195 -0
  313. package/src/columns/index.ts +10 -0
  314. package/src/columns/types/columnType.ts +8 -0
  315. package/src/columns/types/pgBigDecimal.ts +29 -0
  316. package/src/columns/types/pgBigInt.ts +36 -0
  317. package/src/columns/types/pgBigSerial.ts +36 -0
  318. package/src/columns/types/pgBoolean.ts +18 -0
  319. package/src/columns/types/pgEnum.ts +17 -0
  320. package/src/columns/types/pgInteger.ts +21 -0
  321. package/src/columns/types/pgJsonb.ts +21 -0
  322. package/src/columns/types/pgSerial.ts +18 -0
  323. package/src/columns/types/pgSmallInt.ts +18 -0
  324. package/src/columns/types/pgText.ts +18 -0
  325. package/src/columns/types/pgTime.ts +18 -0
  326. package/src/columns/types/pgTimestamp.ts +18 -0
  327. package/src/columns/types/pgTimestamptz.ts +18 -0
  328. package/src/columns/types/pgVarChar.ts +24 -0
  329. package/src/db/db.ts +43 -0
  330. package/src/db/dbConnector.ts +30 -0
  331. package/src/db/dbStringConnector.ts +29 -0
  332. package/src/db/group_by.ts +75 -0
  333. package/src/db/index.ts +4 -0
  334. package/src/db/session.ts +16 -0
  335. package/src/docs/cases/simple_delete.ts +35 -0
  336. package/src/docs/cases/simple_insert.ts +65 -0
  337. package/src/docs/cases/simple_join.ts +140 -0
  338. package/src/docs/cases/simple_select.ts +72 -0
  339. package/src/docs/cases/simple_update.ts +40 -0
  340. package/src/docs/tables/citiesTable.ts +22 -0
  341. package/src/docs/tables/userGroupsTable.ts +12 -0
  342. package/src/docs/tables/usersTable.ts +33 -0
  343. package/src/docs/tables/usersToUserGroups.ts +14 -0
  344. package/src/docs/types/rolesType.ts +4 -0
  345. package/src/errors/baseError.ts +47 -0
  346. package/src/errors/builderError.ts +31 -0
  347. package/src/errors/dbErrors.ts +24 -0
  348. package/src/index.ts +20 -0
  349. package/src/indexes/tableIndex.ts +25 -0
  350. package/src/logger/abstractLogger.ts +4 -0
  351. package/src/logger/consoleLogger.ts +11 -0
  352. package/src/mappers/index.ts +0 -0
  353. package/src/mappers/responseMapper.ts +46 -0
  354. package/src/migrator/index.ts +0 -0
  355. package/src/migrator/migrator.ts +97 -0
  356. package/src/serializer/serializer.ts +336 -0
  357. package/src/tables/abstractTable.ts +188 -0
  358. package/src/tables/index.ts +4 -0
  359. package/src/tables/inferTypes.ts +67 -0
  360. package/src/tables/migrationsTable.ts +11 -0
  361. package/src/types/type.ts +15 -0
  362. package/src/utils/ecranate.ts +4 -0
  363. package/tsconfig.json +13 -0
@@ -0,0 +1,10 @@
1
+ export { Column, ExtractColumnType, Defaults } from './column';
2
+ export { default as PgBigDecimal } from './types/pgBigDecimal';
3
+ export { default as PgBigInt } from './types/pgBigInt';
4
+ export { default as PgBoolean } from './types/pgBoolean';
5
+ export { default as PgInteger } from './types/pgInteger';
6
+ export { default as PgJsonb } from './types/pgJsonb';
7
+ export { default as PgText } from './types/pgText';
8
+ export { default as PgTime } from './types/pgTime';
9
+ export { default as PgTimestamp } from './types/pgTimestamp';
10
+ export { default as PgVarChar } from './types/pgVarChar';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PgVarChar = exports.PgTimestamp = exports.PgTime = exports.PgText = exports.PgJsonb = exports.PgInteger = exports.PgBoolean = exports.PgBigInt = exports.PgBigDecimal = exports.Defaults = exports.Column = void 0;
7
+ var column_1 = require("./column");
8
+ Object.defineProperty(exports, "Column", { enumerable: true, get: function () { return column_1.Column; } });
9
+ Object.defineProperty(exports, "Defaults", { enumerable: true, get: function () { return column_1.Defaults; } });
10
+ var pgBigDecimal_1 = require("./types/pgBigDecimal");
11
+ Object.defineProperty(exports, "PgBigDecimal", { enumerable: true, get: function () { return __importDefault(pgBigDecimal_1).default; } });
12
+ var pgBigInt_1 = require("./types/pgBigInt");
13
+ Object.defineProperty(exports, "PgBigInt", { enumerable: true, get: function () { return __importDefault(pgBigInt_1).default; } });
14
+ var pgBoolean_1 = require("./types/pgBoolean");
15
+ Object.defineProperty(exports, "PgBoolean", { enumerable: true, get: function () { return __importDefault(pgBoolean_1).default; } });
16
+ var pgInteger_1 = require("./types/pgInteger");
17
+ Object.defineProperty(exports, "PgInteger", { enumerable: true, get: function () { return __importDefault(pgInteger_1).default; } });
18
+ var pgJsonb_1 = require("./types/pgJsonb");
19
+ Object.defineProperty(exports, "PgJsonb", { enumerable: true, get: function () { return __importDefault(pgJsonb_1).default; } });
20
+ var pgText_1 = require("./types/pgText");
21
+ Object.defineProperty(exports, "PgText", { enumerable: true, get: function () { return __importDefault(pgText_1).default; } });
22
+ var pgTime_1 = require("./types/pgTime");
23
+ Object.defineProperty(exports, "PgTime", { enumerable: true, get: function () { return __importDefault(pgTime_1).default; } });
24
+ var pgTimestamp_1 = require("./types/pgTimestamp");
25
+ Object.defineProperty(exports, "PgTimestamp", { enumerable: true, get: function () { return __importDefault(pgTimestamp_1).default; } });
26
+ var pgVarChar_1 = require("./types/pgVarChar");
27
+ Object.defineProperty(exports, "PgVarChar", { enumerable: true, get: function () { return __importDefault(pgVarChar_1).default; } });
@@ -0,0 +1,7 @@
1
+ export default abstract class ColumnType<TCodeType = {}> {
2
+ codeType: TCodeType;
3
+ protected abstract dbName: string;
4
+ abstract getDbName(): string;
5
+ abstract insertStrategy(value: TCodeType): string;
6
+ abstract selectStrategy(value: any): TCodeType | undefined;
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // eslint-disable-next-line max-classes-per-file
4
+ class ColumnType {
5
+ }
6
+ exports.default = ColumnType;
@@ -0,0 +1,10 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgBigDecimal extends ColumnType<number> {
3
+ precision?: number;
4
+ scale?: number;
5
+ dbName: string;
6
+ constructor(precision?: number, scale?: number);
7
+ getDbName: () => string;
8
+ insertStrategy: (value: number) => string;
9
+ selectStrategy(value: string): number | undefined;
10
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgBigDecimal extends columnType_1.default {
8
+ constructor(precision, scale) {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.precision = precision;
13
+ this.scale = scale;
14
+ if (this.scale && !this.precision) {
15
+ throw new Error('In numeric scale should be set up together with precision');
16
+ }
17
+ if (this.precision && !this.scale) {
18
+ this.dbName = `numeric(${this.precision})`;
19
+ }
20
+ else if (this.precision && this.scale) {
21
+ this.dbName = `numeric(${this.precision},${this.scale})`;
22
+ }
23
+ else {
24
+ this.dbName = 'numeric';
25
+ }
26
+ }
27
+ selectStrategy(value) {
28
+ return value ? parseFloat(value) : undefined;
29
+ }
30
+ }
31
+ exports.default = PgBigDecimal;
@@ -0,0 +1,15 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgBigInt53 extends ColumnType<number> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: number) => string;
7
+ selectStrategy(value: string): number | undefined;
8
+ }
9
+ export declare class PgBigInt64 extends ColumnType<bigint> {
10
+ dbName: string;
11
+ constructor();
12
+ getDbName: () => string;
13
+ insertStrategy: (value: bigint) => string;
14
+ selectStrategy(value: string): bigint | undefined;
15
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PgBigInt64 = void 0;
7
+ // eslint-disable-next-line max-classes-per-file
8
+ const columnType_1 = __importDefault(require("./columnType"));
9
+ class PgBigInt53 extends columnType_1.default {
10
+ constructor() {
11
+ super();
12
+ this.getDbName = () => this.dbName;
13
+ this.insertStrategy = (value) => `${value}`;
14
+ this.dbName = 'BIGINT';
15
+ }
16
+ selectStrategy(value) {
17
+ return value ? parseInt(value, 10) : undefined;
18
+ }
19
+ }
20
+ exports.default = PgBigInt53;
21
+ class PgBigInt64 extends columnType_1.default {
22
+ constructor() {
23
+ super();
24
+ this.getDbName = () => this.dbName;
25
+ this.insertStrategy = (value) => `${value}`;
26
+ this.dbName = 'BIGINT';
27
+ }
28
+ selectStrategy(value) {
29
+ return value ? BigInt(value) : undefined;
30
+ }
31
+ }
32
+ exports.PgBigInt64 = PgBigInt64;
@@ -0,0 +1,15 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgBigSerial53 extends ColumnType<number> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: number) => string;
7
+ selectStrategy(value: string): number | undefined;
8
+ }
9
+ export declare class PgBigSerial64 extends ColumnType<bigint> {
10
+ dbName: string;
11
+ constructor();
12
+ getDbName: () => string;
13
+ insertStrategy: (value: bigint) => string;
14
+ selectStrategy(value: string): bigint | undefined;
15
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PgBigSerial64 = void 0;
7
+ /* eslint-disable max-classes-per-file */
8
+ const columnType_1 = __importDefault(require("./columnType"));
9
+ class PgBigSerial53 extends columnType_1.default {
10
+ constructor() {
11
+ super();
12
+ this.getDbName = () => this.dbName;
13
+ this.insertStrategy = (value) => `${value}`;
14
+ this.dbName = 'BIGSERIAL';
15
+ }
16
+ selectStrategy(value) {
17
+ return value ? parseInt(value, 10) : undefined;
18
+ }
19
+ }
20
+ exports.default = PgBigSerial53;
21
+ class PgBigSerial64 extends columnType_1.default {
22
+ constructor() {
23
+ super();
24
+ this.getDbName = () => this.dbName;
25
+ this.insertStrategy = (value) => `${value}`;
26
+ this.dbName = 'BIGSERIAL';
27
+ }
28
+ selectStrategy(value) {
29
+ return value ? BigInt(value) : undefined;
30
+ }
31
+ }
32
+ exports.PgBigSerial64 = PgBigSerial64;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgBoolean extends ColumnType<boolean> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: boolean) => string;
7
+ selectStrategy(value: boolean): boolean;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgBoolean extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.dbName = 'boolean';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgBoolean;
@@ -0,0 +1,9 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgEnum<TCodeType> extends ColumnType {
3
+ codeType: TCodeType;
4
+ dbName: string;
5
+ constructor(dbName: string);
6
+ getDbName: () => string;
7
+ insertStrategy: (value: TCodeType) => string;
8
+ selectStrategy(value: any): TCodeType;
9
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgEnum extends columnType_1.default {
8
+ constructor(dbName) {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.dbName = dbName;
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgEnum;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgInteger extends ColumnType<number> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: number) => string;
7
+ selectStrategy(value: number): number | undefined;
8
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgInteger extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.dbName = 'INT';
13
+ }
14
+ selectStrategy(value) {
15
+ if (typeof value === 'string') {
16
+ return value ? parseInt(value, 10) : undefined;
17
+ }
18
+ return value;
19
+ }
20
+ }
21
+ exports.default = PgInteger;
@@ -0,0 +1,9 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgJsonb<TCodeType> extends ColumnType<TCodeType> {
3
+ codeType: TCodeType;
4
+ dbName: string;
5
+ constructor();
6
+ getDbName: () => string;
7
+ insertStrategy: (value: TCodeType) => string;
8
+ selectStrategy(value: any): TCodeType;
9
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* eslint-disable max-len */
7
+ const columnType_1 = __importDefault(require("./columnType"));
8
+ class PgJsonb extends columnType_1.default {
9
+ constructor() {
10
+ super();
11
+ this.getDbName = () => this.dbName;
12
+ // public insertStrategy = (value: TCodeType): string => `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
13
+ this.insertStrategy = (value) => `${JSON.stringify(value).replace(/'/g, "''")}`;
14
+ this.dbName = 'JSONB';
15
+ }
16
+ selectStrategy(value) {
17
+ return value;
18
+ }
19
+ }
20
+ exports.default = PgJsonb;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgSerial extends ColumnType<number> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: number) => string;
7
+ selectStrategy(value: number): number | undefined;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgSerial extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.dbName = 'SERIAL';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgSerial;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgSmallInt extends ColumnType<number> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: number) => string;
7
+ selectStrategy(value: number): number | undefined;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgSmallInt extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value}`;
12
+ this.dbName = 'SMALLINT';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgSmallInt;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgText extends ColumnType<string> {
3
+ protected dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: string) => string;
7
+ selectStrategy(value: string): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgText extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value.replace(/'/g, "''")}`;
12
+ this.dbName = 'TEXT';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgText;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgTime extends ColumnType<Date> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: Date) => string;
7
+ selectStrategy(value: any): Date;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgTime extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => value.toISOString();
12
+ this.dbName = 'time without time zone';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgTime;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgTimestamp extends ColumnType<Date> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: Date) => string;
7
+ selectStrategy(value: any): Date;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgTimestamp extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value.toISOString()}`;
12
+ this.dbName = 'timestamp without time zone';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgTimestamp;
@@ -0,0 +1,8 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgTimestamptz extends ColumnType<Date> {
3
+ dbName: string;
4
+ constructor();
5
+ getDbName: () => string;
6
+ insertStrategy: (value: Date) => string;
7
+ selectStrategy(value: any): Date;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgTimestamptz extends columnType_1.default {
8
+ constructor() {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value.toISOString()}`;
12
+ this.dbName = 'timestamp with time zone';
13
+ }
14
+ selectStrategy(value) {
15
+ return value;
16
+ }
17
+ }
18
+ exports.default = PgTimestamptz;
@@ -0,0 +1,9 @@
1
+ import ColumnType from './columnType';
2
+ export default class PgVarChar extends ColumnType<string> {
3
+ size?: number;
4
+ protected dbName: string;
5
+ constructor(size?: number);
6
+ getDbName: () => string;
7
+ insertStrategy: (value: string) => string;
8
+ selectStrategy(value: string): string;
9
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const columnType_1 = __importDefault(require("./columnType"));
7
+ class PgVarChar extends columnType_1.default {
8
+ constructor(size) {
9
+ super();
10
+ this.getDbName = () => this.dbName;
11
+ this.insertStrategy = (value) => `${value.replace(/'/g, "''")}`;
12
+ this.size = size;
13
+ if (size) {
14
+ this.dbName = `character varying(${size})`;
15
+ }
16
+ else {
17
+ this.dbName = 'character varying';
18
+ }
19
+ }
20
+ selectStrategy(value) {
21
+ return value;
22
+ }
23
+ }
24
+ exports.default = PgVarChar;
@@ -0,0 +1,18 @@
1
+ import BaseLogger from '../logger/abstractLogger';
2
+ import { AbstractTable } from '../tables';
3
+ import { ISession } from './session';
4
+ export declare type TableConstructor = {
5
+ new (db: DB): AbstractTable<any>;
6
+ };
7
+ export default class DB {
8
+ protected _session: ISession;
9
+ protected _logger?: BaseLogger;
10
+ protected _cache: Map<TableConstructor, AbstractTable<any>>;
11
+ constructor(session: ISession);
12
+ create<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): TTable;
13
+ useLogger: (logger: BaseLogger) => void;
14
+ cache: () => Map<TableConstructor, AbstractTable<any>>;
15
+ logger: () => BaseLogger | undefined;
16
+ session: () => ISession;
17
+ protected instanceFor<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): AbstractTable<any> | undefined;
18
+ }
package/dist/db/db.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class DB {
4
+ constructor(session) {
5
+ this._cache = new Map();
6
+ this.useLogger = (logger) => {
7
+ this._logger = logger;
8
+ };
9
+ this.cache = () => this._cache;
10
+ this.logger = () => this._logger;
11
+ this.session = () => this._session;
12
+ this._session = session;
13
+ }
14
+ create(t) {
15
+ if (!this._cache.has(t)) {
16
+ // eslint-disable-next-line new-cap
17
+ this._cache.set(t, new t(this));
18
+ }
19
+ return this._cache.get(t);
20
+ }
21
+ instanceFor(t) {
22
+ return this._cache.get(t);
23
+ }
24
+ }
25
+ exports.default = DB;
@@ -0,0 +1,9 @@
1
+ import { ClientConfig } from 'pg';
2
+ import DB from './db';
3
+ import DBStringConnector from './dbStringConnector';
4
+ export default class DbConnector {
5
+ private __config;
6
+ connectionString: (url: string) => DBStringConnector;
7
+ params: (config: ClientConfig) => DbConnector;
8
+ connect: () => Promise<DB>;
9
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const pg_1 = require("pg");
7
+ const db_1 = __importDefault(require("./db"));
8
+ const dbStringConnector_1 = __importDefault(require("./dbStringConnector"));
9
+ const session_1 = __importDefault(require("./session"));
10
+ class DbConnector {
11
+ constructor() {
12
+ this.connectionString = (url) => new dbStringConnector_1.default(url);
13
+ this.params = (config) => {
14
+ this.__config = config;
15
+ return this;
16
+ };
17
+ this.connect = async () => {
18
+ try {
19
+ const pool = new pg_1.Pool(this.__config);
20
+ await pool.connect();
21
+ // console.log('Db connected!');
22
+ // check if table structure is the same as in code
23
+ return new db_1.default(new session_1.default(pool));
24
+ }
25
+ catch (e) {
26
+ // console.log(`Connection error: ${e.message}`);
27
+ throw new Error(`Connection error: ${e.message}`);
28
+ }
29
+ };
30
+ }
31
+ }
32
+ exports.default = DbConnector;
@@ -0,0 +1,6 @@
1
+ import Db from './db';
2
+ export default class DBStringConnector {
3
+ private _url;
4
+ constructor(url: string);
5
+ connect: () => Promise<Db>;
6
+ }