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,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MigrationSession = void 0;
4
+ /* eslint-disable import/export */
5
+ /* eslint-disable max-classes-per-file */
6
+ const create_1 = require("../builders/lowLvlBuilders/create");
7
+ const transaction_1 = require("../builders/transaction/transaction");
8
+ const migrationsTable_1 = require("../tables/migrationsTable");
9
+ class MigrationSession {
10
+ constructor() {
11
+ this.finalQuery = '';
12
+ this.execute = (query) => {
13
+ this.finalQuery += query;
14
+ this.finalQuery += '\n';
15
+ };
16
+ this.getQuery = () => this.finalQuery;
17
+ }
18
+ }
19
+ exports.MigrationSession = MigrationSession;
20
+ class Migrator {
21
+ constructor(db) {
22
+ this.migrationsPerVersion = new Map();
23
+ this.chain = (tag, migration) => {
24
+ const migrationSession = new MigrationSession();
25
+ migration(migrationSession);
26
+ this.migrationsPerVersion.set(+tag, migrationSession.getQuery());
27
+ return this;
28
+ };
29
+ this.getResultScript = () => {
30
+ const values = [];
31
+ // eslint-disable-next-line no-restricted-syntax
32
+ for (const value of this.migrationsPerVersion.values()) {
33
+ values.push(value);
34
+ }
35
+ return values;
36
+ };
37
+ this.execute = async () => {
38
+ const migrationsTable = new migrationsTable_1.default(this._db);
39
+ await this.session.execute(create_1.default.table(migrationsTable).build());
40
+ const migrations = await migrationsTable.select().all();
41
+ const transaction = new transaction_1.default(this.session);
42
+ await transaction.begin();
43
+ // eslint-disable-next-line no-restricted-syntax
44
+ for await (const [key, value] of this.migrationsPerVersion) {
45
+ const dbMigrationByTag = migrations.find((it) => it.version === key);
46
+ if (dbMigrationByTag) {
47
+ // const isHashSameAsInDb =
48
+ // Buffer.from(dbMigrationByTag.hash, 'base64').toString('ascii') === value;
49
+ // if (!isHashSameAsInDb) {
50
+ // throw Error(`Migration script was changed for version ${key}`);
51
+ // }
52
+ }
53
+ else {
54
+ try {
55
+ const logger = this._db.logger();
56
+ if (logger) {
57
+ logger.info(`Executing migration with tag ${key} with query:\n${value}`);
58
+ }
59
+ const result = await this._db.session().execute(value);
60
+ if (result.isLeft()) {
61
+ const { reason } = result.value;
62
+ throw new Error(`Error while executing migration tag ${key}. Error: ${reason}`);
63
+ }
64
+ else {
65
+ await migrationsTable
66
+ .insert({
67
+ version: key,
68
+ createdAt: new Date(),
69
+ hash: Buffer.from(value).toString('base64'),
70
+ }).execute();
71
+ }
72
+ }
73
+ catch (e) {
74
+ await transaction.rollback();
75
+ throw new Error(`Migration chain ${key} was not migrated sucessfully.\nMessage: ${e.message}`);
76
+ }
77
+ }
78
+ }
79
+ await transaction.commit();
80
+ return true;
81
+ };
82
+ this._db = db;
83
+ this.session = db.session();
84
+ }
85
+ generateHash(value) {
86
+ let hash = 0;
87
+ let i;
88
+ let chr;
89
+ if (value.length === 0)
90
+ return hash;
91
+ for (i = 0; i < value.length; i += 1) {
92
+ chr = value.charCodeAt(i);
93
+ // eslint-disable-next-line no-bitwise
94
+ hash = ((hash << 5) - hash) + chr;
95
+ // eslint-disable-next-line no-bitwise
96
+ hash |= 0;
97
+ }
98
+ return hash;
99
+ }
100
+ }
101
+ exports.default = Migrator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.9.0",
3
+ "version": "0.9.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "typescript": "^4.2.4"
33
33
  },
34
34
  "dependencies": {
35
- "@types/pg": "^7.14.11",
35
+ "@types/pg": "^8.6.1",
36
36
  "pg": "^8.6.0"
37
37
  }
