drizzle-orm 0.9.0 → 0.9.4

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 (325) hide show
  1. package/builders/aggregators/abstractAggregator.d.ts +9 -0
  2. package/builders/aggregators/abstractAggregator.js +28 -0
  3. package/builders/aggregators/deleteAggregator.d.ts +12 -0
  4. package/builders/aggregators/deleteAggregator.js +36 -0
  5. package/builders/aggregators/insertAggregator.d.ts +18 -0
  6. package/builders/aggregators/insertAggregator.js +94 -0
  7. package/builders/aggregators/selectAggregator.d.ts +26 -0
  8. package/builders/aggregators/selectAggregator.js +106 -0
  9. package/builders/aggregators/updateAggregator.d.ts +15 -0
  10. package/builders/aggregators/updateAggregator.js +41 -0
  11. package/builders/highLvlBuilders/abstractRequestBuilder.d.ts +21 -0
  12. package/builders/highLvlBuilders/abstractRequestBuilder.js +21 -0
  13. package/builders/highLvlBuilders/deleteRequestBuilder.d.ts +17 -0
  14. package/builders/highLvlBuilders/deleteRequestBuilder.js +43 -0
  15. package/builders/highLvlBuilders/insertRequestBuilder.d.ts +18 -0
  16. package/builders/highLvlBuilders/insertRequestBuilder.js +54 -0
  17. package/builders/highLvlBuilders/order.d.ts +5 -0
  18. package/builders/highLvlBuilders/order.js +8 -0
  19. package/builders/highLvlBuilders/selectRequestBuilder.d.ts +42 -0
  20. package/builders/highLvlBuilders/selectRequestBuilder.js +99 -0
  21. package/builders/highLvlBuilders/updateRequestBuilder.d.ts +20 -0
  22. package/builders/highLvlBuilders/updateRequestBuilder.js +54 -0
  23. package/{src/builders/index.ts → builders/index.d.ts} +2 -4
  24. package/builders/index.js +50 -0
  25. package/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +27 -0
  26. package/builders/joinBuilders/builders/abstractJoinBuilder.js +42 -0
  27. package/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +23 -0
  28. package/builders/joinBuilders/builders/selectWithFiveJoins.js +33 -0
  29. package/builders/joinBuilders/builders/selectWithFourJoins.d.ts +36 -0
  30. package/builders/joinBuilders/builders/selectWithFourJoins.js +65 -0
  31. package/builders/joinBuilders/builders/selectWithJoin.d.ts +33 -0
  32. package/builders/joinBuilders/builders/selectWithJoin.js +56 -0
  33. package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +35 -0
  34. package/builders/joinBuilders/builders/selectWithThreeJoins.js +62 -0
  35. package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +34 -0
  36. package/builders/joinBuilders/builders/selectWithTwoJoins.js +59 -0
  37. package/builders/joinBuilders/join.d.ts +23 -0
  38. package/builders/joinBuilders/join.js +28 -0
  39. package/builders/joinBuilders/joinWith.d.ts +14 -0
  40. package/builders/joinBuilders/joinWith.js +11 -0
  41. package/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +19 -0
  42. package/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
  43. package/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +18 -0
  44. package/builders/joinBuilders/responses/selectResponseFourJoins.js +34 -0
  45. package/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +17 -0
  46. package/builders/joinBuilders/responses/selectResponseThreeJoins.js +33 -0
  47. package/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +16 -0
  48. package/builders/joinBuilders/responses/selectResponseTwoJoins.js +32 -0
  49. package/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +15 -0
  50. package/builders/joinBuilders/responses/selectResponseWithJoin.js +31 -0
  51. package/builders/joinBuilders/static.d.ts +5 -0
  52. package/builders/joinBuilders/static.js +6 -0
  53. package/{src/builders/lowLvlBuilders/alter.ts → builders/lowLvlBuilders/alter.d.ts} +0 -0
  54. package/builders/lowLvlBuilders/alter.js +1 -0
  55. package/builders/lowLvlBuilders/create.d.ts +12 -0
  56. package/builders/lowLvlBuilders/create.js +97 -0
  57. package/builders/lowLvlBuilders/delets/delete.d.ts +5 -0
  58. package/builders/lowLvlBuilders/delets/delete.js +12 -0
  59. package/builders/lowLvlBuilders/delets/deleteFilter.d.ts +8 -0
  60. package/builders/lowLvlBuilders/delets/deleteFilter.js +13 -0
  61. package/builders/lowLvlBuilders/delets/deleteFrom.d.ts +9 -0
  62. package/builders/lowLvlBuilders/delets/deleteFrom.js +11 -0
  63. package/builders/lowLvlBuilders/inserts/insert.d.ts +5 -0
  64. package/builders/lowLvlBuilders/inserts/insert.js +12 -0
  65. package/builders/lowLvlBuilders/inserts/insertInto.d.ts +10 -0
  66. package/builders/lowLvlBuilders/inserts/insertInto.js +13 -0
  67. package/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +9 -0
  68. package/builders/lowLvlBuilders/inserts/onConflictInsert.js +13 -0
  69. package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +13 -0
  70. package/builders/lowLvlBuilders/inserts/valuesInsert.js +16 -0
  71. package/builders/lowLvlBuilders/selects/select.d.ts +5 -0
  72. package/builders/lowLvlBuilders/selects/select.js +12 -0
  73. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +19 -0
  74. package/builders/lowLvlBuilders/selects/selectFrom.js +31 -0
  75. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +17 -0
  76. package/builders/lowLvlBuilders/selects/selectJoined.js +27 -0
  77. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +14 -0
  78. package/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
  79. package/builders/lowLvlBuilders/updates/update.d.ts +5 -0
  80. package/builders/lowLvlBuilders/updates/update.js +12 -0
  81. package/builders/lowLvlBuilders/updates/updateIn.d.ts +10 -0
  82. package/builders/lowLvlBuilders/updates/updateIn.js +12 -0
  83. package/builders/lowLvlBuilders/updates/whereSelect.d.ts +8 -0
  84. package/builders/lowLvlBuilders/updates/whereSelect.js +13 -0
  85. package/builders/lowLvlBuilders/updates/whereSet.d.ts +11 -0
  86. package/builders/lowLvlBuilders/updates/whereSet.js +15 -0
  87. package/builders/requestBuilders/updates/combine.d.ts +6 -0
  88. package/builders/requestBuilders/updates/combine.js +21 -0
  89. package/builders/requestBuilders/updates/setObjects.d.ts +9 -0
  90. package/builders/requestBuilders/updates/setObjects.js +12 -0
  91. package/builders/requestBuilders/updates/static.d.ts +6 -0
  92. package/builders/requestBuilders/updates/static.js +9 -0
  93. package/{src/builders/requestBuilders/updates/updates.ts → builders/requestBuilders/updates/updates.d.ts} +1 -1
  94. package/builders/requestBuilders/updates/updates.js +5 -0
  95. package/builders/requestBuilders/where/and.d.ts +6 -0
  96. package/builders/requestBuilders/where/and.js +22 -0
  97. package/builders/requestBuilders/where/const.d.ts +6 -0
  98. package/builders/requestBuilders/where/const.js +17 -0
  99. package/builders/requestBuilders/where/constArray.d.ts +6 -0
  100. package/builders/requestBuilders/where/constArray.js +27 -0
  101. package/builders/requestBuilders/where/eqWhere.d.ts +7 -0
  102. package/builders/requestBuilders/where/eqWhere.js +12 -0
  103. package/builders/requestBuilders/where/greater.d.ts +10 -0
  104. package/builders/requestBuilders/where/greater.js +12 -0
  105. package/builders/requestBuilders/where/greaterEq.d.ts +10 -0
  106. package/builders/requestBuilders/where/greaterEq.js +12 -0
  107. package/builders/requestBuilders/where/in.d.ts +7 -0
  108. package/builders/requestBuilders/where/in.js +12 -0
  109. package/builders/requestBuilders/where/isNull.d.ts +6 -0
  110. package/builders/requestBuilders/where/isNull.js +11 -0
  111. package/builders/requestBuilders/where/less.d.ts +10 -0
  112. package/builders/requestBuilders/where/less.js +12 -0
  113. package/builders/requestBuilders/where/lessEq.d.ts +10 -0
  114. package/builders/requestBuilders/where/lessEq.js +12 -0
  115. package/builders/requestBuilders/where/like.d.ts +7 -0
  116. package/builders/requestBuilders/where/like.js +12 -0
  117. package/builders/requestBuilders/where/notEqWhere.d.ts +7 -0
  118. package/builders/requestBuilders/where/notEqWhere.js +12 -0
  119. package/builders/requestBuilders/where/or.d.ts +6 -0
  120. package/builders/requestBuilders/where/or.js +22 -0
  121. package/builders/requestBuilders/where/rawWhere.d.ts +6 -0
  122. package/builders/requestBuilders/where/rawWhere.js +11 -0
  123. package/builders/requestBuilders/where/static.d.ts +16 -0
  124. package/builders/requestBuilders/where/static.js +43 -0
  125. package/builders/requestBuilders/where/var.d.ts +8 -0
  126. package/builders/requestBuilders/where/var.js +12 -0
  127. package/{src/builders/requestBuilders/where/where.ts → builders/requestBuilders/where/where.d.ts} +1 -1
  128. package/builders/requestBuilders/where/where.js +5 -0
  129. package/builders/transaction/transaction.d.ts +8 -0
  130. package/builders/transaction/transaction.js +20 -0
  131. package/columns/column.d.ts +61 -0
  132. package/columns/column.js +98 -0
  133. package/{src/columns/index.ts → columns/index.d.ts} +0 -0
  134. package/columns/index.js +23 -0
  135. package/columns/types/columnType.d.ts +7 -0
  136. package/columns/types/columnType.js +6 -0
  137. package/columns/types/pgBigDecimal.d.ts +10 -0
  138. package/columns/types/pgBigDecimal.js +28 -0
  139. package/columns/types/pgBigInt.d.ts +8 -0
  140. package/columns/types/pgBigInt.js +17 -0
  141. package/columns/types/pgBoolean.d.ts +8 -0
  142. package/columns/types/pgBoolean.js +15 -0
  143. package/columns/types/pgEnum.d.ts +9 -0
  144. package/columns/types/pgEnum.js +15 -0
  145. package/columns/types/pgInteger.d.ts +8 -0
  146. package/columns/types/pgInteger.js +15 -0
  147. package/columns/types/pgJsonb.d.ts +9 -0
  148. package/columns/types/pgJsonb.js +15 -0
  149. package/columns/types/pgText.d.ts +8 -0
  150. package/columns/types/pgText.js +15 -0
  151. package/columns/types/pgTime.d.ts +8 -0
  152. package/columns/types/pgTime.js +15 -0
  153. package/columns/types/pgTimestamp.d.ts +8 -0
  154. package/columns/types/pgTimestamp.js +15 -0
  155. package/columns/types/pgVarChar.d.ts +9 -0
  156. package/columns/types/pgVarChar.js +21 -0
  157. package/db/db.d.ts +19 -0
  158. package/db/db.js +26 -0
  159. package/db/dbConnector.d.ts +9 -0
  160. package/db/dbConnector.js +28 -0
  161. package/db/dbStringConnector.d.ts +6 -0
  162. package/db/dbStringConnector.js +25 -0
  163. package/{src/mappers/index.ts → db/group_by.d.ts} +0 -0
  164. package/db/group_by.js +68 -0
  165. package/{src/db/index.ts → db/index.d.ts} +0 -0
  166. package/db/index.js +9 -0
  167. package/db/session.d.ts +7 -0
  168. package/db/session.js +20 -0
  169. package/docs/cases/simple_delete.d.ts +1 -0
  170. package/docs/cases/simple_delete.js +30 -0
  171. package/docs/cases/simple_insert.d.ts +1 -0
  172. package/docs/cases/simple_insert.js +51 -0
  173. package/docs/cases/simple_join.d.ts +1 -0
  174. package/docs/cases/simple_join.js +95 -0
  175. package/docs/cases/simple_select.d.ts +1 -0
  176. package/docs/cases/simple_select.js +39 -0
  177. package/docs/cases/simple_update.d.ts +1 -0
  178. package/docs/cases/simple_update.js +33 -0
  179. package/docs/tables/citiesTable.d.ts +14 -0
  180. package/docs/tables/citiesTable.js +19 -0
  181. package/docs/tables/citiesToUsers.d.ts +7 -0
  182. package/docs/tables/citiesToUsers.js +18 -0
  183. package/docs/tables/userGroupsTable.d.ts +7 -0
  184. package/docs/tables/userGroupsTable.js +15 -0
  185. package/docs/tables/usersTable.d.ts +17 -0
  186. package/docs/tables/usersTable.js +29 -0
  187. package/docs/tables/usersToUserGroups.d.ts +7 -0
  188. package/docs/tables/usersToUserGroups.js +18 -0
  189. package/docs/types/rolesType.d.ts +1 -0
  190. package/docs/types/rolesType.js +6 -0
  191. package/errors/baseError.d.ts +22 -0
  192. package/errors/baseError.js +35 -0
  193. package/errors/builderError.d.ts +14 -0
  194. package/errors/builderError.js +24 -0
  195. package/errors/dbErrors.d.ts +12 -0
  196. package/errors/dbErrors.js +28 -0
  197. package/index.d.ts +13 -0
  198. package/index.js +32 -0
  199. package/indexes/tableIndex.d.ts +11 -0
  200. package/indexes/tableIndex.js +17 -0
  201. package/logger/abstractLogger.d.ts +4 -0
  202. package/logger/abstractLogger.js +5 -0
  203. package/logger/consoleLogger.d.ts +5 -0
  204. package/logger/consoleLogger.js +12 -0
  205. package/{src/migrator/index.ts → mappers/index.d.ts} +0 -0
  206. package/mappers/index.js +1 -0
  207. package/mappers/responseMapper.d.ts +7 -0
  208. package/mappers/responseMapper.js +23 -0
  209. package/migrator/index.d.ts +0 -0
  210. package/migrator/index.js +1 -0
  211. package/migrator/migrator.d.ts +16 -0
  212. package/migrator/migrator.js +101 -0
  213. package/package.json +2 -2
  214. package/serializer/serializer.d.ts +40 -0
  215. package/serializer/serializer.js +74 -0
  216. package/tables/abstractTable.d.ts +118 -0
  217. package/tables/abstractTable.js +116 -0
  218. package/{src/tables/index.ts → tables/index.d.ts} +0 -0
  219. package/tables/index.js +8 -0
  220. package/tables/inferTypes.d.ts +19 -0
  221. package/tables/inferTypes.js +2 -0
  222. package/tables/migrationsTable.d.ts +8 -0
  223. package/tables/migrationsTable.js +16 -0
  224. package/test.d.ts +1 -0
  225. package/test.js +81 -0
  226. package/types/type.d.ts +10 -0
  227. package/types/type.js +14 -0
  228. package/utils/ecranate.d.ts +2 -0
  229. package/utils/ecranate.js +8 -0
  230. package/.eslintrc +0 -26
  231. package/.tslintignore +0 -1
  232. package/LICENSE +0 -674
  233. package/README.md +0 -147
  234. package/src/builders/aggregators/abstractAggregator.ts +0 -37
  235. package/src/builders/aggregators/deleteAggregator.ts +0 -34
  236. package/src/builders/aggregators/insertAggregator.ts +0 -116
  237. package/src/builders/aggregators/selectAggregator.ts +0 -102
  238. package/src/builders/aggregators/updateAggregator.ts +0 -45
  239. package/src/builders/highLvlBuilders/abstractRequestBuilder.ts +0 -37
  240. package/src/builders/highLvlBuilders/deleteRequestBuilder.ts +0 -59
  241. package/src/builders/highLvlBuilders/insertRequestBuilder.ts +0 -87
  242. package/src/builders/highLvlBuilders/order.ts +0 -4
  243. package/src/builders/highLvlBuilders/selectRequestBuilder.ts +0 -102
  244. package/src/builders/highLvlBuilders/updateRequestBuilder.ts +0 -63
  245. package/src/builders/joinBuilders/builders/abstractJoinBuilder.ts +0 -22
  246. package/src/builders/joinBuilders/builders/selectWithFourJoins.ts +0 -71
  247. package/src/builders/joinBuilders/builders/selectWithJoin.ts +0 -67
  248. package/src/builders/joinBuilders/builders/selectWithThreeJoins.ts +0 -78
  249. package/src/builders/joinBuilders/builders/selectWithTwoJoins.ts +0 -72
  250. package/src/builders/joinBuilders/join.ts +0 -37
  251. package/src/builders/joinBuilders/joinWith.ts +0 -19
  252. package/src/builders/joinBuilders/responses/selectResponseFourJoins.ts +0 -33
  253. package/src/builders/joinBuilders/responses/selectResponseThreeJoins.ts +0 -29
  254. package/src/builders/joinBuilders/responses/selectResponseTwoJoins.ts +0 -22
  255. package/src/builders/joinBuilders/responses/selectResponseWithJoin.ts +0 -28
  256. package/src/builders/joinBuilders/static.ts +0 -9
  257. package/src/builders/lowLvlBuilders/create.ts +0 -114
  258. package/src/builders/lowLvlBuilders/delets/delete.ts +0 -10
  259. package/src/builders/lowLvlBuilders/delets/deleteFilter.ts +0 -17
  260. package/src/builders/lowLvlBuilders/delets/deleteFrom.ts +0 -15
  261. package/src/builders/lowLvlBuilders/inserts/insert.ts +0 -12
  262. package/src/builders/lowLvlBuilders/inserts/insertInto.ts +0 -18
  263. package/src/builders/lowLvlBuilders/inserts/onConflictInsert.ts +0 -19
  264. package/src/builders/lowLvlBuilders/inserts/valuesInsert.ts +0 -30
  265. package/src/builders/lowLvlBuilders/selects/select.ts +0 -12
  266. package/src/builders/lowLvlBuilders/selects/selectFrom.ts +0 -38
  267. package/src/builders/lowLvlBuilders/selects/selectJoined.ts +0 -40
  268. package/src/builders/lowLvlBuilders/selects/whereSelect.ts +0 -35
  269. package/src/builders/lowLvlBuilders/updates/update.ts +0 -10
  270. package/src/builders/lowLvlBuilders/updates/updateIn.ts +0 -22
  271. package/src/builders/lowLvlBuilders/updates/whereSelect.ts +0 -17
  272. package/src/builders/lowLvlBuilders/updates/whereSet.ts +0 -21
  273. package/src/builders/requestBuilders/updates/combine.ts +0 -25
  274. package/src/builders/requestBuilders/updates/setObjects.ts +0 -18
  275. package/src/builders/requestBuilders/updates/static.ts +0 -11
  276. package/src/builders/requestBuilders/where/and.ts +0 -26
  277. package/src/builders/requestBuilders/where/const.ts +0 -18
  278. package/src/builders/requestBuilders/where/constArray.ts +0 -27
  279. package/src/builders/requestBuilders/where/eqWhere.ts +0 -14
  280. package/src/builders/requestBuilders/where/greater.ts +0 -14
  281. package/src/builders/requestBuilders/where/greaterEq.ts +0 -14
  282. package/src/builders/requestBuilders/where/in.ts +0 -14
  283. package/src/builders/requestBuilders/where/less.ts +0 -14
  284. package/src/builders/requestBuilders/where/lessEq.ts +0 -14
  285. package/src/builders/requestBuilders/where/like.ts +0 -14
  286. package/src/builders/requestBuilders/where/or.ts +0 -26
  287. package/src/builders/requestBuilders/where/static.ts +0 -42
  288. package/src/builders/requestBuilders/where/var.ts +0 -15
  289. package/src/builders/transaction/transaction.ts +0 -21
  290. package/src/columns/column.ts +0 -86
  291. package/src/columns/types/columnType.ts +0 -7
  292. package/src/columns/types/pgBigDecimal.ts +0 -29
  293. package/src/columns/types/pgBigInt.ts +0 -20
  294. package/src/columns/types/pgBoolean.ts +0 -18
  295. package/src/columns/types/pgEnum.ts +0 -22
  296. package/src/columns/types/pgInteger.ts +0 -18
  297. package/src/columns/types/pgJsonb.ts +0 -19
  298. package/src/columns/types/pgText.ts +0 -18
  299. package/src/columns/types/pgTime.ts +0 -18
  300. package/src/columns/types/pgTimestamp.ts +0 -18
  301. package/src/columns/types/pgVarChar.ts +0 -24
  302. package/src/db/db.ts +0 -29
  303. package/src/db/dbConnector.ts +0 -30
  304. package/src/db/dbStringConnector.ts +0 -28
  305. package/src/db/session.ts +0 -21
  306. package/src/errors/baseError.ts +0 -47
  307. package/src/errors/builderError.ts +0 -30
  308. package/src/errors/dbErrors.ts +0 -24
  309. package/src/examples/tables/authOtpTable.ts +0 -17
  310. package/src/examples/tables/cityTable.ts +0 -15
  311. package/src/examples/tables/usersTable.ts +0 -18
  312. package/src/examples/testEnum.ts +0 -6
  313. package/src/index.ts +0 -40
  314. package/src/indexes/tableIndex.ts +0 -19
  315. package/src/logger/abstractLogger.ts +0 -4
  316. package/src/logger/consoleLogger.ts +0 -11
  317. package/src/mappers/responseMapper.ts +0 -24
  318. package/src/migrator/migrator.ts +0 -110
  319. package/src/serializer/Untitled.js +0 -72
  320. package/src/serializer/out.json +0 -140
  321. package/src/tables/abstractTable.ts +0 -183
  322. package/src/tables/inferTypes.ts +0 -34
  323. package/src/tables/migrationsTable.ts +0 -12
  324. package/src/utils/ecranate.ts +0 -4
  325. package/tsconfig.json +0 -29
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgBoolean extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `${value}`;
9
+ this.dbName = 'boolean';
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ 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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgEnum extends columnType_1.default {
5
+ constructor(dbName) {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `'${value}'`;
9
+ this.dbName = dbName;
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ 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: string): number;
8
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgInteger extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `${value}`;
9
+ this.dbName = 'INT';
10
+ }
11
+ selectStrategy(value) {
12
+ return parseInt(value, 10);
13
+ }
14
+ }
15
+ 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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgJsonb extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
9
+ this.dbName = 'JSONB';
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ exports.default = PgJsonb;
@@ -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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgText extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
9
+ this.dbName = 'TEXT';
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ 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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgTime extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => value.toISOString();
9
+ this.dbName = 'time without time zone';
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ 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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgTimestamp extends columnType_1.default {
5
+ constructor() {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `'${value.toISOString()}'`;
9
+ this.dbName = 'timestamp without time zone';
10
+ }
11
+ selectStrategy(value) {
12
+ return value;
13
+ }
14
+ }
15
+ exports.default = PgTimestamp;
@@ -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,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const columnType_1 = require("./columnType");
4
+ class PgVarChar extends columnType_1.default {
5
+ constructor(size) {
6
+ super();
7
+ this.getDbName = () => this.dbName;
8
+ this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
9
+ this.size = size;
10
+ if (size) {
11
+ this.dbName = `character varying(${size})`;
12
+ }
13
+ else {
14
+ this.dbName = 'character varying';
15
+ }
16
+ }
17
+ selectStrategy(value) {
18
+ return value;
19
+ }
20
+ }
21
+ exports.default = PgVarChar;
package/db/db.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { Pool } from 'pg';
2
+ import BaseLogger from '../logger/abstractLogger';
3
+ import { AbstractTable } from '../tables';
4
+ import Session from './session';
5
+ export declare type TableConstructor = {
6
+ new (db: DB): AbstractTable<any>;
7
+ };
8
+ export default class DB {
9
+ private _session;
10
+ private _logger?;
11
+ private _cache;
12
+ constructor(pool: Pool);
13
+ create<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): TTable;
14
+ useLogger: (logger: BaseLogger) => void;
15
+ cache: () => Map<TableConstructor, AbstractTable<any>>;
16
+ logger: () => BaseLogger | undefined;
17
+ session: () => Session;
18
+ protected instanceFor<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): AbstractTable<any> | undefined;
19
+ }
package/db/db.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const session_1 = require("./session");
4
+ class DB {
5
+ constructor(pool) {
6
+ this._cache = new Map();
7
+ this.useLogger = (logger) => {
8
+ this._logger = logger;
9
+ };
10
+ this.cache = () => this._cache;
11
+ this.logger = () => this._logger;
12
+ this.session = () => this._session;
13
+ this._session = new session_1.default(pool);
14
+ }
15
+ create(t) {
16
+ if (!this._cache.has(t)) {
17
+ // eslint-disable-next-line new-cap
18
+ this._cache.set(t, new t(this));
19
+ }
20
+ return this._cache.get(t);
21
+ }
22
+ instanceFor(t) {
23
+ return this._cache.get(t);
24
+ }
25
+ }
26
+ 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,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pg_1 = require("pg");
4
+ const db_1 = require("./db");
5
+ const dbStringConnector_1 = require("./dbStringConnector");
6
+ class DbConnector {
7
+ constructor() {
8
+ this.connectionString = (url) => new dbStringConnector_1.default(url);
9
+ this.params = (config) => {
10
+ this.__config = config;
11
+ return this;
12
+ };
13
+ this.connect = async () => {
14
+ try {
15
+ const pool = new pg_1.Pool(this.__config);
16
+ await pool.connect();
17
+ // console.log('Db connected!');
18
+ // check if table structure is the same as in code
19
+ return new db_1.default(pool);
20
+ }
21
+ catch (e) {
22
+ // console.log(`Connection error: ${e.message}`);
23
+ throw new Error(`Connection error: ${e.message}`);
24
+ }
25
+ };
26
+ }
27
+ }
28
+ 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
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pg_1 = require("pg");
4
+ const db_1 = require("./db");
5
+ class DBStringConnector {
6
+ constructor(url) {
7
+ this.connect = async () => {
8
+ const config = {
9
+ connectionString: this._url,
10
+ };
11
+ try {
12
+ const pool = new pg_1.Pool(config);
13
+ await pool.connect();
14
+ // console.log('Db connected!');
15
+ return new db_1.default(pool);
16
+ }
17
+ catch (e) {
18
+ // console.log(`Connection error: ${e.message}`);
19
+ throw new Error(`Connection error: ${e.message}`);
20
+ }
21
+ };
22
+ this._url = url;
23
+ }
24
+ }
25
+ exports.default = DBStringConnector;
File without changes
package/db/group_by.js ADDED
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ // const _groupBy = <T, K extends keyof any>(list: T[], getKey: (item: T) => K) => {
3
+ // list.reduce((previous, currentItem) => {
4
+ // const group = getKey(currentItem);
5
+ // // eslint-disable-next-line no-param-reassign
6
+ // if (!previous[group]) previous[group] = [];
7
+ // previous[group].push(currentItem);
8
+ // return previous;
9
+ // }, {} as Record<K, T[]>);
10
+ // };
11
+ // const groupBy = (xs, key) => xs.reduce((rv, x) => {
12
+ // (rv[x[key]] = rv[x[key]] || []).push(x);
13
+ // return rv;
14
+ // }, {});
15
+ // interface Mapp {
16
+ // [key: string]: any;
17
+ // }
18
+ // const groupBy1 = <K, V>(list: Array<K>, keyGetter: (input: V) => K): Map<K, Array<V>> => {
19
+ // const map = new Map<K, Array<V>>();
20
+ // list.forEach((item) => {
21
+ // const key = keyGetter(item as unknown as V);
22
+ // const collection = map.get(key);
23
+ // console.log(collection);
24
+ // console.log(map.has(key));
25
+ // if (!collection) {
26
+ // map.set(key, [item as unknown as V]);
27
+ // } else {
28
+ // collection.push(item as unknown as V);
29
+ // }
30
+ // });
31
+ // return map;
32
+ // };
33
+ // interface T1 {
34
+ // name: string,
35
+ // key: number
36
+ // }
37
+ // interface T2 {
38
+ // name: string,
39
+ // hello: number
40
+ // }
41
+ // interface Person {
42
+ // t1: T1,
43
+ // t2: T2
44
+ // }
45
+ // const person: Person[] = [
46
+ // {
47
+ // t1: {
48
+ // name: 'name',
49
+ // key: 2,
50
+ // },
51
+ // t2: {
52
+ // name: 'name',
53
+ // hello: 2,
54
+ // },
55
+ // },
56
+ // {
57
+ // t1: {
58
+ // name: 'name',
59
+ // key: 2,
60
+ // },
61
+ // t2: {
62
+ // name: 'name3',
63
+ // hello: 3,
64
+ // },
65
+ // },
66
+ // ];
67
+ // const d = groupBy1(person, (i: Person) => i.t1);
68
+ // console.log(d);
File without changes
package/db/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBStringConnector = exports.DbConnector = exports.DB = void 0;
4
+ var db_1 = require("./db");
5
+ Object.defineProperty(exports, "DB", { enumerable: true, get: function () { return db_1.default; } });
6
+ var dbConnector_1 = require("./dbConnector");
7
+ Object.defineProperty(exports, "DbConnector", { enumerable: true, get: function () { return dbConnector_1.default; } });
8
+ var dbStringConnector_1 = require("./dbStringConnector");
9
+ Object.defineProperty(exports, "DBStringConnector", { enumerable: true, get: function () { return dbStringConnector_1.default; } });
@@ -0,0 +1,7 @@
1
+ import { Pool, QueryResult } from 'pg';
2
+ import { Either, Failure } from '../errors/baseError';
3
+ export default class Session {
4
+ private pool;
5
+ constructor(pool: Pool);
6
+ execute: (query: string) => Promise<Either<Failure, QueryResult<any>>>;
7
+ }
package/db/session.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const baseError_1 = require("../errors/baseError");
4
+ class Session {
5
+ constructor(pool) {
6
+ this.pool = pool;
7
+ this.execute = async (query) => {
8
+ try {
9
+ return baseError_1.right(await this.pool.query(query));
10
+ }
11
+ catch (e) {
12
+ return baseError_1.left({
13
+ type: baseError_1.PgSessionError.PgQueryExecutionError,
14
+ reason: e,
15
+ });
16
+ }
17
+ };
18
+ }
19
+ }
20
+ exports.default = Session;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ const __1 = require("../..");
5
+ const builders_1 = require("../../builders");
6
+ const citiesTable_1 = require("../tables/citiesTable");
7
+ const userGroupsTable_1 = require("../tables/userGroupsTable");
8
+ const usersTable_1 = require("../tables/usersTable");
9
+ (async () => {
10
+ try {
11
+ const db = await new __1.DbConnector()
12
+ .connectionString('postgresql://postgres@127.0.0.1/drizzle')
13
+ .connect();
14
+ const usersTable = new usersTable_1.default(db);
15
+ const citiesTable = new citiesTable_1.default(db);
16
+ const userGroupsTable = new userGroupsTable_1.default(db);
17
+ await usersTable.delete()
18
+ .where(builders_1.eq(usersTable.id, 1))
19
+ .execute();
20
+ const deletedCities = await citiesTable.delete()
21
+ .where(builders_1.eq(citiesTable.id, 2))
22
+ .all();
23
+ const deletedUserGroup = await userGroupsTable.delete()
24
+ .where(builders_1.eq(userGroupsTable.id, 3))
25
+ .first();
26
+ }
27
+ catch (e) {
28
+ console.log(e);
29
+ }
30
+ })();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ const __1 = require("../..");
5
+ const citiesTable_1 = require("../tables/citiesTable");
6
+ const userGroupsTable_1 = require("../tables/userGroupsTable");
7
+ const usersTable_1 = require("../tables/usersTable");
8
+ (async () => {
9
+ try {
10
+ const db = await new __1.DbConnector()
11
+ .connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
12
+ .connect();
13
+ const usersTable = new usersTable_1.default(db);
14
+ const citiesTable = new citiesTable_1.default(db);
15
+ const userGroupsTable = new userGroupsTable_1.default(db);
16
+ await db.session().execute(__1.Create.table(usersTable).build());
17
+ await usersTable.insert({
18
+ decimalField: 12.4,
19
+ createdAt: new Date(),
20
+ role: 'guest',
21
+ }).execute();
22
+ const insertedCities = await citiesTable.insert({
23
+ foundationDate: new Date(),
24
+ }).all();
25
+ const insertedUserGroup = await userGroupsTable.insert({
26
+ name: 'firstGroup',
27
+ }).first();
28
+ const manyInsertedCities = await citiesTable.insertMany([{
29
+ foundationDate: new Date(),
30
+ location: 'USA',
31
+ }, {
32
+ foundationDate: new Date(),
33
+ location: 'USA',
34
+ userId: 2,
35
+ }]).all();
36
+ const conflictInsertedUsers = await usersTable.insertMany([{
37
+ decimalField: 12.4,
38
+ createdAt: new Date(),
39
+ role: 'guest',
40
+ }, {
41
+ decimalField: 32.4,
42
+ createdAt: new Date(),
43
+ role: 'admin',
44
+ phone: '+1808',
45
+ }])
46
+ .onConflict((table) => table.phoneIndex, { isArchived: true }).all();
47
+ }
48
+ catch (e) {
49
+ console.log(e);
50
+ }
51
+ })();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ const __1 = require("../..");
5
+ const builders_1 = require("../../builders");
6
+ const citiesTable_1 = require("../tables/citiesTable");
7
+ const userGroupsTable_1 = require("../tables/userGroupsTable");
8
+ const usersTable_1 = require("../tables/usersTable");
9
+ const usersToUserGroups_1 = require("../tables/usersToUserGroups");
10
+ (async () => {
11
+ var _a, _b, _c, _d, _e, _f;
12
+ try {
13
+ const db = await new __1.DbConnector()
14
+ .connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
15
+ .connect();
16
+ const usersTable = new usersTable_1.default(db);
17
+ const citiesTable = new citiesTable_1.default(db);
18
+ const usersToUserGroupsTable = new usersToUserGroups_1.default(db);
19
+ const userGroupsTable = new userGroupsTable_1.default(db);
20
+ await db.session().execute(__1.Create.table(usersTable).build());
21
+ await db.session().execute(__1.Create.table(citiesTable).build());
22
+ await db.session().execute(__1.Create.table(userGroupsTable).build());
23
+ await db.session().execute(__1.Create.table(usersToUserGroupsTable).build());
24
+ const userRes = await usersTable.insertMany([{
25
+ decimalField: 4.2,
26
+ createdAt: new Date(),
27
+ role: 'guest',
28
+ }, {
29
+ decimalField: 5.8,
30
+ createdAt: new Date(),
31
+ role: 'user',
32
+ }]).all();
33
+ const citiesRes = await citiesTable.insertMany([{
34
+ foundationDate: new Date(),
35
+ userId: (_a = userRes[0]) === null || _a === void 0 ? void 0 : _a.id,
36
+ }, {
37
+ foundationDate: new Date(),
38
+ userId: (_b = userRes[1]) === null || _b === void 0 ? void 0 : _b.id,
39
+ }]).all();
40
+ const userGroups = await userGroupsTable.insertMany([{
41
+ name: 'firstGroup',
42
+ }, {
43
+ name: 'secondGroup',
44
+ }]).all();
45
+ await usersToUserGroupsTable.insertMany([{
46
+ userId: (_c = userRes[0]) === null || _c === void 0 ? void 0 : _c.id,
47
+ groupId: (_d = userGroups[0]) === null || _d === void 0 ? void 0 : _d.id,
48
+ },
49
+ {
50
+ userId: (_e = userRes[1]) === null || _e === void 0 ? void 0 : _e.id,
51
+ groupId: (_f = userGroups[1]) === null || _f === void 0 ? void 0 : _f.id,
52
+ }]).execute();
53
+ // map case
54
+ const userWithCities = await citiesTable.select()
55
+ .where(builders_1.eq(citiesTable.id, 1))
56
+ .leftJoin(usersTable_1.default, (city) => city.userId, (users) => users.id)
57
+ .execute();
58
+ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
59
+ // foreach case
60
+ // const userWithCities1 = await citiesTable.select()
61
+ // .where(eq(citiesTable.id, 1))
62
+ // .leftJoin(UsersTable,
63
+ // (city) => city.userId,
64
+ // (users) => users.id)
65
+ // .execute();
66
+ // let user;
67
+ // const cities = [];
68
+ // userWithCities.foreach((dbCity, dbUser) => {
69
+ // cities.push(dbCity);
70
+ // user = dbUser;
71
+ // });
72
+ // group case
73
+ const usersWithUserGroups = await usersToUserGroupsTable.select()
74
+ .where(builders_1.eq(userGroupsTable.id, 1))
75
+ .leftJoin(usersTable_1.default, (userToGroup) => userToGroup.userId, (users) => users.id)
76
+ .leftJoin(userGroupsTable_1.default, (userToGroup) => userToGroup.groupId, (users) => users.id)
77
+ .execute();
78
+ const userGroupWithUsers = usersWithUserGroups.group({
79
+ one: (_, dbUser, dbUserGroup) => dbUser,
80
+ many: (_, dbUser, dbUserGroup) => dbUserGroup,
81
+ });
82
+ const userWithGroups = {
83
+ ...userGroupWithUsers.one,
84
+ groups: userGroupWithUsers.many,
85
+ };
86
+ // console.log('city', city!);
87
+ // console.log('cityUsers', cityUsers);
88
+ // console.log('cityWithUsers', forEachCities);
89
+ // console.log('cityWithUsers1', forEachUsers);
90
+ // how to handle many-to-many relations
91
+ }
92
+ catch (e) {
93
+ console.log(e);
94
+ }
95
+ })();
@@ -0,0 +1 @@
1
+ export {};