drizzle-orm 0.11.0 → 0.11.3

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 (281) hide show
  1. package/README.md +218 -298
  2. package/builders/aggregators/abstractAggregator.d.ts +1 -0
  3. package/builders/aggregators/abstractAggregator.js +17 -0
  4. package/builders/aggregators/abstractAggregator.js.map +1 -0
  5. package/builders/aggregators/deleteAggregator.js +1 -0
  6. package/builders/aggregators/deleteAggregator.js.map +1 -0
  7. package/builders/aggregators/insertAggregator.js +1 -0
  8. package/builders/aggregators/insertAggregator.js.map +1 -0
  9. package/builders/aggregators/selectAggregator.d.ts +1 -9
  10. package/builders/aggregators/selectAggregator.js +2 -55
  11. package/builders/aggregators/selectAggregator.js.map +1 -0
  12. package/builders/aggregators/selectAggregatorV1.d.ts +39 -0
  13. package/builders/aggregators/selectAggregatorV1.js +144 -0
  14. package/builders/aggregators/selectAggregatorV1.js.map +1 -0
  15. package/builders/aggregators/updateAggregator.js +1 -0
  16. package/builders/aggregators/updateAggregator.js.map +1 -0
  17. package/builders/highLvlBuilders/abstractRequestBuilder.js +1 -0
  18. package/builders/highLvlBuilders/abstractRequestBuilder.js.map +1 -0
  19. package/builders/highLvlBuilders/deleteRequestBuilder.js +1 -0
  20. package/builders/highLvlBuilders/deleteRequestBuilder.js.map +1 -0
  21. package/builders/highLvlBuilders/insertRequestBuilder.js +1 -0
  22. package/builders/highLvlBuilders/insertRequestBuilder.js.map +1 -0
  23. package/builders/highLvlBuilders/joins/joinBuilderResponse.js +1 -0
  24. package/builders/highLvlBuilders/joins/joinBuilderResponse.js.map +1 -0
  25. package/builders/highLvlBuilders/joins/proxies/joinProxies.js +1 -0
  26. package/builders/highLvlBuilders/joins/proxies/joinProxies.js.map +1 -0
  27. package/builders/highLvlBuilders/joins/selectJoinBuilder.d.ts +1 -0
  28. package/builders/highLvlBuilders/joins/selectJoinBuilder.js +6 -1
  29. package/builders/highLvlBuilders/joins/selectJoinBuilder.js.map +1 -0
  30. package/builders/highLvlBuilders/order.js +1 -0
  31. package/builders/highLvlBuilders/order.js.map +1 -0
  32. package/builders/highLvlBuilders/selectRequestBuilder.d.ts +5 -5
  33. package/builders/highLvlBuilders/selectRequestBuilder.js +1 -0
  34. package/builders/highLvlBuilders/selectRequestBuilder.js.map +1 -0
  35. package/builders/highLvlBuilders/updateRequestBuilder.js +1 -0
  36. package/builders/highLvlBuilders/updateRequestBuilder.js.map +1 -0
  37. package/builders/index.js +1 -0
  38. package/builders/index.js.map +1 -0
  39. package/builders/joinBuilders/builders/abstractJoinBuilder.js +5 -4
  40. package/builders/joinBuilders/builders/abstractJoinBuilder.js.map +1 -0
  41. package/builders/joinBuilders/builders/selectWithFiveJoins.js +1 -0
  42. package/builders/joinBuilders/builders/selectWithFiveJoins.js.map +1 -0
  43. package/builders/joinBuilders/builders/selectWithFourJoins.js +1 -0
  44. package/builders/joinBuilders/builders/selectWithFourJoins.js.map +1 -0
  45. package/builders/joinBuilders/builders/selectWithJoin.js +1 -0
  46. package/builders/joinBuilders/builders/selectWithJoin.js.map +1 -0
  47. package/builders/joinBuilders/builders/selectWithThreeJoins.js +1 -0
  48. package/builders/joinBuilders/builders/selectWithThreeJoins.js.map +1 -0
  49. package/builders/joinBuilders/builders/selectWithTwoJoins.js +4 -0
  50. package/builders/joinBuilders/builders/selectWithTwoJoins.js.map +1 -0
  51. package/builders/joinBuilders/join.js +1 -0
  52. package/builders/joinBuilders/join.js.map +1 -0
  53. package/builders/joinBuilders/joinWith.js +1 -0
  54. package/builders/joinBuilders/joinWith.js.map +1 -0
  55. package/builders/joinBuilders/responses/selectResponseFiveJoins.js +1 -0
  56. package/builders/joinBuilders/responses/selectResponseFiveJoins.js.map +1 -0
  57. package/builders/joinBuilders/responses/selectResponseFourJoins.js +1 -0
  58. package/builders/joinBuilders/responses/selectResponseFourJoins.js.map +1 -0
  59. package/builders/joinBuilders/responses/selectResponseThreeJoins.js +1 -0
  60. package/builders/joinBuilders/responses/selectResponseThreeJoins.js.map +1 -0
  61. package/builders/joinBuilders/responses/selectResponseTwoJoins.js +1 -0
  62. package/builders/joinBuilders/responses/selectResponseTwoJoins.js.map +1 -0
  63. package/builders/joinBuilders/responses/selectResponseWithJoin.js +1 -0
  64. package/builders/joinBuilders/responses/selectResponseWithJoin.js.map +1 -0
  65. package/builders/joinBuilders/static.js +1 -0
  66. package/builders/joinBuilders/static.js.map +1 -0
  67. package/builders/lowLvlBuilders/alter.js +1 -0
  68. package/builders/lowLvlBuilders/alter.js.map +1 -0
  69. package/builders/lowLvlBuilders/create.js +1 -0
  70. package/builders/lowLvlBuilders/create.js.map +1 -0
  71. package/builders/lowLvlBuilders/delets/delete.js +1 -0
  72. package/builders/lowLvlBuilders/delets/delete.js.map +1 -0
  73. package/builders/lowLvlBuilders/delets/deleteFilter.js +1 -0
  74. package/builders/lowLvlBuilders/delets/deleteFilter.js.map +1 -0
  75. package/builders/lowLvlBuilders/delets/deleteFrom.js +1 -0
  76. package/builders/lowLvlBuilders/delets/deleteFrom.js.map +1 -0
  77. package/builders/lowLvlBuilders/inserts/insert.js +1 -0
  78. package/builders/lowLvlBuilders/inserts/insert.js.map +1 -0
  79. package/builders/lowLvlBuilders/inserts/insertInto.js +1 -0
  80. package/builders/lowLvlBuilders/inserts/insertInto.js.map +1 -0
  81. package/builders/lowLvlBuilders/inserts/onConflictInsert.js +1 -0
  82. package/builders/lowLvlBuilders/inserts/onConflictInsert.js.map +1 -0
  83. package/builders/lowLvlBuilders/inserts/valuesInsert.js +1 -0
  84. package/builders/lowLvlBuilders/inserts/valuesInsert.js.map +1 -0
  85. package/builders/lowLvlBuilders/selects/select.d.ts +4 -1
  86. package/builders/lowLvlBuilders/selects/select.js +28 -1
  87. package/builders/lowLvlBuilders/selects/select.js.map +1 -0
  88. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +25 -11
  89. package/builders/lowLvlBuilders/selects/selectFrom.js +49 -5
  90. package/builders/lowLvlBuilders/selects/selectFrom.js.map +1 -0
  91. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +22 -9
  92. package/builders/lowLvlBuilders/selects/selectJoined.js +45 -7
  93. package/builders/lowLvlBuilders/selects/selectJoined.js.map +1 -0
  94. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +13 -0
  95. package/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
  96. package/builders/lowLvlBuilders/selects/whereSelect.js.map +1 -0
  97. package/builders/lowLvlBuilders/updates/update.js +1 -0
  98. package/builders/lowLvlBuilders/updates/update.js.map +1 -0
  99. package/builders/lowLvlBuilders/updates/updateIn.js +1 -0
  100. package/builders/lowLvlBuilders/updates/updateIn.js.map +1 -0
  101. package/builders/lowLvlBuilders/updates/whereSelect.js +1 -0
  102. package/builders/lowLvlBuilders/updates/whereSelect.js.map +1 -0
  103. package/builders/lowLvlBuilders/updates/whereSet.js +1 -0
  104. package/builders/lowLvlBuilders/updates/whereSet.js.map +1 -0
  105. package/builders/requestBuilders/updates/combine.js +1 -0
  106. package/builders/requestBuilders/updates/combine.js.map +1 -0
  107. package/builders/requestBuilders/updates/increment.js +1 -0
  108. package/builders/requestBuilders/updates/increment.js.map +1 -0
  109. package/builders/requestBuilders/updates/setObjects.js +1 -0
  110. package/builders/requestBuilders/updates/setObjects.js.map +1 -0
  111. package/builders/requestBuilders/updates/static.js +1 -0
  112. package/builders/requestBuilders/updates/static.js.map +1 -0
  113. package/builders/requestBuilders/updates/updates.js +1 -0
  114. package/builders/requestBuilders/updates/updates.js.map +1 -0
  115. package/builders/requestBuilders/where/and.d.ts +10 -0
  116. package/builders/requestBuilders/where/and.js +18 -0
  117. package/builders/requestBuilders/where/and.js.map +1 -0
  118. package/builders/requestBuilders/where/const.d.ts +7 -0
  119. package/builders/requestBuilders/where/const.js +11 -0
  120. package/builders/requestBuilders/where/const.js.map +1 -0
  121. package/builders/requestBuilders/where/constArray.d.ts +7 -0
  122. package/builders/requestBuilders/where/constArray.js +26 -0
  123. package/builders/requestBuilders/where/constArray.js.map +1 -0
  124. package/builders/requestBuilders/where/eqWhere.d.ts +10 -0
  125. package/builders/requestBuilders/where/eqWhere.js +6 -0
  126. package/builders/requestBuilders/where/eqWhere.js.map +1 -0
  127. package/builders/requestBuilders/where/greater.d.ts +10 -0
  128. package/builders/requestBuilders/where/greater.js +6 -0
  129. package/builders/requestBuilders/where/greater.js.map +1 -0
  130. package/builders/requestBuilders/where/greaterEq.d.ts +10 -0
  131. package/builders/requestBuilders/where/greaterEq.js +6 -0
  132. package/builders/requestBuilders/where/greaterEq.js.map +1 -0
  133. package/builders/requestBuilders/where/in.d.ts +10 -0
  134. package/builders/requestBuilders/where/in.js +6 -0
  135. package/builders/requestBuilders/where/in.js.map +1 -0
  136. package/builders/requestBuilders/where/isNotNull.d.ts +10 -0
  137. package/builders/requestBuilders/where/isNotNull.js +5 -0
  138. package/builders/requestBuilders/where/isNotNull.js.map +1 -0
  139. package/builders/requestBuilders/where/isNull.d.ts +10 -0
  140. package/builders/requestBuilders/where/isNull.js +5 -0
  141. package/builders/requestBuilders/where/isNull.js.map +1 -0
  142. package/builders/requestBuilders/where/less.d.ts +10 -0
  143. package/builders/requestBuilders/where/less.js +6 -0
  144. package/builders/requestBuilders/where/less.js.map +1 -0
  145. package/builders/requestBuilders/where/lessEq.d.ts +10 -0
  146. package/builders/requestBuilders/where/lessEq.js +6 -0
  147. package/builders/requestBuilders/where/lessEq.js.map +1 -0
  148. package/builders/requestBuilders/where/like.d.ts +10 -0
  149. package/builders/requestBuilders/where/like.js +6 -0
  150. package/builders/requestBuilders/where/like.js.map +1 -0
  151. package/builders/requestBuilders/where/notEqWhere.d.ts +10 -0
  152. package/builders/requestBuilders/where/notEqWhere.js +6 -0
  153. package/builders/requestBuilders/where/notEqWhere.js.map +1 -0
  154. package/builders/requestBuilders/where/or.d.ts +10 -0
  155. package/builders/requestBuilders/where/or.js +18 -0
  156. package/builders/requestBuilders/where/or.js.map +1 -0
  157. package/builders/requestBuilders/where/rawWhere.d.ts +10 -0
  158. package/builders/requestBuilders/where/rawWhere.js +2 -0
  159. package/builders/requestBuilders/where/rawWhere.js.map +1 -0
  160. package/builders/requestBuilders/where/static.d.ts +4 -1
  161. package/builders/requestBuilders/where/static.js +10 -4
  162. package/builders/requestBuilders/where/static.js.map +1 -0
  163. package/{test.d.ts → builders/requestBuilders/where/static.spec.d.ts} +0 -0
  164. package/builders/requestBuilders/where/static.spec.js +60 -0
  165. package/builders/requestBuilders/where/static.spec.js.map +1 -0
  166. package/builders/requestBuilders/where/var.d.ts +10 -0
  167. package/builders/requestBuilders/where/var.js +5 -0
  168. package/builders/requestBuilders/where/var.js.map +1 -0
  169. package/builders/requestBuilders/where/where.d.ts +10 -0
  170. package/builders/requestBuilders/where/where.js +1 -0
  171. package/builders/requestBuilders/where/where.js.map +1 -0
  172. package/builders/transaction/transaction.js +1 -0
  173. package/builders/transaction/transaction.js.map +1 -0
  174. package/columns/column.js +1 -0
  175. package/columns/column.js.map +1 -0
  176. package/columns/index.js +1 -0
  177. package/columns/index.js.map +1 -0
  178. package/columns/types/columnType.js +1 -0
  179. package/columns/types/columnType.js.map +1 -0
  180. package/columns/types/pgBigDecimal.js +1 -0
  181. package/columns/types/pgBigDecimal.js.map +1 -0
  182. package/columns/types/pgBigInt.js +1 -0
  183. package/columns/types/pgBigInt.js.map +1 -0
  184. package/columns/types/pgBigSerial.js +1 -0
  185. package/columns/types/pgBigSerial.js.map +1 -0
  186. package/columns/types/pgBoolean.js +1 -0
  187. package/columns/types/pgBoolean.js.map +1 -0
  188. package/columns/types/pgEnum.js +1 -0
  189. package/columns/types/pgEnum.js.map +1 -0
  190. package/columns/types/pgInteger.js +1 -0
  191. package/columns/types/pgInteger.js.map +1 -0
  192. package/columns/types/pgJsonb.js +1 -0
  193. package/columns/types/pgJsonb.js.map +1 -0
  194. package/columns/types/pgSerial.js +1 -0
  195. package/columns/types/pgSerial.js.map +1 -0
  196. package/columns/types/pgSmallInt.js +1 -0
  197. package/columns/types/pgSmallInt.js.map +1 -0
  198. package/columns/types/pgText.js +1 -0
  199. package/columns/types/pgText.js.map +1 -0
  200. package/columns/types/pgTime.js +1 -0
  201. package/columns/types/pgTime.js.map +1 -0
  202. package/columns/types/pgTimestamp.js +1 -0
  203. package/columns/types/pgTimestamp.js.map +1 -0
  204. package/columns/types/pgTimestamptz.js +1 -0
  205. package/columns/types/pgTimestamptz.js.map +1 -0
  206. package/columns/types/pgVarChar.js +1 -0
  207. package/columns/types/pgVarChar.js.map +1 -0
  208. package/db/db.js +1 -0
  209. package/db/db.js.map +1 -0
  210. package/db/dbConnector.js +1 -0
  211. package/db/dbConnector.js.map +1 -0
  212. package/db/dbStringConnector.js +1 -0
  213. package/db/dbStringConnector.js.map +1 -0
  214. package/db/group_by.js +1 -0
  215. package/db/group_by.js.map +1 -0
  216. package/db/index.js +1 -0
  217. package/db/index.js.map +1 -0
  218. package/db/session.js +1 -0
  219. package/db/session.js.map +1 -0
  220. package/docs/cases/simple_delete.js +1 -0
  221. package/docs/cases/simple_delete.js.map +1 -0
  222. package/docs/cases/simple_insert.js +1 -0
  223. package/docs/cases/simple_insert.js.map +1 -0
  224. package/docs/cases/simple_join.js +3 -2
  225. package/docs/cases/simple_join.js.map +1 -0
  226. package/docs/cases/simple_select.js +1 -0
  227. package/docs/cases/simple_select.js.map +1 -0
  228. package/docs/cases/simple_update.js +1 -0
  229. package/docs/cases/simple_update.js.map +1 -0
  230. package/docs/tables/citiesTable.js +1 -0
  231. package/docs/tables/citiesTable.js.map +1 -0
  232. package/docs/tables/userGroupsTable.js +1 -0
  233. package/docs/tables/userGroupsTable.js.map +1 -0
  234. package/docs/tables/usersTable.js +1 -0
  235. package/docs/tables/usersTable.js.map +1 -0
  236. package/docs/tables/usersToUserGroups.js +1 -0
  237. package/docs/tables/usersToUserGroups.js.map +1 -0
  238. package/docs/types/rolesType.js +1 -0
  239. package/docs/types/rolesType.js.map +1 -0
  240. package/errors/baseError.js +1 -0
  241. package/errors/baseError.js.map +1 -0
  242. package/errors/builderError.js +1 -0
  243. package/errors/builderError.js.map +1 -0
  244. package/errors/dbErrors.js +1 -0
  245. package/errors/dbErrors.js.map +1 -0
  246. package/index.d.ts +1 -1
  247. package/index.js +5 -2
  248. package/index.js.map +1 -0
  249. package/indexes/tableIndex.js +1 -0
  250. package/indexes/tableIndex.js.map +1 -0
  251. package/logger/abstractLogger.js +1 -0
  252. package/logger/abstractLogger.js.map +1 -0
  253. package/logger/consoleLogger.js +1 -0
  254. package/logger/consoleLogger.js.map +1 -0
  255. package/mappers/index.js +1 -0
  256. package/mappers/index.js.map +1 -0
  257. package/mappers/responseMapper.d.ts +6 -0
  258. package/mappers/responseMapper.js +33 -0
  259. package/mappers/responseMapper.js.map +1 -0
  260. package/migrator/index.js +1 -0
  261. package/migrator/index.js.map +1 -0
  262. package/migrator/migrator.js +1 -0
  263. package/migrator/migrator.js.map +1 -0
  264. package/package.json +4 -4
  265. package/serializer/serializer.js +1 -0
  266. package/serializer/serializer.js.map +1 -0
  267. package/tables/abstractTable.d.ts +2 -0
  268. package/tables/abstractTable.js +6 -0
  269. package/tables/abstractTable.js.map +1 -0
  270. package/tables/index.js +1 -0
  271. package/tables/index.js.map +1 -0
  272. package/tables/inferTypes.d.ts +5 -0
  273. package/tables/inferTypes.js +1 -0
  274. package/tables/inferTypes.js.map +1 -0
  275. package/tables/migrationsTable.js +1 -0
  276. package/tables/migrationsTable.js.map +1 -0
  277. package/types/type.js +1 -0
  278. package/types/type.js.map +1 -0
  279. package/utils/ecranate.js +1 -0
  280. package/utils/ecranate.js.map +1 -0
  281. package/test.js +0 -166