38
38
  }
@@ -0,0 +1,40 @@
1
+ import { AbstractTable } from '../tables';
2
+ import Enum from '../types/type';
3
+ interface ColumnAsObject {
4
+ [name: string]: {
5
+ name?: string;
6
+ type?: string;
7
+ primaryKey?: boolean;
8
+ unique?: boolean;
9
+ onDelete?: string;
10
+ onUpdate?: string;
11
+ default?: any;
12
+ notNull?: boolean;
13
+ references?: {
14
+ table: string;
15
+ column: string;
16
+ };
17
+ };
18
+ }
19
+ interface TableAsObject {
20
+ [name: string]: {
21
+ name: string;
22
+ columns: ColumnAsObject;
23
+ indexes: {
24
+ [name: string]: {
25
+ name?: string;
26
+ type?: string;
27
+ };
28
+ };
29
+ };
30
+ }
31
+ export default class MigrationSerializer {
32
+ generate: (tables: AbstractTable<any>[], enums: Enum<any>[]) => {
33
+ version: string;
34
+ tables: TableAsObject;
35
+ enums: {
36
+ [key: string]: Enum<any>;
37
+ };
38
+ };
39
+ }
40
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /* eslint-disable import/no-named-as-default-member */
3
+ /* eslint-disable import/no-named-as-default */
4
+ /* eslint-disable no-param-reassign */
5
+ /* eslint-disable no-restricted-syntax */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const columns_1 = require("../columns");
8
+ const tableIndex_1 = require("../indexes/tableIndex");
9
+ class MigrationSerializer {
10
+ constructor() {
11
+ this.generate = (tables, enums) => {
12
+ const result = {};
13
+ for (const table of tables) {
14
+ const tableEntries = Object.entries(table);
15
+ const columnToReturn = {};
16
+ const indexToReturn = {};
17
+ for (const properties of tableEntries) {
18
+ const key = properties[0];
19
+ const value = properties[1];
20
+ if (value instanceof tableIndex_1.default) {
21
+ const columns = value.getColumns();
22
+ const name = value.indexName();
23
+ const indexColumnToReturn = {};
24
+ for (const column of columns) {
25
+ const columnName = column.getColumnName();
26
+ indexColumnToReturn[columnName] = {
27
+ name: columnName,
28
+ };
29
+ }
30
+ indexToReturn[name] = {
31
+ name,
32
+ columns: indexColumnToReturn,
33
+ };
34
+ }
35
+ if (value instanceof columns_1.Column) {
36
+ columnToReturn[key] = {
37
+ name: value.getColumnName(),
38
+ type: value.isAutoIncrement() ? 'serial' : value.getColumnType().getDbName(),
39
+ primaryKey: !!value.primaryKeyName,
40
+ onDelete: value.getOnDelete(),
41
+ onUpdate: value.getOnUpdate(),
42
+ unique: !!value.uniqueKeyName,
43
+ default: value.getDefaultValue() === null ? undefined : value.getDefaultValue(),
44
+ notNull: !value.isNullableFlag,
45
+ };
46
+ const referenced = value.getReferenced();
47
+ if (referenced) {
48
+ columnToReturn[key].references = {
49
+ table: referenced.getParentName(),
50
+ column: referenced.getColumnName(),
51
+ };
52
+ }
53
+ }
54
+ }
55
+ result[table.tableName()] = {
56
+ name: table.tableName(),
57
+ columns: columnToReturn,
58
+ indexes: indexToReturn,
59
+ };
60
+ }
61
+ const enumsToReturn = enums.reduce((map, obj) => {
62
+ const key = obj.name;
63
+ const newValues = obj.values.reduce((mapped, value) => {
64
+ mapped[value] = value;
65
+ return mapped;
66
+ }, {});
67
+ map[key] = { name: obj.name, values: newValues };
68
+ return map;
69
+ }, {});
70
+ return { version: '1', tables: result, enums: enumsToReturn };
71
+ };
72
+ }
73
+ }
74
+ exports.default = MigrationSerializer;
@@ -0,0 +1,118 @@
1
+ import PgVarChar from '../columns/types/pgVarChar';
2
+ import PgTimestamp from '../columns/types/pgTimestamp';
3
+ import PgInteger from '../columns/types/pgInteger';
4
+ import PgBigDecimal from '../columns/types/pgBigDecimal';
5
+ import PgTime from '../columns/types/pgTime';
6
+ import PgBoolean from '../columns/types/pgBoolean';
7
+ import PgText from '../columns/types/pgText';
8
+ import PgJsonb from '../columns/types/pgJsonb';
9
+ import ColumnType from '../columns/types/columnType';
10
+ import InsertTRB from '../builders/highLvlBuilders/insertRequestBuilder';
11
+ import DeleteTRB from '../builders/highLvlBuilders/deleteRequestBuilder';
12
+ import UpdateTRB from '../builders/highLvlBuilders/updateRequestBuilder';
13
+ import SelectTRB from '../builders/highLvlBuilders/selectRequestBuilder';
14
+ import PgBigInt from '../columns/types/pgBigInt';
15
+ import BaseLogger from '../logger/abstractLogger';
16
+ import PgEnum from '../columns/types/pgEnum';
17
+ import DB from '../db/db';
18
+ import { AbstractColumn, Column } from '../columns/column';
19
+ import TableIndex from '../indexes/tableIndex';
20
+ import { ExtractModel } from './inferTypes';
21
+ import Enum, { ExtractEnumValues } from '../types/type';
22
+ export default abstract class AbstractTable<TTable extends AbstractTable<TTable>> {
23
+ db: DB;
24
+ private _session;
25
+ private _logger;
26
+ constructor(db: DB);
27
+ abstract tableName(): string;
28
+ withLogger: (logger: BaseLogger) => void;
29
+ select({ limit, offset }?: {
30
+ limit?: number;
31
+ offset?: number;
32
+ }): SelectTRB<TTable>;
33
+ update: () => UpdateTRB<TTable>;
34
+ insert: (value: ExtractModel<TTable>) => InsertTRB<TTable>;
35
+ insertMany: (values: ExtractModel<TTable>[]) => InsertTRB<TTable>;
36
+ delete: () => DeleteTRB<TTable>;
37
+ mapServiceToDb(): {
38
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
39
+ };
40
+ protected index(columns: Array<Column<ColumnType, boolean, boolean>>): TableIndex;
41
+ protected index(columns: Column<ColumnType, boolean, boolean>): TableIndex;
42
+ protected uniqueIndex(columns: Array<Column<ColumnType, boolean, boolean>>): TableIndex;
43
+ protected uniqueIndex(columns: Column<ColumnType, boolean, boolean>): TableIndex;
44
+ protected varchar(name: string, params?: {
45
+ size?: number;
46
+ notNull: false;
47
+ }): Column<PgVarChar, true>;
48
+ protected varchar(name: string, params: {
49
+ size?: number;
50
+ notNull: true;
51
+ }): Column<PgVarChar, false>;
52
+ protected varchar(name: string, params?: {
53
+ size?: number;
54
+ notNull?: false;
55
+ }): Column<PgVarChar, true>;
56
+ protected varchar(name: string, params: {
57
+ size?: number;
58
+ notNull?: true;
59
+ }): Column<PgVarChar, false>;
60
+ protected int(name: string, params?: {
61
+ notNull: false;
62
+ }): Column<PgInteger, true>;
63
+ protected int(name: string, params: {
64
+ notNull: true;
65
+ }): Column<PgInteger, false>;
66
+ protected timestamp(name: string, params?: {
67
+ notNull: false;
68
+ }): Column<PgTimestamp, true>;
69
+ protected timestamp(name: string, params: {
70
+ notNull: true;
71
+ }): Column<PgTimestamp, false>;
72
+ protected bigint(name: string, params?: {
73
+ notNull: false;
74
+ }): Column<PgBigInt, true>;
75
+ protected bigint(name: string, params: {
76
+ notNull: true;
77
+ }): Column<PgBigInt, false>;
78
+ protected type<ETtype extends string>(typeEnum: Enum<ETtype>, name: string, params?: {
79
+ notNull: false;
80
+ }): Column<PgEnum<ExtractEnumValues<Enum<ETtype>>>, true>;
81
+ protected type<ETtype extends string>(typeEnum: Enum<ETtype>, name: string, params: {
82
+ notNull: true;
83
+ }): Column<PgEnum<ExtractEnumValues<Enum<ETtype>>>, false>;
84
+ protected decimal(name: string, params?: {
85
+ notNull: false;
86
+ precision: number;
87
+ scale: number;
88
+ }): Column<PgBigDecimal, true>;
89
+ protected decimal(name: string, params: {
90
+ notNull: true;
91
+ precision: number;
92
+ scale: number;
93
+ }): Column<PgBigDecimal, false>;
94
+ protected time(name: string, params?: {
95
+ notNull: false;
96
+ }): Column<PgTime, true>;
97
+ protected time(name: string, params: {
98
+ notNull: true;
99
+ }): Column<PgTime, false>;
100
+ protected bool(name: string, params?: {
101
+ notNull: false;
102
+ }): Column<PgBoolean, true>;
103
+ protected bool(name: string, params: {
104
+ notNull: true;
105
+ }): Column<PgBoolean, false>;
106
+ protected text(name: string, params?: {
107
+ notNull: false;
108
+ }): Column<PgText, true>;
109
+ protected text(name: string, params: {
110
+ notNull: true;
111
+ }): Column<PgText, false>;
112
+ protected jsonb<TSubType>(name: string, params?: {
113
+ notNull: false;
114
+ }): Column<PgJsonb<TSubType>, true>;
115
+ protected jsonb<TSubType>(name: string, params: {
116
+ notNull: true;
117
+ }): Column<PgJsonb<TSubType>, false>;
118
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pgVarChar_1 = require("../columns/types/pgVarChar");
4
+ const pgTimestamp_1 = require("../columns/types/pgTimestamp");
5
+ const pgInteger_1 = require("../columns/types/pgInteger");
6
+ const pgBigDecimal_1 = require("../columns/types/pgBigDecimal");
7
+ const pgTime_1 = require("../columns/types/pgTime");
8
+ const pgBoolean_1 = require("../columns/types/pgBoolean");
9
+ const pgText_1 = require("../columns/types/pgText");
10
+ const pgJsonb_1 = require("../columns/types/pgJsonb");
11
+ const insertRequestBuilder_1 = require("../builders/highLvlBuilders/insertRequestBuilder");
12
+ const deleteRequestBuilder_1 = require("../builders/highLvlBuilders/deleteRequestBuilder");
13
+ const updateRequestBuilder_1 = require("../builders/highLvlBuilders/updateRequestBuilder");
14
+ const selectRequestBuilder_1 = require("../builders/highLvlBuilders/selectRequestBuilder");
15
+ const pgBigInt_1 = require("../columns/types/pgBigInt");
16
+ const pgEnum_1 = require("../columns/types/pgEnum");
17
+ const column_1 = require("../columns/column");
18
+ const tableIndex_1 = require("../indexes/tableIndex");
19
+ class AbstractTable {
20
+ constructor(db) {
21
+ this.withLogger = (logger) => {
22
+ this._logger = logger;
23
+ };
24
+ this.update = () => {
25
+ if (!this._session) {
26
+ throw new Error(`Db was not provided in constructor, while ${this.constructor.name} class was creating. Please make sure, that you provided Db object to ${this.constructor.name} class. Should be -> new ${this.constructor.name}(db)`);
27
+ }
28
+ return new updateRequestBuilder_1.default(this, this._session, this.mapServiceToDb(), this._logger);
29
+ };
30
+ this.insert = (value) => {
31
+ if (!this._session) {
32
+ throw new Error(`Db was not provided in constructor, while ${this.constructor.name} class was creating. Please make sure, that you provided Db object to ${this.constructor.name} class. Should be -> new ${this.constructor.name}(db)`);
33
+ }
34
+ return new insertRequestBuilder_1.default([value], this._session, this.mapServiceToDb(), this, this._logger);
35
+ };
36
+ this.insertMany = (values) => {
37
+ if (!this._session) {
38
+ throw new Error(`Db was not provided in constructor, while ${this.constructor.name} class was creating. Please make sure, that you provided Db object to ${this.constructor.name} class. Should be -> new ${this.constructor.name}(db)`);
39
+ }
40
+ return new insertRequestBuilder_1.default(values, this._session, this.mapServiceToDb(), this, this._logger);
41
+ };
42
+ this.delete = () => {
43
+ if (!this._session) {
44
+ throw new Error(`Db was not provided in constructor, while ${this.constructor.name} class was creating. Please make sure, that you provided Db object to ${this.constructor.name} class. Should be -> new ${this.constructor.name}(db)`);
45
+ }
46
+ return new deleteRequestBuilder_1.default(this, this._session, this.mapServiceToDb(), this._logger);
47
+ };
48
+ this._session = db.session();
49
+ this._logger = db.logger();
50
+ this.db = db;
51
+ }
52
+ select({ limit, offset } = {}) {
53
+ if (!this._session) {
54
+ throw new Error(`Db was not provided in constructor, while ${this.constructor.name} class was creating. Please make sure, that you provided Db object to ${this.constructor.name} class. Should be -> new ${this.constructor.name}(db)`);
55
+ }
56
+ return new selectRequestBuilder_1.default(this._session, this.mapServiceToDb(), { limit, offset }, this, this._logger);
57
+ }
58
+ mapServiceToDb() {
59
+ return Object.getOwnPropertyNames(this)
60
+ .reduce((res, fieldName) => {
61
+ const field = this[fieldName];
62
+ if (field instanceof column_1.AbstractColumn) {
63
+ res[fieldName] = field;
64
+ }
65
+ return res;
66
+ }, {});
67
+ }
68
+ index(columns) {
69
+ return new tableIndex_1.default(this.tableName(), columns instanceof Array ? columns : [columns]);
70
+ }
71
+ uniqueIndex(columns) {
72
+ return new tableIndex_1.default(this.tableName(), columns instanceof Array ? columns : [columns]);
73
+ }
74
+ varchar(name, params = {}) {
75
+ var _a;
76
+ return new column_1.Column(this, name, new pgVarChar_1.default(params.size), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
77
+ }
78
+ int(name, params = {}) {
79
+ var _a;
80
+ return new column_1.Column(this, name, new pgInteger_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
81
+ }
82
+ timestamp(name, params = {}) {
83
+ var _a;
84
+ return new column_1.Column(this, name, new pgTimestamp_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
85
+ }
86
+ bigint(name, params = {}) {
87
+ var _a;
88
+ return new column_1.Column(this, name, new pgBigInt_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
89
+ }
90
+ type(typeEnum, name, params = {}) {
91
+ var _a;
92
+ const pgEnum = new pgEnum_1.default(typeEnum.name);
93
+ return new column_1.Column(this, name, pgEnum, (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
94
+ }
95
+ decimal(name, params = {}) {
96
+ var _a;
97
+ return new column_1.Column(this, name, new pgBigDecimal_1.default(params.precision, params.scale), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
98
+ }
99
+ time(name, params = {}) {
100
+ var _a;
101
+ return new column_1.Column(this, name, new pgTime_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
102
+ }
103
+ bool(name, params = {}) {
104
+ var _a;
105
+ return new column_1.Column(this, name, new pgBoolean_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
106
+ }
107
+ text(name, params = {}) {
108
+ var _a;
109
+ return new column_1.Column(this, name, new pgText_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
110
+ }
111
+ jsonb(name, params = {}) {
112
+ var _a;
113
+ return new column_1.Column(this, name, new pgJsonb_1.default(), (_a = !(params === null || params === void 0 ? void 0 : params.notNull)) !== null && _a !== void 0 ? _a : false);
114
+ }
115
+ }
116
+ exports.default = AbstractTable;
File without changes
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractTable = exports.MigrationsTable = void 0;
4
+ /* eslint-disable import/no-cycle */
5
+ var migrationsTable_1 = require("./migrationsTable");
6
+ Object.defineProperty(exports, "MigrationsTable", { enumerable: true, get: function () { return migrationsTable_1.default; } });
7
+ var abstractTable_1 = require("./abstractTable");
8
+ Object.defineProperty(exports, "AbstractTable", { enumerable: true, get: function () { return abstractTable_1.default; } });
@@ -0,0 +1,19 @@
1
+ import { AbstractColumn, Column, IndexedColumn } from '../columns/column';
2
+ import ColumnType from '../columns/types/columnType';
3
+ import TableIndex from '../indexes/tableIndex';
4
+ import Type from '../types/type';
5
+ export declare type ExtractFieldNames<TTable> = {
6
+ [Key in keyof TTable]: TTable[Key] extends Function ? never : TTable[Key] extends Column<ColumnType, infer TNullable, infer TAutoIncrement> ? true extends TNullable ? never : Key : TTable[Key] extends IndexedColumn<ColumnType, infer TNullable, infer TAutoIncrement> ? true extends TNullable ? never : Key : never;
7
+ }[keyof TTable];
8
+ export declare type ExtractOptionalFieldNames<TTable> = {
9
+ [Key in keyof TTable]: TTable[Key] extends Function ? never : TTable[Key] extends Column<ColumnType, infer TNullable, infer TAutoIncrement> ? true extends TNullable ? Key : never : TTable[Key] extends IndexedColumn<ColumnType, infer TNullable, infer TAutoIncrement> ? true extends TNullable ? Key : never : never;
10
+ }[keyof TTable];
11
+ export declare type ExtractModel<TTable> = {
12
+ [Key in ExtractFieldNames<TTable>]: ExtractCodeType<TTable[Key]>;
13
+ } & {
14
+ [Key in ExtractOptionalFieldNames<TTable>]?: ExtractCodeType<TTable[Key]>;
15
+ };
16
+ export declare type ExtractCodeType<T extends AbstractColumn<ColumnType<any>, boolean, boolean>> = T extends AbstractColumn<ColumnType<infer TCodeType>, infer TNullable, infer TAutoIncrement> ? TCodeType : never;
17
+ export declare type ExtractTypeEnum<T extends Type<any>> = T extends Type<infer TEnum> ? TEnum : never;
18
+ export declare type Indexing = IndexedColumn<ColumnType, boolean, boolean> | TableIndex;
19
+ export declare type AnyColumn = Column<ColumnType, boolean, boolean> | IndexedColumn<ColumnType, boolean, boolean>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import AbstractTable from './abstractTable';
2
+ export default class MigrationsTable extends AbstractTable<MigrationsTable> {
3
+ id: import("../columns/column").IndexedColumn<import("..").PgInteger, true, true>;
4
+ version: import("..").Column<import("..").PgInteger, false, false>;
5
+ hash: import("..").Column<import("..").PgText, true, false>;
6
+ createdAt: import("..").Column<import("..").PgTimestamp, true, false>;
7
+ tableName(): string;
8
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const abstractTable_1 = require("./abstractTable");
4
+ class MigrationsTable extends abstractTable_1.default {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.id = this.int('id').autoIncrement().primaryKey();
8
+ this.version = this.int('version', { notNull: true }).unique();
9
+ this.hash = this.text('hash');
10
+ this.createdAt = this.timestamp('created_at');
11
+ }
12
+ tableName() {
13
+ return 'migrations';
14
+ }
15
+ }
16
+ exports.default = MigrationsTable;
package/test.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/test.js ADDED
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const usersTable_1 = require("./docs/tables/usersTable");
5
+ const serializer_1 = require("./serializer/serializer");
6
+ // import { Pool } from 'pg';
7
+ // import { DB } from '.';
8
+ // import { DB, DbConnector } from '.';
9
+ // import Enum from './types/type';
10
+ const fromTypeFile = (filepath) => {
11
+ // const db = new DB(new Pool());
12
+ const importedEnum = require(filepath);
13
+ const res = [];
14
+ // eslint-disable-next-line no-restricted-syntax
15
+ for (const type of Object.keys(importedEnum)) {
16
+ res.push(importedEnum[type]);
17
+ }
18
+ return res;
19
+ };
20
+ (async () => {
21
+ try {
22
+ const db = await new _1.DbConnector()
23
+ .connectionString('postgresql://postgres@127.0.0.1/drizzle')
24
+ .connect();
25
+ const ser = new serializer_1.default();
26
+ const d = db.create(usersTable_1.default);
27
+ const f = ser.generate([d], []);
28
+ console.log(JSON.stringify(f, null, 2));
29
+ // const typesFileNames = fs.readdirSync('/Users/andrewsherman/IdeaProjects/datalayer-orm/src/examples/types');
30
+ // typesFileNames.forEach((filename) => {
31
+ // const types = fromTypeFile(`./examples/types/${filename.split('.')[0]}`);
32
+ // const typeValues = types[0].values;
33
+ // console.log(typeValues);
34
+ // // console.log(Object.values(typeValues));
35
+ // });
36
+ // // const usersTest = new UsersTest();
37
+ // // await usersTest.execute();
38
+ // const db = await new DbConnector()
39
+ // .connectionString('postgresql://postgres@127.0.0.1/drizzle')
40
+ // .connect();
41
+ // const res = await db.session().execute(
42
+ // Create.table(db.create(UsersTable)).build(),
43
+ // );
44
+ // if (res.isLeft()) {
45
+ // console.log(res.value.reason);
46
+ // } else {
47
+ // console.log(res.value);
48
+ // }
49
+ // const userTable = new UsersTable(db);
50
+ // const citiesTable = new CitiesTable(db);
51
+ // const uni = new UniJoin(userTable).innerJoin(
52
+ // UsersTable,
53
+ // (table) => table.id,
54
+ // (t) => t.id,
55
+ // );
56
+ // Inner.join1(
57
+ // { table: CitiesTable, column: ((table) => table.id), on: ((table) => table.userId1) },
58
+ // );
59
+ // const res = await userTable.select().leftJoin(
60
+ // UsersTable,
61
+ // (table) => table.id,
62
+ // (t) => t.id,
63
+ // ).execute();
64
+ // const d = await userTable
65
+ // .insert({ phone: 'phone1', createdAt: new Date(), role: 'foo' }).all();
66
+ // const all = await userTable.select().all();
67
+ // console.log(all[1]?.role);
68
+ // console.log(typeof d[0]?.role);
69
+ // const users = await userTable.update()
70
+ // .where(eq(userTable.id, 1))
71
+ // .set({
72
+ // phone: 'dsdf',
73
+ // createdAt: new Date(),
74
+ // })
75
+ // .all();
76
+ // console.log(users);
77
+ }
78
+ catch (e) {
79
+ console.log(e);
80
+ }
81
+ })();
@@ -0,0 +1,10 @@
1
+ export default class Enum<T extends string> {
2
+ name: string;
3
+ values: T[];
4
+ constructor(name: string, values: T[]);
5
+ }
6
+ export declare type ExtractEnumValues<T> = T extends Enum<infer TValues> ? TValues : never;
7
+ export declare function createEnum<T extends string>({ alias, values }: {
8
+ alias: string;
9
+ values: T[];
10
+ }): Enum<T>;
package/types/type.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnum = void 0;
4
+ class Enum {
5
+ constructor(name, values) {
6
+ this.name = name;
7
+ this.values = values;
8
+ }
9
+ }
10
+ exports.default = Enum;
11
+ function createEnum({ alias, values }) {
12
+ return new Enum(alias, values);
13
+ }
14
+ exports.createEnum = createEnum;
@@ -0,0 +1,2 @@
1
+ export declare const ecranate: (data: string) => string;
2
+ export declare const shouldEcranate: (value: any) => boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldEcranate = exports.ecranate = void 0;
4
+ const ecranate = (data) => `"${data}"`;
5
+ exports.ecranate = ecranate;
6
+ const shouldEcranate = (value) => typeof value === 'string'
7
+ || value instanceof Date || value === Object(value);
8
+ exports.shouldEcranate = shouldEcranate;