joist-orm 0.1.536 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/build/{BaseEntity.d.ts → src/BaseEntity.d.ts} +2 -1
  2. package/build/{BaseEntity.js → src/BaseEntity.js} +13 -9
  3. package/build/src/BaseEntity.js.map +1 -0
  4. package/build/{EntityManager.d.ts → src/EntityManager.d.ts} +139 -110
  5. package/build/{EntityManager.js → src/EntityManager.js} +281 -262
  6. package/build/src/EntityManager.js.map +1 -0
  7. package/build/{QueryBuilder.d.ts → src/QueryBuilder.d.ts} +53 -3
  8. package/build/src/QueryBuilder.js +341 -0
  9. package/build/src/QueryBuilder.js.map +1 -0
  10. package/build/src/Todo.d.ts +25 -0
  11. package/build/src/Todo.js +52 -0
  12. package/build/src/Todo.js.map +1 -0
  13. package/build/src/changes.d.ts +34 -0
  14. package/build/src/changes.js +37 -0
  15. package/build/src/changes.js.map +1 -0
  16. package/build/src/config.d.ts +43 -0
  17. package/build/src/config.js +114 -0
  18. package/build/src/config.js.map +1 -0
  19. package/build/{createOrUpdatePartial.d.ts → src/createOrUpdatePartial.d.ts} +2 -1
  20. package/build/{createOrUpdatePartial.js → src/createOrUpdatePartial.js} +42 -10
  21. package/build/src/createOrUpdatePartial.js.map +1 -0
  22. package/build/src/dataloaders/findDataLoader.d.ts +5 -0
  23. package/build/src/dataloaders/findDataLoader.js +28 -0
  24. package/build/src/dataloaders/findDataLoader.js.map +1 -0
  25. package/build/src/dataloaders/loadDataLoader.d.ts +3 -0
  26. package/build/src/dataloaders/loadDataLoader.js +37 -0
  27. package/build/src/dataloaders/loadDataLoader.js.map +1 -0
  28. package/build/src/dataloaders/manyToManyDataLoader.d.ts +5 -0
  29. package/build/src/dataloaders/manyToManyDataLoader.js +78 -0
  30. package/build/src/dataloaders/manyToManyDataLoader.js.map +1 -0
  31. package/build/src/dataloaders/manyToManyFindDataLoader.d.ts +5 -0
  32. package/build/src/dataloaders/manyToManyFindDataLoader.js +33 -0
  33. package/build/src/dataloaders/manyToManyFindDataLoader.js.map +1 -0
  34. package/build/src/dataloaders/oneToManyDataLoader.d.ts +4 -0
  35. package/build/src/dataloaders/oneToManyDataLoader.js +40 -0
  36. package/build/src/dataloaders/oneToManyDataLoader.js.map +1 -0
  37. package/build/src/dataloaders/oneToManyFindDataLoader.d.ts +5 -0
  38. package/build/src/dataloaders/oneToManyFindDataLoader.js +32 -0
  39. package/build/src/dataloaders/oneToManyFindDataLoader.js.map +1 -0
  40. package/build/src/dataloaders/oneToOneDataLoader.d.ts +4 -0
  41. package/build/src/dataloaders/oneToOneDataLoader.js +40 -0
  42. package/build/src/dataloaders/oneToOneDataLoader.js.map +1 -0
  43. package/build/src/drivers/IdAssigner.d.ts +33 -0
  44. package/build/src/drivers/IdAssigner.js +106 -0
  45. package/build/src/drivers/IdAssigner.js.map +1 -0
  46. package/build/src/drivers/InMemoryDriver.d.ts +29 -0
  47. package/build/src/drivers/InMemoryDriver.js +306 -0
  48. package/build/src/drivers/InMemoryDriver.js.map +1 -0
  49. package/build/src/drivers/PostgresDriver.d.ts +40 -0
  50. package/build/src/drivers/PostgresDriver.js +376 -0
  51. package/build/src/drivers/PostgresDriver.js.map +1 -0
  52. package/build/src/drivers/driver.d.ts +23 -0
  53. package/build/src/drivers/driver.js +3 -0
  54. package/build/src/drivers/driver.js.map +1 -0
  55. package/build/src/drivers/index.d.ts +4 -0
  56. package/build/src/drivers/index.js +17 -0
  57. package/build/src/drivers/index.js.map +1 -0
  58. package/build/{getProperties.d.ts → src/getProperties.d.ts} +0 -0
  59. package/build/{getProperties.js → src/getProperties.js} +1 -1
  60. package/build/src/getProperties.js.map +1 -0
  61. package/build/src/index.d.ts +62 -0
  62. package/build/src/index.js +263 -0
  63. package/build/src/index.js.map +1 -0
  64. package/build/src/keys.d.ts +30 -0
  65. package/build/{keys.js → src/keys.js} +48 -16
  66. package/build/src/keys.js.map +1 -0
  67. package/build/{loadLens.d.ts → src/loadLens.d.ts} +2 -2
  68. package/build/{loadLens.js → src/loadLens.js} +1 -1
  69. package/build/src/loadLens.js.map +1 -0
  70. package/build/src/loaded.d.ts +49 -0
  71. package/build/src/loaded.js +9 -0
  72. package/build/src/loaded.js.map +1 -0
  73. package/build/{newTestInstance.d.ts → src/newTestInstance.d.ts} +37 -3
  74. package/build/src/newTestInstance.js +342 -0
  75. package/build/src/newTestInstance.js.map +1 -0
  76. package/build/{collections → src/relations}/AbstractRelationImpl.d.ts +6 -5
  77. package/build/{collections → src/relations}/AbstractRelationImpl.js +0 -0
  78. package/build/src/relations/AbstractRelationImpl.js.map +1 -0
  79. package/build/src/relations/Collection.d.ts +26 -0
  80. package/build/src/relations/Collection.js +19 -0
  81. package/build/src/relations/Collection.js.map +1 -0
  82. package/build/{collections → src/relations}/CustomCollection.d.ts +6 -2
  83. package/build/{collections → src/relations}/CustomCollection.js +17 -9
  84. package/build/src/relations/CustomCollection.js.map +1 -0
  85. package/build/{collections → src/relations}/CustomReference.d.ts +7 -2
  86. package/build/{collections → src/relations}/CustomReference.js +16 -9
  87. package/build/src/relations/CustomReference.js.map +1 -0
  88. package/build/src/relations/LargeCollection.d.ts +17 -0
  89. package/build/src/relations/LargeCollection.js +3 -0
  90. package/build/src/relations/LargeCollection.js.map +1 -0
  91. package/build/{collections → src/relations}/ManyToManyCollection.d.ts +9 -2
  92. package/build/src/relations/ManyToManyCollection.js +249 -0
  93. package/build/src/relations/ManyToManyCollection.js.map +1 -0
  94. package/build/src/relations/ManyToManyLargeCollection.d.ts +25 -0
  95. package/build/src/relations/ManyToManyLargeCollection.js +97 -0
  96. package/build/src/relations/ManyToManyLargeCollection.js.map +1 -0
  97. package/build/src/relations/ManyToOneReference.d.ts +77 -0
  98. package/build/{collections → src/relations}/ManyToOneReference.js +101 -48
  99. package/build/src/relations/ManyToOneReference.js.map +1 -0
  100. package/build/{collections → src/relations}/OneToManyCollection.d.ts +10 -2
  101. package/build/{collections → src/relations}/OneToManyCollection.js +54 -59
  102. package/build/src/relations/OneToManyCollection.js.map +1 -0
  103. package/build/src/relations/OneToManyLargeCollection.d.ts +25 -0
  104. package/build/src/relations/OneToManyLargeCollection.js +83 -0
  105. package/build/src/relations/OneToManyLargeCollection.js.map +1 -0
  106. package/build/src/relations/OneToOneReference.d.ts +82 -0
  107. package/build/src/relations/OneToOneReference.js +168 -0
  108. package/build/src/relations/OneToOneReference.js.map +1 -0
  109. package/build/src/relations/PolymorphicReference.d.ts +69 -0
  110. package/build/src/relations/PolymorphicReference.js +210 -0
  111. package/build/src/relations/PolymorphicReference.js.map +1 -0
  112. package/build/src/relations/Reference.d.ts +29 -0
  113. package/build/src/relations/Reference.js +23 -0
  114. package/build/src/relations/Reference.js.map +1 -0
  115. package/build/src/relations/Relation.d.ts +10 -0
  116. package/build/src/relations/Relation.js +13 -0
  117. package/build/src/relations/Relation.js.map +1 -0
  118. package/build/src/relations/hasAsyncProperty.d.ts +36 -0
  119. package/build/src/relations/hasAsyncProperty.js +55 -0
  120. package/build/src/relations/hasAsyncProperty.js.map +1 -0
  121. package/build/{collections → src/relations}/hasManyDerived.d.ts +2 -1
  122. package/build/{collections → src/relations}/hasManyDerived.js +1 -1
  123. package/build/src/relations/hasManyDerived.js.map +1 -0
  124. package/build/{collections → src/relations}/hasManyThrough.d.ts +0 -0
  125. package/build/{collections → src/relations}/hasManyThrough.js +2 -2
  126. package/build/src/relations/hasManyThrough.js.map +1 -0
  127. package/build/{collections → src/relations}/hasOneDerived.d.ts +3 -2
  128. package/build/{collections → src/relations}/hasOneDerived.js +1 -1
  129. package/build/src/relations/hasOneDerived.js.map +1 -0
  130. package/build/{collections → src/relations}/hasOneThrough.d.ts +0 -0
  131. package/build/{collections → src/relations}/hasOneThrough.js +2 -2
  132. package/build/src/relations/hasOneThrough.js.map +1 -0
  133. package/build/src/relations/index.d.ts +18 -0
  134. package/build/src/relations/index.js +53 -0
  135. package/build/src/relations/index.js.map +1 -0
  136. package/build/{reverseHint.d.ts → src/reverseHint.d.ts} +2 -1
  137. package/build/{reverseHint.js → src/reverseHint.js} +13 -9
  138. package/build/src/reverseHint.js.map +1 -0
  139. package/build/src/rules.d.ts +23 -0
  140. package/build/src/rules.js +23 -0
  141. package/build/src/rules.js.map +1 -0
  142. package/build/src/serde.d.ts +121 -0
  143. package/build/src/serde.js +190 -0
  144. package/build/src/serde.js.map +1 -0
  145. package/build/{utils.d.ts → src/utils.d.ts} +2 -0
  146. package/build/{utils.js → src/utils.js} +10 -1
  147. package/build/src/utils.js.map +1 -0
  148. package/build/tsconfig.tsbuildinfo +1 -0
  149. package/package.json +30 -15
  150. package/build/BaseEntity.js.map +0 -1
  151. package/build/EntityManager.js.map +0 -1
  152. package/build/EntityPersister.d.ts +0 -30
  153. package/build/EntityPersister.js +0 -197
  154. package/build/EntityPersister.js.map +0 -1
  155. package/build/QueryBuilder.js +0 -195
  156. package/build/QueryBuilder.js.map +0 -1
  157. package/build/changes.d.ts +0 -23
  158. package/build/changes.js +0 -14
  159. package/build/changes.js.map +0 -1
  160. package/build/collections/AbstractRelationImpl.js.map +0 -1
  161. package/build/collections/CustomCollection.js.map +0 -1
  162. package/build/collections/CustomReference.js.map +0 -1
  163. package/build/collections/ManyToManyCollection.js +0 -288
  164. package/build/collections/ManyToManyCollection.js.map +0 -1
  165. package/build/collections/ManyToOneReference.d.ts +0 -50
  166. package/build/collections/ManyToOneReference.js.map +0 -1
  167. package/build/collections/OneToManyCollection.js.map +0 -1
  168. package/build/collections/OneToOneReference.d.ts +0 -51
  169. package/build/collections/OneToOneReference.js +0 -132
  170. package/build/collections/OneToOneReference.js.map +0 -1
  171. package/build/collections/hasManyDerived.js.map +0 -1
  172. package/build/collections/hasManyThrough.js.map +0 -1
  173. package/build/collections/hasOneDerived.js.map +0 -1
  174. package/build/collections/hasOneThrough.js.map +0 -1
  175. package/build/collections/index.d.ts +0 -19
  176. package/build/collections/index.js +0 -49
  177. package/build/collections/index.js.map +0 -1
  178. package/build/createOrUpdatePartial.js.map +0 -1
  179. package/build/getProperties.js.map +0 -1
  180. package/build/index.d.ts +0 -140
  181. package/build/index.js +0 -278
  182. package/build/index.js.map +0 -1
  183. package/build/keys.d.ts +0 -21
  184. package/build/keys.js.map +0 -1
  185. package/build/loadLens.js.map +0 -1
  186. package/build/newTestInstance.js +0 -153
  187. package/build/newTestInstance.js.map +0 -1
  188. package/build/reverseHint.js.map +0 -1
  189. package/build/serde.d.ts +0 -47
  190. package/build/serde.js +0 -93
  191. package/build/serde.js.map +0 -1
  192. package/build/utils.js.map +0 -1
  193. package/package.json.bak +0 -27
  194. package/src/BaseEntity.ts +0 -104
  195. package/src/EntityManager.ts +0 -1263
  196. package/src/EntityPersister.ts +0 -240
  197. package/src/QueryBuilder.ts +0 -289
  198. package/src/changes.ts +0 -40
  199. package/src/collections/AbstractRelationImpl.ts +0 -28
  200. package/src/collections/CustomCollection.ts +0 -152
  201. package/src/collections/CustomReference.ts +0 -138
  202. package/src/collections/ManyToManyCollection.ts +0 -346
  203. package/src/collections/ManyToOneReference.ts +0 -215
  204. package/src/collections/OneToManyCollection.ts +0 -254
  205. package/src/collections/OneToOneReference.ts +0 -153
  206. package/src/collections/hasManyDerived.ts +0 -29
  207. package/src/collections/hasManyThrough.ts +0 -20
  208. package/src/collections/hasOneDerived.ts +0 -26
  209. package/src/collections/hasOneThrough.ts +0 -20
  210. package/src/collections/index.ts +0 -74
  211. package/src/createOrUpdatePartial.ts +0 -144
  212. package/src/getProperties.ts +0 -27
  213. package/src/index.ts +0 -400
  214. package/src/keys.ts +0 -75
  215. package/src/loadLens.ts +0 -126
  216. package/src/newTestInstance.ts +0 -205
  217. package/src/reverseHint.ts +0 -43
  218. package/src/serde.ts +0 -97
  219. package/src/utils.ts +0 -63
  220. package/tsconfig.json +0 -21
  221. package/tsconfig.tsbuildinfo +0 -2646