package/README.md CHANGED
@@ -1,294 +1,198 @@
1
- # DrizzleORM
2
-
3
- **DrizzleORM** is an ORM framework for
4
- [TypeScript](https://www.typescriptlang.org/).
5
- It offers you several levels of Database communication:
6
- * Typesafe Table View approach
7
- * Typesafe Query Builder
8
- * Simple SQL query execution
9
-
10
- Drizzle ORM is highly influenced by [Exposed](https://github.com/JetBrains/Exposed) and Jetbrains development methodology
11
-
12
- ## Supported Databases
13
-
14
- * PostgreSQL
15
-
16
- ## Links
17
-
18
- In Progress
19
-
20
- ## Installing
21
-
1
+ ## DrizzleORM
2
+ DrizzleORM is a TypeScript ORM library with a [drizzle-kit](https://github.com/lambda-direct/drizzle-orm/tree/develop/kit) CLI companion for automatic SQL migrations generation. It's meant to be a library, not a framework, stay as an opt-in solution all the time at any levels. We try to follow SQL-like syntax whenever possible, be strongly typed ground top and fail in compile time, not in runtime. We implemented best in class `joins` and second to none `migrations generation`. Library has almost zero dependencies and being battle tested on production projects by multiple teams 🚀
3
+
4
+ | database | support |
5
+ |:-- | :---: |
6
+ | PostgreSQL | ✅ |
7
+ | MySQL | ⏳ |
8
+ | DynamoDB | ⏳ |
9
+ | SQLite | ⏳ |
10
+ | MS SQL | ⏳ |
11
+ | CockroachDB | ⏳ |
12
+
13
+ ### Installation
22
14
  ```bash
23
15
  npm install drizzle-orm drizzle-kit
24
16
  ```
25
- #### **In Progress**
26
- ```bash
27
- yarn add drizzle-orm drizzle-kit
28
- bower install drizzle-orm drizzle-kit
29
- ```
30
-
31
- ## Connecting to database
32
-
33
- ```tsx
34
- import { DbConnector } from "drizzle-orm";
35
-
36
- // connect via postgresql connection url
37
- const db = await new DbConnector()
38
- .connectionString("postgres://user:password@host:port/db")
39
- .connect();
40
-
41
- // or by params
42
- const db = await new DbConnector()
43
- .params({
44
- host: '0.0.0.0',
45
- port: 5432,
46
- user: 'user',
47
- password: 'password',
48
- db: 'optional_db_name'
49
- }).connect();
50
- ```
51
- ## Project structure
52
- - tables folder
53
- - migrations folder
54
17
 
55
- ## Create tables
56
- ### Users Table
57
- ---
18
+ ### Quick start
58
19
  ```typescript
20
+ import { drizzle, PgTable } from 'drizzle-orm'
59
21
 
60
- export const rolesEnum = createEnum({ alias: 'test-enum', values: ['user', 'guest', 'admin'] });
61
-
62
- export default class UsersTable extends AbstractTable<UsersTable> {
22
+ export class UsersTable extends PgTable<UsersTable> {
63
23
  public id = this.serial('id').primaryKey();
64
24
  public fullName = this.text('full_name');
65
-
66
25
  public phone = this.varchar('phone', { size: 256 });
67
- public media = this.jsonb<string[]>('media');
68
- public decimalField = this.decimal('test', { precision: 100, scale: 2 }).notNull();
69
- public bigIntField = this.bigint('test1', 'max_bytes_53');
70
- public role = this.type(rolesEnum, 'name_in_table').notNull();
71
-
72
- public createdAt = this.timestamp('created_at').notNull();
73
-
74
- public createdAtWithTimezone = this.timestamptz('created_at_time_zone');
75
-
76
- public updatedAt = this.timestamp('updated_at').defaultValue(Defaults.CURRENT_TIMESTAMP);
77
- public isArchived = this.bool('is_archived').defaultValue(false);
78
-
79
- public phoneFullNameIndex = this.index([this.phone, this.fullName]);
80
- public phoneIndex = this.uniqueIndex(this.phone);
81
26
 
82
27
  public tableName(): string {
83
28
  return 'users';
84
29
  }
85
30
  }
86
- ```
87
- ### Cities Table
88
- ---
89
- ```typescript
90
- interface CityMeta {
91
- population: number,
92
- connection: string,
93
- }
31
+ export type User = InferType<UsersTable>
94
32
 
95
- export default class CitiesTable extends AbstractTable<CitiesTable> {
96
- public id = this.serial('id').primaryKey();
33
+ const db = await drizzle.connect("postgres://user:password@host:port/db");
34
+ const usersTable = new UsersTable(db);
97
35
 
98
- public foundationDate = this.timestamp('name').notNull();
99
- public location = this.varchar('page', { size: 256 });
36
+ const users: User[] = await usersTable.select().execute();
37
+ ```
100
38
 
101
- public userId = this.int('user_id').foreignKey(UsersTable, (table) => table.id, { onUpdate: 'CASCADE' });
39
+ ### Connecting to database
40
+ ```typescript
102
41
 
103
- public metadata = this.jsonb<CityMeta>('metadata');
42
+ const db = await drizzle.connect("postgres://user:password@host:port/db");
43
+ const db = await drizzle.connect({
44
+ host: "127.0.0.1",
45
+ port: 5432,
46
+ user: "postgres",
47
+ password: "postgres",
48
+ db: "db_name",
49
+ });
50
+ ```
104
51
 
105
- public tableName(): string {
106
- return 'cities';
107
- }
108
- }
52
+ ### SQL schema declaration
53
+ With `drizzle-orm` you declare SQL schema in typescritp. You can have either one `schema.ts` file with all declarations or you can group them logically in multiple files. We prefer to use single file schema.
109
54
  ```
110
- ### User Groups Table
111
- ---
55
+ 📦project
56
+ ├ 📂src
57
+ │ ├ 📂data
58
+ │ │ └ 📜schema.ts
59
+ │ └ ...
60
+ ├ ...
61
+ └ 📜package.json
62
+
63
+ ## or multiple schema files
64
+ ├ 📂data
65
+ ├ 📜users.ts
66
+ ├ 📜countries.ts
67
+ ├ 📜cities.ts
68
+ ├ 📜products.ts
69
+ ├ 📜clients.ts
70
+ ├ 📜enums.ts
71
+ └ 📜etc.ts
72
+ ```
73
+ This is how you declare SQL schema in `schema.ts`. You can declare tables, indexes and constraints, foreign keys and enums. Please pay attention to `export` keyword, they are mandatory if you'll be using drizzle-kit SQL migrations generator.
112
74
  ```typescript
113
- export default class UserGroupsTable extends AbstractTable<UserGroupsTable> {
114
- public id = this.serial('id').primaryKey();
75
+ // declaring enum in database
76
+ export const popularityEnum = createEnum({ alias: 'popularity', values: ['unknown', 'known', 'popular'] });
115
77
 
116
- public name = this.varchar('name');
117
- public description = this.varchar('description');
78
+ export class CountriesTable extends PgTable<CountriesTable> {
79
+ id = this.serial("id").primaryKey();
80
+ name = this.varchar("name", { size: 256 })
81
+
82
+ // declaring index
83
+ nameIndex = this.uniqueIndex(this.name)
118
84
 
119
85
  public tableName(): string {
120
- return 'user_groups';
86
+ return 'countries';
121
87
  }
122
88
  }
123
- ```
124
- ### User to User Groups Table
125
- ---
126
- #### Many to many connection between Users and User Groups
127
- ```typescript
128
- export default class UsersToUserGroupsTable extends AbstractTable<UsersToUserGroupsTable> {
129
- public groupId = this.int('city_id').foreignKey(UserGroupsTable, (table) => table.id, { onDelete: 'CASCADE' });
130
- public userId = this.int('user_id').foreignKey(UsersTable, (table) => table.id, { onDelete: 'CASCADE' });
131
89
 
132
- public manyToManyIndex = this.index([this.groupId, this.userId]);
90
+ export class CitiesTable extends PgTable<CitiesTable> {
91
+ id = this.serial("id").primaryKey();
92
+ name = this.varchar("name", { size: 256 })
93
+ countryId = this.int("country_id").foreignKey(CountriesTable, (country) => country.id)
94
+
95
+ // declaring enum column in table
96
+ popularity = this.type(popularityEnum, "popularity")
133
97
 
134
98
  public tableName(): string {
135
- return 'users_to_user_groups';
99
+ return 'cities';
136
100
  }
137
101
  }
138
102
  ```
139
-
140
- ## CRUD
141
- ### **SELECT**
142
- ---
103
+ The list of all possible types. You can also create custom types - !!see here!!.
143
104
  ```typescript
144
- const db = await new DbConnector()
145
- .connectionString('postgresql://postgres@127.0.0.1/drizzle')
146
- .connect();
105
+ export const enum = createEnum({ alias: "database-name", values: ["value1", "value2", "value3"] });
106
+ type(enum, "...")
147
107
 
148
- const usersTable = new UsersTable(db);
108
+ smallint("...")
109
+ int("...")
110
+ bigint("...", maxBytes: "max_bytes_53")
111
+ bigint("...", maxBytes: "max_bytes_64")
149
112
 
150
- // select all
151
- const allSelect = await usersTable.select().all();
113
+ bool("...")
114
+ text("...");
115
+ varchar("...");
116
+ varchar("...", { size: 256 });
152
117
 
153
- // select first
154
- const firstSelect = await usersTable.select().findOne();
155
- ```
156
- #### **Sorting and Filtering**
157
- ---
158
- ##### Select all records from `Users` where phone is `"hello"`
159
- ```typescript
160
- const eqSelect = await usersTable.select().where(
161
- eq(usersTable.phone, 'hello')
162
- ).all();
163
- ```
164
- ##### Select all records from `Users` where **both** phone is `"hello"` **and** phone is `"hello"`
165
- ```typescript
166
- const andSelect = await usersTable.select().where(
167
- and([
168
- eq(usersTable.phone, 'hello'),
169
- eq(usersTable.phone, 'hello')
170
- ]),
171
- ).all();
172
- ```
173
- ##### Select all records from `Users` where **either** phone is `"hello"` **or** phone is `"hello"`
174
- ```typescript
175
- const orSelect = await usersTable.select().where(
176
- or([eq(usersTable.phone, 'hello')]),
177
- ).all();
178
- ```
179
- ##### Select all records from `Users` using **LIMIT** and **OFFSET**
180
- ```typescript
181
- const limitOffsetSelect = await usersTable.select().limit(10).offset(10).all();
182
- ```
183
- ##### Select all records from `Users` where `phone` contains `"hello"`
184
- ```typescript
185
- const likeSelect = await usersTable.select().where(
186
- like(usersTable.phone, '%hello%')
187
- ).all();
188
- ```
189
- ##### Select all records from `Users` where `phone` equals to some of values from array
190
- ```typescript
191
- const inArraySelect = usersTable.select().where(
192
- inArray(usersTable.phone, ['hello'])
193
- ).all();
194
- ```
195
- ##### Select all records from `Users` where `phone` greater(**>**) than `"hello"`
196
- ```typescript
197
- const greaterSelect = usersTable.select().where(
198
- greater(usersTable.phone, 'hello')
199
- ).all();
200
- ```
201
- ##### Select all records from `Users` where `phone` less(**<**) than `"hello"`
202
- ```typescript
203
- const lessSelect = usersTable.select().where(
204
- less(usersTable.phone, 'hello')
205
- ).all();
206
- ```
207
- ##### Select all records from `Users` where `phone` greater or equals(**>=**) than `"hello"`
208
- ```typescript
209
- const greaterEqSelect = usersTable.select().where(
210
- greaterEq(usersTable.phone, 'hello')
211
- ).all();
212
- ```
213
- ##### Select all records from `Users` where `phone` less or equals(**<=**)
214
- ```typescript
215
- const lessEqSelect = usersTable.select().where(
216
- lessEq(usersTable.phone, 'hello')
217
- ).all();
218
- ```
219
- ##### Select all records from `Users` where `phone` is **NULL**
220
- ```typescript
221
- const isNullSelect = usersTable.select().where(
222
- isNull(usersTable.phone)
223
- ).all();
224
- ```
225
- ##### Select all records from `Users` where `phone` not equals to `"hello"`
226
- ```typescript
227
- const notEqSelect = usersTable.select().where(
228
- notEq(usersTable.phone, 'hello')
229
- ).all();
230
- ```
231
- ##### Select all records from `Users` ordered by `phone` in ascending order
232
- ```typescript
233
- const ordered = await usersTable.select().orderBy((table) => table.phone, Order.ASC).all();
234
- ```
235
- #### **Partial Selecting**
236
- ```typescript
237
- const partialSelect = await usersTable.select({
238
- mappedId: usersTable.id,
239
- mappedPhone: usersTable.phone,
240
- }).all();
118
+ serial("...");
119
+ bigserial("...", maxBytes: "max_bytes_53");
120
+ bigserial("...", maxBytes: "max_bytes_64");
241
121
 
242
- // Usage
243
- const { mappedId, mappedPhone } = partialSelect;
244
- ```
122
+ decimal("...", { precision: 100, scale: 2 });
245
123
 
124
+ jsonb<...>("...");
125
+ jsonb<string[]>("...");
246
126
 
247
- ### **Update**
248
- ---
249
- ##### Update `fullName` to `newName` in `Users` where phone is `"hello"`
250
- ```typescript
251
- await usersTable.update()
252
- .where(eq(usersTable.phone, 'hello'))
253
- .set({ fullName: 'newName' })
254
- .execute();
255
- ```
256
- ##### Update `fullName` to `newName` in `Users` where phone is `"hello"` returning updated `User` model
257
- ```typescript
258
- await usersTable.update()
259
- .where(eq(usersTable.phone, 'hello'))
260
- .set({ fullName: 'newName' })
261
- .all();
262
- ```
263
- ##### Update `fullName` to `newName` in `Users` where phone is `"hello"` returning updated `User` model
264
- ```typescript
265
- await usersTable.update()
266
- .where(eq(usersTable.phone, 'hello'))
267
- .set({ fullName: 'newName' })
268
- .findOne();
269
- ```
127
+ time("...")
128
+ timestamp("...") // with timezone
129
+ timestamptz("..."); // without timezone
130
+ timestamp("...").defaultValue(Defaults.CURRENT_TIMESTAMP)
270
131
 
271
- ### **Delete**
272
- ##### Delete `user` where phone is `"hello"`
273
- ```typescript
274
- await usersTable.delete()
275
- .where(eq(usersTable.phone, 'hello'))
276
- .execute();
277
- ```
278
- ##### Delete `user` where phone is `"hello"` returning updated `User` model
279
- ```typescript
280
- await usersTable.delete()
281
- .where(eq(usersTable.phone, 'hello'))
282
- .all();
132
+ index(column);
133
+ index([column1, column2, ...]);
134
+ uniqueIndex(column);
135
+ uniqueIndex([column1, column2, ...]);
136
+
137
+
138
+ column.primaryKey()
139
+ column.notNull()
140
+ column.defaultValue(...)
141
+
142
+ // 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT'
143
+ column.foreignKey(Table, (table) => table.column, { onDelete: "CASCADE", onUpdate: "CASCADE" });
283
144
  ```
284
- ##### Delete `user` where phone is `"hello"` returning updated `User` model
145
+
146
+ ### Create Read Update Delete
147
+ Querying, sorting and filtering. We also support partial select.
285
148
  ```typescript
286
- await usersTable.delete()
287
- .where(eq(usersTable.phone, 'hello'))
288
- .findOne();
289
- ```
149
+ const db = await drizzle.connect("...")
150
+ const table = new UsersTable(db);
151
+
152
+ const result: User[] = await table.select().execute();
153
+ await table.select().where(
154
+ eq(table.id, 42)
155
+ ).execute();
156
+
157
+ // you can combine filters with eq(...) or or(...)
158
+ await table.select().where(
159
+ and([eq(table.id, 42), eq(table.name, "Dan")])
160
+ ).execute();
290
161
 
291
- ### **Insert**
162
+ await table.select().where(
163
+ or([eq(table.id, 42), eq(table.id, 1)])
164
+ ).execute();
165
+
166
+ // partial select
167
+ const result = await table.select({
168
+ mapped1: table.id,
169
+ mapped2: table.name,
170
+ }).execute();
171
+ const { mapped1, mapped2 } = result[0];
172
+
173
+ // limit offset & order by
174
+ await table.select().limit(10).offset(10).execute()
175
+ await table.select().orderBy((table) => table.name, Order.ASC)
176
+ await table.select().orderBy((table) => table.name, Order.DESC)
177
+
178
+ // list of all filter operators
179
+ eq(table.column, value)
180
+ notEq(table.column, value)
181
+ less(table.column, value)
182
+ lessEq(table.column, value)
183
+ greater(table.column, value)
184
+ greaterEq(table.column, value)
185
+ isNull(table.column)
186
+ isNotNull(table.column)
187
+
188
+ inArray(table.column, [...values])
189
+ like(table.column, value)
190
+ raw("raw sql filter")
191
+
192
+ and(exressions: Expr[])
193
+ or(exressions: Expr[])
194
+ ```
195
+ Inserting
292
196
  ##### Insert `user` with required fields
293
197
  ```typescript
294
198
  await usersTable.insert({
@@ -298,67 +202,83 @@ await usersTable.insert({
298
202
  ```
299
203
  ##### Insert `user` with required fields and get all rows as array
300
204
  ```typescript
301
- const user = await usersTable.insert({
302
- test: 1,
205
+ const result = await usersTable.insert({
206
+ name: "Andrew",
303
207
  createdAt: new Date(),
304
- }).all();
305
- ```
306
- ##### Insert `user` with required fields and get inserted entity
307
- ```typescript
308
- const user = await usersTable.insert({
309
- test: 1,
208
+ }).execute();
209
+
210
+ const result = await usersTable.insertMany([{
211
+ name: "Andrew",
310
212
  createdAt: new Date(),
311
- }).findOne();
312
- ```
313
- ##### Insert many `users` with required fields and get all inserted entities
314
- ```typescript
315
- const users = await usersTable.insertMany([{
316
- test: 1,
317
- createdAt: new Date(),
318
- }, {
319
- test: 2,
320
- createdAt: new Date(),
321
- }]).all();
213
+ }, {
214
+ name: "Dan",
215
+ createdAt: new Date(),
216
+ }]).execute();
217
+
218
+ //await usersTable.insert({
219
+ // name: "Dan"
220
+ //})
221
+ //.onConflict(
222
+ // (table) => table.name,
223
+ // { name: 'name value to be upserted' }
224
+ //).execute();
322
225
  ```
323
- ##### Insert many `users` with required fields and get all inserted entities. If such user already exists - update `phone` field
226
+
227
+ Update and Delete
324
228
  ```typescript
325
- await usersTable.insertMany([{
326
- test: 1,
327
- createdAt: new Date(),
328
- }, {
329
- test: 2,
330
- createdAt: new Date(),
331
- }])
332
- .onConflict(
333
- (table) => table.phoneIndex,
334
- { phone: 'confilctUpdate' },
335
- ).all();
229
+ await usersTable.update()
230
+ .where(eq(usersTable.name, 'Dan'))
231
+ .set({ name: 'Mr. Dan' })
232
+ .execute();
233
+
234
+ await usersTable.delete()
235
+ .where(eq(usersTable.name, 'Dan'))
236
+ .execute();
336
237
  ```
337
238
 
338
- ## Joins
339
- ### Join One-To-Many Tables
340
- ##### Join Cities with Users and map to city object with full user
239
+ ### Joins
240
+ Last but not least. Probably the most powerful feature in the library🚀
241
+ Many-to-one
341
242
  ```typescript
342
243
  const usersTable = new UsersTable(db);
343
244
  const citiesTable = new CitiesTable(db);
344
245
 
345
- const userWithCities = await citiesTable.select()
346
- .where(eq(citiesTable.id, 1))
347
- .leftJoin(usersTable, (cities, users) => onEq(cities.userId, users.id))
246
+ const result = await citiesTable.select()
247
+ .leftJoin(usersTable, (cities, users) => eq(cities.userId, users.id))
248
+ .where((cities, users) => eq(cities.id, 1))
348
249
  .execute();
349
250
 
350
- const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
251
+ const citiesWithUsers: { city: City, user: User }[] = result.map((city, user) => ({ city, user }));
351
252
  ```
352
-
353
- ### Join Many-To-Many Tables
354
- ##### Join User Groups with Users, using many-to-many table
253
+ Many-to-many
355
254
  ```typescript
356
- const usersWithUserGroups = await usersToUserGroupsTable.select()
357
- .where(eq(userGroupsTable.id, 1))
358
- .leftJoin(usersTable, (usersToUserGroups, users) => onEq(usersToUserGroups.userId, users.id))
359
- .leftJoin(userGroupsTable, (usersToUserGroups, _users, userGroups) => onEq(usersToUserGroups.groupId, userGroups.id))
360
- .execute();
255
+ export class UsersTable extends PgTable<UsersTable> {
256
+ id = this.serial("id").primaryKey();
257
+ name = this.varchar("name");
258
+ }
259
+
260
+ export class ChatGroupsTable extends PgTable<ChatGroupsTable> {
261
+ id = this.serial("id").primaryKey();
262
+ }
263
+
264
+ export class ManyToManyTable extends PgTable<ManyToManyTable> {
265
+ userId = this.int('user_id').foreignKey(UsersTable, (table) => table.id, { onDelete: 'CASCADE' });
266
+ groupId = this.int('group_id').foreignKey(ChatGroupsTable, (table) => table.id, { onDelete: 'CASCADE' });
267
+ }
268
+
269
+ ...
270
+ const usersTable = new UsersTable(db);
271
+ const chatGroupsTable = new ChatGroupsTable(db);
272
+ const manyToManyTable = new ManyToManyTable(db);
273
+
274
+ // querying user group with id 1 and all the participants(users)
275
+ const usersWithUserGroups = await manyToManyTable.select()
276
+ .leftJoin(usersTable, (manyToMany, users) => eq(manyToManyTable.userId, users.id))
277
+ .leftJoin(chatGroupsTable, (manyToMany, _users, chatGroups) => eq(manyToManyTable.groupId, chatGroups.id))
278
+ .where((manyToMany, _users, userGroups) => eq(userGroups.id, 1))
279
+ .execute();
361
280
  ```
281
+
362
282
  ### Join using partial field select
363
283
  ##### Join Cities with Users getting only needed fields form request
364
284
  ```typescript
@@ -366,8 +286,8 @@ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user
366
286
  id: citiesTable.id,
367
287
  userId: citiesTable.userId,
368
288
  })
369
- .where(eq(citiesTable.id, 1))
370
- .leftJoin(usersTable, (cities, users) => onEq(cities.userId, users.id))
289
+ .leftJoin(usersTable, (cities, users) => eq(cities.userId, users.id))
290
+ .where((cities, users) => eq(cities.id, 1))
371
291
  .execute();
372
292
 
373
293
  const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
@@ -375,8 +295,8 @@ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user
375
295
  ### Another join examples with different callback ON statements
376
296
  ```typescript
377
297
  await citiesTable.select()
378
- .where(eq(citiesTable.location, 'q'))
379
298
  .leftJoin(usersTable, (cities, _users) => eq(cities.id, 13))
299
+ .where((cities, _users) => eq(cities.location, 'q'))
380
300
  .execute();
381
301
  // Join statement generated from query
382
302
  // LEFT JOIN users AS users_1
@@ -397,8 +317,8 @@ await citiesTable.select()
397
317
  // Values: [13, 14]
398
318
 
399
319
  await citiesTable.select()
400
- .where(eq(citiesTable.location, 'location'))
401
320
  .leftJoin(usersTable, (_cities, _users) => raw('<custom expression after ON statement>'))
321
+ .where((cities, _users) => eq(cities.location, 'location'))
402
322
  .execute();
403
323
  // Join statement generated from query
404
324
  // LEFT JOIN users AS users_1
@@ -8,4 +8,5 @@ export default class Aggregator {
8
8
  [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>;
9
9
  });
10
10
  protected generateSelectArray: (table: string, columns: AbstractColumn<ColumnType>[], id?: number | undefined) => string[];
11
+ protected generateSelectArrayV1: (table: string, columns: AbstractColumn<ColumnType>[], id?: number | undefined) => string[];
11
12
  }
@@ -23,6 +23,22 @@ class Aggregator {
23
23
  selectFields.pop();
24
24
  return selectFields;
25
25
  };
26
+ this.generateSelectArrayV1 = (table, columns, id) => {
27
+ const selectFields = [];
28
+ columns.forEach((field) => {
29
+ if (field instanceof column_1.Column) {
30
+ selectFields.push(' ');
31
+ selectFields.push(table);
32
+ selectFields.push('.');
33
+ selectFields.push(ecranate_1.ecranate(field.getColumnName()));
34
+ selectFields.push(' AS ');
35
+ selectFields.push(ecranate_1.ecranate(`${field.getAlias()}${id ? `_${id}` : ''}`));
36
+ selectFields.push(',');
37
+ }
38
+ });
39
+ selectFields.pop();
40
+ return selectFields;
41
+ };
26
42
  this._table = table;
27
43
  if (!partial) {
28
44
  this._fields = this.generateSelectArray(this._table.tableName(), Object.values(this._table.mapServiceToDb()));
@@ -33,3 +49,4 @@ class Aggregator {
33
49
  }
34
50
  }
35
51
  exports.default = Aggregator;
52
+ //# sourceMappingURL=abstractAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractAggregator.js","sourceRoot":"","sources":["../../../../src/builders/aggregators/abstractAggregator.ts"],"names":[],"mappings":";;AAAA,4BAA4B;AAC5B,iDAA8D;AAG9D,mDAAgD;AAEhD,mCAAmC;AACnC,MAAqB,UAAU;IAI7B,YAAmB,KAAyB,EAAE,OAAmG;QAHvI,YAAO,GAAkB,EAAE,CAAC;QAc5B,wBAAmB,GAAG,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAW,EAAE,EAAE;YACpG,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC7B,IAAI,KAAK,YAAY,eAAM,EAAE;oBAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACnD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEQ,0BAAqB,GAAG,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAW,EAAE,EAAE;YACtG,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC7B,IAAI,KAAK,YAAY,eAAM,EAAE;oBAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACnD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QA9CA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC3B;IACH,CAAC;CAuCF;AApDD,6BAoDC"}
@@ -40,3 +40,4 @@ class DeleteAggregator extends abstractAggregator_1.default {
40
40
  }
41
41
  }
42
42
  exports.default = DeleteAggregator;
43
+ //# sourceMappingURL=deleteAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteAggregator.js","sourceRoot":"","sources":["../../../../src/builders/aggregators/deleteAggregator.ts"],"names":[],"mappings":";;;;;AAEA,8EAA8C;AAE9C,MAAqB,gBAAiB,SAAQ,4BAAU;IAMtD,YAAmB,KAAyB;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,UAAK,GAAkB,EAAE,CAAC;QAC1B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,YAAO,GAAe,EAAE,CAAC;QACzB,YAAO,GAAkB,CAAC,QAAQ,CAAC,CAAC;QAMrC,YAAO,GAAG,CAAC,OAAa,EAAoB,EAAE;YACnD,IAAI,OAAO,EAAE;gBACX,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;aACnC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,eAAU,GAAG,CAAC,SAAiB,EAAoB,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,eAAU,GAAG,GAA0C,EAAE;YAC9D,4CAA4C;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChE,CAAC,CAAC;IA9BF,CAAC;CA+BF;AAvCD,mCAuCC"}
@@ -107,3 +107,4 @@ class InsertAggregator extends abstractAggregator_1.default {
107
107
  }
108
108
  }
109
109
  exports.default = InsertAggregator;
110
+ //# sourceMappingURL=insertAggregator.js.map