@@ -1,197 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sortJoinRows = exports.flushJoinTables = exports.getTodo = exports.sortEntities = exports.flushEntities = void 0;
4
- const index_1 = require("./index");
5
- const utils_1 = require("./utils");
6
- async function flushEntities(knex, todos) {
7
- const updatedAt = new Date();
8
- await assignNewIds(knex, todos);
9
- for await (const todo of Object.values(todos)) {
10
- if (todo) {
11
- const meta = todo.metadata;
12
- if (todo.inserts.length > 0) {
13
- await batchInsert(knex, meta, todo.inserts);
14
- }
15
- if (todo.updates.length > 0) {
16
- todo.updates.forEach((e) => (e.__orm.data["updatedAt"] = updatedAt));
17
- await batchUpdate(knex, meta, todo.updates);
18
- }
19
- if (todo.deletes.length > 0) {
20
- await batchDelete(knex, meta, todo.deletes);
21
- }
22
- }
23
- }
24
- }
25
- exports.flushEntities = flushEntities;
26
- /**
27
- * Assigns all new entities an id directly from their corresponding sequence generator, instead of via INSERTs.
28
- *
29
- * This lets us avoid cyclic issues with some INSERTs having foreign keys to other rows that themselves
30
- * need to first be INSERTed.
31
- */
32
- async function assignNewIds(knex, todos) {
33
- const seqStatements = [];
34
- Object.values(todos).forEach((todo) => {
35
- if (todo.inserts.length > 0) {
36
- const meta = todo.inserts[0].__orm.metadata;
37
- const sequenceName = `${meta.tableName}_id_seq`;
38
- const sql = `select nextval('${sequenceName}') from generate_series(1, ${todo.inserts.length})`;
39
- seqStatements.push(sql);
40
- }
41
- });
42
- if (seqStatements.length > 0) {
43
- // There will be 1 per table; 1 single insert should be fine but we might need to batch for super-large schemas?
44
- const sql = seqStatements.join(" UNION ALL ");
45
- const result = await knex.raw(sql);
46
- let i = 0;
47
- Object.values(todos).forEach((todo) => {
48
- for (const insert of todo.inserts) {
49
- insert.__orm.data["id"] = index_1.keyToString(todo.metadata, result.rows[i++]["nextval"]);
50
- }
51
- });
52
- }
53
- }
54
- async function batchInsert(knex, meta, entities) {
55
- const rows = entities.map((entity) => {
56
- const row = {};
57
- meta.columns.forEach((c) => c.serde.setOnRow(entity.__orm.data, row));
58
- return row;
59
- });
60
- // We don't use the ids that come back from batchInsert b/c we pre-assign ids for both inserts and updates.
61
- // We also use `.transacting` b/c even when `knex` is already a Transaction object,
62
- // `batchInsert` w/o the `transacting` adds savepoints that we don't want/need.
63
- await knex.batchInsert(meta.tableName, rows).transacting(knex);
64
- for (let i = 0; i < entities.length; i++) {
65
- entities[i].__orm.originalData = {};
66
- }
67
- }
68
- // Uses a pg-specific syntax to issue a bulk update
69
- async function batchUpdate(knex, meta, entities) {
70
- // Get the unique set of fields that are changed across all of the entities (of this type) we want to bulk update
71
- const changedFields = new Set();
72
- // Id doesn't change, but we need it for our WHERE clause
73
- changedFields.add("id");
74
- entities.forEach((entity) => {
75
- Object.keys(entity.__orm.originalData).forEach((key) => changedFields.add(key));
76
- });
77
- // Sometimes with derived fields, an instance will be marked as an update, but if the derived field hasn't changed,
78
- // it'll be a noop, so just short-circuit if it looks like that happened, i.e. we have no changed fields.
79
- if (changedFields.size === 1) {
80
- return;
81
- }
82
- // This currently assumes a 1-to-1 field-to-column mapping.
83
- const columns = meta.columns.filter((c) => changedFields.has(c.fieldName));
84
- const bindings = columns.map(() => []);
85
- for (const entity of entities) {
86
- columns.forEach((c, i) => {
87
- var _a;
88
- bindings[i].push((_a = c.serde.getFromEntity(entity.__orm.data)) !== null && _a !== void 0 ? _a : null);
89
- });
90
- }
91
- await knex.raw(cleanSql(`
92
- UPDATE ${meta.tableName}
93
- SET ${columns
94
- .filter((c) => c.columnName !== "id")
95
- .map((c) => `"${c.columnName}" = data."${c.columnName}"`)
96
- .join(", ")}
97
- FROM (select ${columns.map((c) => `unnest(?::${c.dbType}[]) as "${c.columnName}"`).join(", ")}) as data
98
- WHERE ${meta.tableName}.id = data.id
99
- `), bindings);
100
- entities.forEach((entity) => (entity.__orm.originalData = {}));
101
- }
102
- async function batchDelete(knex, meta, entities) {
103
- await knex(meta.tableName)
104
- .del()
105
- .whereIn("id", entities.map((e) => index_1.keyToNumber(meta, e.id).toString()));
106
- entities.forEach((entity) => (entity.__orm.deleted = "deleted"));
107
- }
108
- function cleanSql(sql) {
109
- return sql.trim().replace(/\n/g, "").replace(/ +/g, " ");
110
- }
111
- /**
112
- * Scans `entities` for new/updated entities and arranges them per-type in entity order.
113
- *
114
- * This currently assumes the entity types in the schema can be topographically sorted
115
- * and have no cycles, i.e. `books` always depend on `authors` (due to the `books.author_id`
116
- * foreign key), but `authors` never (via a required foreign key) depend on `books`.
117
- */
118
- function sortEntities(entities) {
119
- const todos = {};
120
- for (const entity of entities) {
121
- if (entity.isPendingFlush) {
122
- const todo = getTodo(todos, entity);
123
- if (entity.isPendingDelete) {
124
- todo.deletes.push(entity);
125
- }
126
- else if (entity.isNewEntity) {
127
- todo.inserts.push(entity);
128
- }
129
- else {
130
- todo.updates.push(entity);
131
- }
132
- }
133
- }
134
- return todos;
135
- }
136
- exports.sortEntities = sortEntities;
137
- /** getOrSets a `Todo` for `entity` in `todos`. */
138
- function getTodo(todos, entity) {
139
- const meta = index_1.getMetadata(entity);
140
- let todo = todos[meta.type];
141
- if (!todo) {
142
- todo = { metadata: entity.__orm.metadata, inserts: [], updates: [], deletes: [], validates: [] };
143
- todos[meta.type] = todo;
144
- }
145
- return todo;
146
- }
147
- exports.getTodo = getTodo;
148
- async function flushJoinTables(knex, joinRows) {
149
- for await (const [joinTableName, { m2m, newRows, deletedRows }] of Object.entries(joinRows)) {
150
- if (newRows.length > 0) {
151
- const ids = await knex
152
- .batchInsert(joinTableName, newRows.map((row) => {
153
- // The rows in EntityManager.joinRows point to entities, change those to ints
154
- const { id, created_at, m2m, ...fkColumns } = row;
155
- Object.keys(fkColumns).forEach((key) => {
156
- const meta = key == m2m.columnName ? index_1.getMetadata(m2m.entity) : m2m.otherMeta;
157
- fkColumns[key] = index_1.keyToNumber(meta, index_1.maybeResolveReferenceToId(fkColumns[key]));
158
- });
159
- return fkColumns;
160
- }))
161
- .returning("id");
162
- for (let i = 0; i < ids.length; i++) {
163
- newRows[i].id = ids[i];
164
- }
165
- }
166
- if (deletedRows.length > 0) {
167
- // `remove`s that were done against unloaded ManyToManyCollections will not have row ids
168
- const [haveIds, noIds] = utils_1.partition(deletedRows, (r) => r.id !== -1);
169
- if (haveIds.length > 0) {
170
- await knex(joinTableName)
171
- .del()
172
- .whereIn("id", haveIds.map((e) => e.id));
173
- }
174
- if (noIds.length > 0) {
175
- const data = noIds.map((e) => [
176
- index_1.deTagIds(m2m.meta, [index_1.maybeResolveReferenceToId(e[m2m.columnName])])[0],
177
- index_1.deTagIds(m2m.otherMeta, [index_1.maybeResolveReferenceToId(e[m2m.otherColumnName])])[0],
178
- ]);
179
- await knex(joinTableName).del().whereIn([m2m.columnName, m2m.otherColumnName], data);
180
- }
181
- }
182
- }
183
- }
184
- exports.flushJoinTables = flushJoinTables;
185
- function sortJoinRows(joinRows) {
186
- const todos = {};
187
- for (const [joinTableName, rows] of Object.entries(joinRows)) {
188
- const newRows = rows.filter((r) => r.id === undefined && r.deleted !== true);
189
- const deletedRows = rows.filter((r) => r.id !== undefined && r.deleted === true);
190
- if (newRows.length > 0 || deletedRows.length > 0) {
191
- todos[joinTableName] = { newRows, deletedRows, m2m: rows[0].m2m };
192
- }
193
- }
194
- return todos;
195
- }
196
- exports.sortJoinRows = sortJoinRows;
197
- //# sourceMappingURL=EntityPersister.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityPersister.js","sourceRoot":"","sources":["../src/EntityPersister.ts"],"names":[],"mappings":";;;AAEA,mCAQiB;AACjB,mCAAoC;AAW7B,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,KAA2B;IACzE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC7C,IAAI,IAAI,EAAE;YACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gBACrE,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7C;SACF;KACF;AACH,CAAC;AAlBD,sCAkBC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,IAAU,EAAE,KAA2B;IACjE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC5C,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC;YAChD,MAAM,GAAG,GAAG,mBAAmB,YAAY,8BAA8B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAChG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,gHAAgH;QAChH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;aACpF;QACH,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,IAAyB,EAAE,QAAkB;IAClF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACH,2GAA2G;IAC3G,mFAAmF;IACnF,+EAA+E;IAC/E,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,IAAW,CAAC,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;KACrC;AACH,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,IAAyB,EAAE,QAAkB;IAClF,iHAAiH;IACjH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,yDAAyD;IACzD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,mHAAmH;IACnH,yGAAyG;IACzG,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;QAC5B,OAAO;KACR;IAED,2DAA2D;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;YACvB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,OAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;KACJ;IACD,MAAM,IAAI,CAAC,GAAG,CACZ,QAAQ,CAAC;eACE,IAAI,CAAC,SAAS;YACjB,OAAO;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC,UAAU,GAAG,CAAC;SACxD,IAAI,CAAC,IAAI,CAAC;qBACE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;cACrF,IAAI,CAAC,SAAS;IACxB,CAAC,EACD,QAAQ,CACT,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,IAAyB,EAAE,QAAkB;IAClF,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;SACvB,GAAG,EAAE;SACL,OAAO,CACN,IAAI,EACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CACzD,CAAC;IACJ,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,QAAkB;IAC7C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM,IAAI,MAAM,CAAC,WAAW,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,oCAeC;AAED,kDAAkD;AAClD,SAAgB,OAAO,CAAC,KAA2B,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,mBAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACjG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,0BAQC;AAEM,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,QAAqC;IACrF,IAAI,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,IAAI;iBACnB,WAAW,CACV,aAAa,EACb,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClB,6EAA6E;gBAC7E,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACrC,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC7E,SAAS,CAAC,GAAG,CAAC,GAAG,mBAAW,CAAC,IAAI,EAAE,iCAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC,CACH;iBACA,SAAS,CAAC,IAAI,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,wFAAwF;YACxF,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,iBAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAEpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,MAAM,IAAI,CAAC,aAAa,CAAC;qBACtB,GAAG,EAAE;qBACL,OAAO,CACN,IAAI,EACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC,CAC1B,CAAC;aACL;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CACpB,CAAC,CAAC,EAAE,EAAE,CACJ;oBACE,gBAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,iCAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,gBAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,iCAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1E,CACX,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;aACtF;SACF;KACF;AACH,CAAC;AA9CD,0CA8CC;AASD,SAAgB,YAAY,CAAC,QAAmC;IAC9D,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACnE;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,oCAUC"}
@@ -1,195 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildQuery = void 0;
4
- const EntityManager_1 = require("./EntityManager");
5
- const serde_1 = require("./serde");
6
- const utils_1 = require("./utils");
7
- const operators = ["eq", "gt", "gte", "ne", "lt", "lte", "like", "ilike", "in"];
8
- const opToFn = {
9
- eq: "=",
10
- gt: ">",
11
- gte: ">=",
12
- ne: "!=",
13
- lt: "<",
14
- lte: "<=",
15
- like: "LIKE",
16
- ilike: "ILIKE",
17
- in: "...",
18
- };
19
- /**
20
- * Builds the SQL/knex queries for `EntityManager.find` calls.
21
- *
22
- * Note this is generally for our own internal implementation details and not meant to
23
- * be a user-facing QueryBuilder, i.e. users should use Knex for that and just use SQL
24
- * directly (for any non-trivial queries that `EntityManager.find` does not support).
25
- */
26
- function buildQuery(knex, type, filter) {
27
- const meta = EntityManager_1.getMetadata(type);
28
- const { where, orderBy, limit, offset } = filter;
29
- const aliases = {};
30
- function getAlias(tableName) {
31
- const abbrev = abbreviation(tableName);
32
- const i = aliases[abbrev] || 0;
33
- aliases[abbrev] = i + 1;
34
- return `${abbrev}${i}`;
35
- }
36
- const alias = getAlias(meta.tableName);
37
- let query = knex.select(`${alias}.*`).from(`${meta.tableName} AS ${alias}`);
38
- // Define a function for recursively adding joins & filters
39
- function addClauses(meta, alias, where, orderBy) {
40
- // Combine the where and orderBy keys so that we can add them to aliases as that same time
41
- const keys = [...(where ? Object.keys(where) : []), ...(orderBy ? Object.keys(orderBy) : [])];
42
- keys.forEach((key) => {
43
- const column = meta.columns.find((c) => c.fieldName === key) || utils_1.fail(`${key} not found`);
44
- // We may/may not have a where clause or orderBy for this key, but we should have at least one of them.
45
- const clause = where && where[key];
46
- const hasClause = where && key in where;
47
- const order = orderBy && orderBy[key];
48
- const hasOrder = !!order;
49
- if (column.serde instanceof serde_1.ForeignKeySerde) {
50
- // Add `otherTable.column = ...` clause, unless `key` is not in `where`, i.e. there is only an orderBy for this fk
51
- let [whereNeedsJoin, _query] = hasClause ? addForeignKeyClause(query, alias, column, clause) : [false, query];
52
- query = _query;
53
- if (whereNeedsJoin || hasOrder) {
54
- // Add a join for this column
55
- const otherMeta = column.serde.otherMeta();
56
- const otherAlias = getAlias(otherMeta.tableName);
57
- query = query.innerJoin(`${otherMeta.tableName} AS ${otherAlias}`, `${alias}.${column.columnName}`, `${otherAlias}.id`);
58
- // Then recurse to add its conditions to the query
59
- addClauses(otherMeta, otherAlias, whereNeedsJoin ? clause : undefined, hasOrder ? order : undefined);
60
- }
61
- }
62
- else {
63
- query = hasClause ? addPrimitiveClause(query, alias, column, clause) : query;
64
- // This is not a foreign key column, so it'll have the primitive filters/order bys
65
- if (order) {
66
- query = query.orderBy(`${alias}.${column.columnName}`, order);
67
- }
68
- }
69
- });
70
- }
71
- addClauses(meta, alias, where, orderBy);
72
- // Even if they already added orders, add id as the last one to get deterministic output
73
- query = query.orderBy(`${alias}.id`);
74
- query = query.limit(limit || EntityManager_1.entityLimit);
75
- if (offset) {
76
- query = query.offset(offset);
77
- }
78
- return query;
79
- }
80
- exports.buildQuery = buildQuery;
81
- function abbreviation(tableName) {
82
- return tableName
83
- .split("_")
84
- .map((w) => w[0])
85
- .join("");
86
- }
87
- function addForeignKeyClause(query, alias, column, clause) {
88
- // I.e. this could be { authorFk: authorEntity | null | id | { ...recurse... } }
89
- const clauseKeys = typeof clause === "object" && clause !== null ? Object.keys(clause) : [];
90
- if (EntityManager_1.isEntity(clause) || typeof clause == "string" || Array.isArray(clause)) {
91
- // I.e. { authorFk: authorEntity | id | id[] }
92
- if (EntityManager_1.isEntity(clause) && clause.id === undefined) {
93
- // The user is filtering on an unsaved entity, which will just never have any rows, so throw in -1
94
- return [false, query.where(`${alias}.${column.columnName}`, -1)];
95
- }
96
- else if (Array.isArray(clause)) {
97
- return [
98
- false,
99
- query.whereIn(`${alias}.${column.columnName}`, clause.map((id) => column.serde.mapToDb(id))),
100
- ];
101
- }
102
- else {
103
- return [false, query.where(`${alias}.${column.columnName}`, column.serde.mapToDb(clause))];
104
- }
105
- }
106
- else if (clause === null || clause === undefined) {
107
- // I.e. { authorFk: null | undefined }
108
- return [false, query.whereNull(`${alias}.${column.columnName}`)];
109
- }
110
- else if (clauseKeys.length === 1 && clauseKeys[0] === "id") {
111
- // I.e. { authorFk: { id: string } } || { authorFk: { id: string[] } }
112
- // If only querying on the id, we can skip the join
113
- const value = clause["id"];
114
- if (Array.isArray(value)) {
115
- return [
116
- false,
117
- query.whereIn(`${alias}.${column.columnName}`, value.map((id) => column.serde.mapToDb(id))),
118
- ];
119
- }
120
- else {
121
- return [false, query.where(`${alias}.${column.columnName}`, column.serde.mapToDb(value))];
122
- }
123
- }
124
- else if (clauseKeys.length === 1 && clauseKeys[0] === "ne") {
125
- // I.e. { authorFk: { ne: string | null | undefined } }
126
- const value = clause["ne"];
127
- if (value === null || value === undefined) {
128
- return [false, query.whereNotNull(`${alias}.${column.columnName}`)];
129
- }
130
- else if (typeof value === "string") {
131
- return [false, query.whereNot(`${alias}.${column.columnName}`, column.serde.mapToDb(value))];
132
- }
133
- else {
134
- throw new Error("Not implemented");
135
- }
136
- }
137
- else {
138
- // I.e. { authorFk: { ...authorFilter... } }
139
- return [clause !== undefined, query];
140
- }
141
- }
142
- function addPrimitiveClause(query, alias, column, clause) {
143
- if (clause && typeof clause === "object" && operators.find((op) => Object.keys(clause).includes(op))) {
144
- // I.e. `{ primitiveField: { gt: value } }`
145
- const op = Object.keys(clause)[0];
146
- return addPrimitiveOperator(query, alias, column, op, clause[op]);
147
- }
148
- else if (clause && typeof clause === "object" && "op" in clause) {
149
- // I.e. { primitiveField: { op: "gt", value: 1 } }`
150
- return addPrimitiveOperator(query, alias, column, clause.op, clause.value);
151
- }
152
- else if (Array.isArray(clause)) {
153
- // I.e. `{ primitiveField: value[] }`
154
- return query.whereIn(`${alias}.${column.columnName}`, clause.map((v) => column.serde.mapToDb(v)));
155
- }
156
- else if (clause === null) {
157
- // I.e. `{ primitiveField: null }`
158
- return query.whereNull(`${alias}.${column.columnName}`);
159
- }
160
- else if (clause === undefined) {
161
- // I.e. `{ primitiveField: undefined }`
162
- // Currently we treat this like a partial filter, i.e. don't include it. Seems odd
163
- // unless this is opt-in, i.e. maybe only do this for `findGql`?
164
- return query;
165
- }
166
- else if (clause !== undefined) {
167
- // I.e. `{ primitiveField: value }`
168
- // TODO In theory could add a addToQuery method to Serde to generalize this to multi-columns fields.
169
- return query.where(`${alias}.${column.columnName}`, column.serde.mapToDb(clause));
170
- }
171
- else {
172
- return utils_1.fail(`Unhandled primitive clause ${clause}`);
173
- }
174
- }
175
- function addPrimitiveOperator(query, alias, column, op, value) {
176
- if (value === null || value === undefined) {
177
- if (op === "ne") {
178
- return query.whereNotNull(`${alias}.${column.columnName}`);
179
- }
180
- else if (op === "eq") {
181
- return query.whereNull(`${alias}.${column.columnName}`);
182
- }
183
- else {
184
- throw new Error("Only ne is supported when the value is undefined or null");
185
- }
186
- }
187
- else if (op === "in") {
188
- return query.whereIn(`${alias}.${column.columnName}`, value.map((v) => column.serde.mapToDb(v)));
189
- }
190
- else {
191
- const fn = opToFn[op] || utils_1.fail(`Invalid operator ${op}`);
192
- return query.where(`${alias}.${column.columnName}`, fn, column.serde.mapToDb(value));
193
- }
194
- }
195
- //# sourceMappingURL=QueryBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../src/QueryBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { Entity, IdOf, OptsOf } from "./EntityManager";
2
- /** Exposes a field's changed/original value in each entity's `this.changes` property. */
3
- export interface FieldStatus<T> {
4
- hasChanged: boolean;
5
- originalValue?: T;
6
- }
7
- declare type NullOrDefinedOr<T> = T | null | undefined;
8
- declare type ExcludeNever<T> = Pick<T, {
9
- [P in keyof T]: T[P] extends never ? never : P;
10
- }[keyof T]>;
11
- /**
12
- * Creates the `this.changes.firstName` changes API for a given entity `T`.
13
- *
14
- * Specifically we use the fields from OptsOf but:
15
- *
16
- * - Exclude collections
17
- * - Convert entity types to id types to match what is stored in originalData
18
- */
19
- export declare type Changes<T extends Entity> = ExcludeNever<{
20
- [P in keyof OptsOf<T>]-?: OptsOf<T>[P] extends NullOrDefinedOr<infer U> ? U extends Array<any> ? never : U extends Entity ? FieldStatus<IdOf<U>> : FieldStatus<U> : never;
21
- }>;
22
- export declare function newChangesProxy<T extends Entity>(entity: T): Changes<T>;
23
- export {};
package/build/changes.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newChangesProxy = void 0;
4
- function newChangesProxy(entity) {
5
- return new Proxy(entity, {
6
- get(target, p) {
7
- const originalValue = typeof p === "string" && entity.__orm.originalData[p];
8
- const hasChanged = typeof p === "string" && p in entity.__orm.originalData && entity.id !== undefined;
9
- return { hasChanged, originalValue };
10
- },
11
- });
12
- }
13
- exports.newChangesProxy = newChangesProxy;
14
- //# sourceMappingURL=changes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":";;;AA+BA,SAAgB,eAAe,CAAmB,MAAS;IACzD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,CAAc;YACxB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC;YACtG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACvC,CAAC;KACF,CAAQ,CAAC;AACZ,CAAC;AARD,0CAQC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractRelationImpl.js","sourceRoot":"","sources":["../../src/collections/AbstractRelationImpl.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAsB,oBAAoB;CAwBzC;AAxBD,oDAwBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomCollection.js","sourceRoot":"","sources":["../../src/collections/CustomCollection.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomReference.js","sourceRoot":"","sources":["../../src/collections/CustomReference.ts"],"names":[],"mappings":"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"}