@payloadcms/drizzle 4.0.0-internal.fa345ef → 4.0.0-internal.fec2230
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.
- package/dist/createTableName.d.ts.map +1 -1
- package/dist/createTableName.js +2 -7
- package/dist/createTableName.js.map +1 -1
- package/dist/exports/postgres.d.ts +2 -0
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +2 -0
- package/dist/exports/postgres.js.map +1 -1
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +35 -13
- package/dist/migrate.js.map +1 -1
- package/dist/migrateDown.d.ts +2 -1
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +12 -2
- package/dist/migrateDown.js.map +1 -1
- package/dist/migrateFresh.d.ts +4 -2
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +21 -7
- package/dist/migrateFresh.js.map +1 -1
- package/dist/migrateRefresh.d.ts +2 -1
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +14 -3
- package/dist/migrateRefresh.js.map +1 -1
- package/dist/migrateReset.d.ts +2 -1
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +12 -2
- package/dist/migrateReset.js.map +1 -1
- package/dist/migrateStatus.d.ts +2 -1
- package/dist/migrateStatus.d.ts.map +1 -1
- package/dist/migrateStatus.js +11 -6
- package/dist/migrateStatus.js.map +1 -1
- package/dist/postgres/createDatabase.d.ts.map +1 -1
- package/dist/postgres/createExtensions.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
- package/dist/postgres/init.d.ts.map +1 -1
- package/dist/postgres/init.js +6 -0
- package/dist/postgres/init.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js +91 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js.map +1 -0
- package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
- package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
- package/dist/postgres/query/postgresUnaccent.js +40 -0
- package/dist/postgres/query/postgresUnaccent.js.map +1 -0
- package/dist/postgres/query/postgresUnaccent.spec.js +71 -0
- package/dist/postgres/query/postgresUnaccent.spec.js.map +1 -0
- package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
- package/dist/postgres/schema/geometryColumn.d.ts +2 -2
- package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
- package/dist/postgres/types.d.ts +13 -2
- package/dist/postgres/types.d.ts.map +1 -1
- package/dist/postgres/types.js.map +1 -1
- package/dist/queries/addJoinTable.d.ts +1 -1
- package/dist/queries/addJoinTable.d.ts.map +1 -1
- package/dist/queries/buildOperatorConstraint.d.ts +22 -0
- package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
- package/dist/queries/buildOperatorConstraint.js +63 -0
- package/dist/queries/buildOperatorConstraint.js.map +1 -0
- package/dist/queries/buildOperatorConstraint.spec.js +348 -0
- package/dist/queries/buildOperatorConstraint.spec.js.map +1 -0
- package/dist/queries/buildOrderBy.d.ts +1 -1
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/getTableAlias.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +12 -3
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +50 -27
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/operatorMap.d.ts +7 -3
- package/dist/queries/operatorMap.d.ts.map +1 -1
- package/dist/queries/operatorMap.js.map +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +203 -8
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/resolveRelationshipPath.d.ts +36 -0
- package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
- package/dist/queries/resolveRelationshipPath.js +66 -0
- package/dist/queries/resolveRelationshipPath.js.map +1 -0
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/selectDistinct.d.ts.map +1 -1
- package/dist/queries/validateOperatorHandlers.d.ts +8 -0
- package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
- package/dist/queries/validateOperatorHandlers.js +30 -0
- package/dist/queries/validateOperatorHandlers.js.map +1 -0
- package/dist/queries/validateOperatorHandlers.spec.js +142 -0
- package/dist/queries/validateOperatorHandlers.spec.js.map +1 -0
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
- package/dist/schema/buildRawSchema.d.ts.map +1 -1
- package/dist/schema/buildRawSchema.spec.js +290 -0
- package/dist/schema/buildRawSchema.spec.js.map +1 -0
- package/dist/schema/idToUUID.d.ts.map +1 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +6 -5
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/schema/withDefault.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
- package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/index.d.ts.map +1 -1
- package/dist/transform/read/relationship.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/numbers.d.ts.map +1 -1
- package/dist/transform/write/relationships.d.ts.map +1 -1
- package/dist/transform/write/selects.d.ts.map +1 -1
- package/dist/transform/write/texts.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +3 -0
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/types.d.ts +50 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +37 -0
- package/dist/updateJobs.js.map +1 -1
- package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
- package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.js +2 -1
- package/dist/upsertRow/insertArrays.js.map +1 -1
- package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
- package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
- package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.js +12 -8
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
- package/dist/utilities/buildForeignKeyName.js +3 -2
- package/dist/utilities/buildForeignKeyName.js.map +1 -1
- package/dist/utilities/buildIndexName.d.ts.map +1 -1
- package/dist/utilities/buildIndexName.js +3 -2
- package/dist/utilities/buildIndexName.js.map +1 -1
- package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
- package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
- package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
- package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
- package/dist/utilities/checkTruncatedIdentifiers.spec.js +301 -0
- package/dist/utilities/checkTruncatedIdentifiers.spec.js.map +1 -0
- package/dist/utilities/createBlocksMap.d.ts.map +1 -1
- package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
- package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
- package/dist/utilities/createSchemaGenerator.js +3 -0
- package/dist/utilities/createSchemaGenerator.js.map +1 -1
- package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
- package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
- package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
- package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
- package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
- package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
- package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
- package/dist/utilities/getPrimaryDb.d.ts +1 -1
- package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
- package/dist/utilities/getTransaction.d.ts +1 -1
- package/dist/utilities/getTransaction.d.ts.map +1 -1
- package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
- package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
- package/dist/utilities/isUUIDType.d.ts.map +1 -1
- package/dist/utilities/json.d.ts.map +1 -1
- package/dist/utilities/migrationTableExists.d.ts.map +1 -1
- package/dist/utilities/parseError.d.ts.map +1 -1
- package/dist/utilities/pushDevSchema.d.ts.map +1 -1
- package/dist/utilities/rawConstraint.d.ts.map +1 -1
- package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
- package/dist/utilities/validateIdentifierLength.d.ts +12 -0
- package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
- package/dist/utilities/validateIdentifierLength.js +18 -0
- package/dist/utilities/validateIdentifierLength.js.map +1 -0
- package/dist/utilities/validateIdentifierLength.spec.js +19 -0
- package/dist/utilities/validateIdentifierLength.spec.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { buildOperatorConstraint } from './buildOperatorConstraint.js';
|
|
4
|
+
const textField = {
|
|
5
|
+
name: 'title',
|
|
6
|
+
type: 'text'
|
|
7
|
+
};
|
|
8
|
+
const numberField = {
|
|
9
|
+
name: 'age',
|
|
10
|
+
type: 'number'
|
|
11
|
+
};
|
|
12
|
+
describe('buildOperatorConstraint', ()=>{
|
|
13
|
+
it('calls the default operator unchanged when no handlers are configured', ()=>{
|
|
14
|
+
const sentinel = sql`sentinel`;
|
|
15
|
+
const containsOperator = vi.fn().mockReturnValue(sentinel);
|
|
16
|
+
const adapter = {
|
|
17
|
+
operatorHandlers: [],
|
|
18
|
+
operators: {
|
|
19
|
+
contains: containsOperator
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const column = 'col';
|
|
23
|
+
const result = buildOperatorConstraint({
|
|
24
|
+
adapter,
|
|
25
|
+
column,
|
|
26
|
+
field: textField,
|
|
27
|
+
originalOperator: 'contains',
|
|
28
|
+
path: 'title',
|
|
29
|
+
resolvedOperator: 'contains',
|
|
30
|
+
value: 'acido'
|
|
31
|
+
});
|
|
32
|
+
expect(containsOperator).toHaveBeenCalledWith(column, 'acido');
|
|
33
|
+
expect(result).toBe(sentinel);
|
|
34
|
+
});
|
|
35
|
+
it('applies operand-transform handlers in configuration order before the default operator runs', ()=>{
|
|
36
|
+
const calls = [];
|
|
37
|
+
const containsOperator = vi.fn(()=>sql`result`);
|
|
38
|
+
const handlerA = {
|
|
39
|
+
name: 'handler-a',
|
|
40
|
+
operators: [
|
|
41
|
+
'contains'
|
|
42
|
+
],
|
|
43
|
+
transformOperands: ({ column, value })=>{
|
|
44
|
+
calls.push('a');
|
|
45
|
+
return {
|
|
46
|
+
column: `${column}-a`,
|
|
47
|
+
value: `${value}-a`
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const handlerB = {
|
|
52
|
+
name: 'handler-b',
|
|
53
|
+
operators: [
|
|
54
|
+
'contains'
|
|
55
|
+
],
|
|
56
|
+
transformOperands: ({ column, value })=>{
|
|
57
|
+
calls.push('b');
|
|
58
|
+
return {
|
|
59
|
+
column: `${column}-b`,
|
|
60
|
+
value: `${value}-b`
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const adapter = {
|
|
65
|
+
operatorHandlers: [
|
|
66
|
+
handlerA,
|
|
67
|
+
handlerB
|
|
68
|
+
],
|
|
69
|
+
operators: {
|
|
70
|
+
contains: containsOperator
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
buildOperatorConstraint({
|
|
74
|
+
adapter,
|
|
75
|
+
column: 'base-column',
|
|
76
|
+
field: textField,
|
|
77
|
+
originalOperator: 'contains',
|
|
78
|
+
path: 'title',
|
|
79
|
+
resolvedOperator: 'contains',
|
|
80
|
+
value: 'acido'
|
|
81
|
+
});
|
|
82
|
+
expect(calls).toEqual([
|
|
83
|
+
'a',
|
|
84
|
+
'b'
|
|
85
|
+
]);
|
|
86
|
+
expect(containsOperator).toHaveBeenCalledWith('base-column-a-b', 'acido-a-b');
|
|
87
|
+
});
|
|
88
|
+
it('skips a handler whose operators list excludes the resolved operator', ()=>{
|
|
89
|
+
const transformOperands = vi.fn(({ column, value })=>({
|
|
90
|
+
column,
|
|
91
|
+
value
|
|
92
|
+
}));
|
|
93
|
+
const adapter = {
|
|
94
|
+
operatorHandlers: [
|
|
95
|
+
{
|
|
96
|
+
name: 'like-only',
|
|
97
|
+
operators: [
|
|
98
|
+
'like'
|
|
99
|
+
],
|
|
100
|
+
transformOperands
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
operators: {
|
|
104
|
+
contains: vi.fn(()=>sql`result`)
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
buildOperatorConstraint({
|
|
108
|
+
adapter,
|
|
109
|
+
column: 'col',
|
|
110
|
+
field: textField,
|
|
111
|
+
originalOperator: 'contains',
|
|
112
|
+
path: 'title',
|
|
113
|
+
resolvedOperator: 'contains',
|
|
114
|
+
value: 'acido'
|
|
115
|
+
});
|
|
116
|
+
expect(transformOperands).not.toHaveBeenCalled();
|
|
117
|
+
});
|
|
118
|
+
it("skips a handler whose fieldTypes excludes the field's type even when operators matches", ()=>{
|
|
119
|
+
const transformOperands = vi.fn(({ column, value })=>({
|
|
120
|
+
column,
|
|
121
|
+
value
|
|
122
|
+
}));
|
|
123
|
+
const adapter = {
|
|
124
|
+
operatorHandlers: [
|
|
125
|
+
{
|
|
126
|
+
name: 'text-only',
|
|
127
|
+
operators: [
|
|
128
|
+
'contains'
|
|
129
|
+
],
|
|
130
|
+
fieldTypes: [
|
|
131
|
+
'text'
|
|
132
|
+
],
|
|
133
|
+
transformOperands
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
operators: {
|
|
137
|
+
contains: vi.fn(()=>sql`result`)
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
buildOperatorConstraint({
|
|
141
|
+
adapter,
|
|
142
|
+
column: 'col',
|
|
143
|
+
field: numberField,
|
|
144
|
+
originalOperator: 'contains',
|
|
145
|
+
path: 'age',
|
|
146
|
+
resolvedOperator: 'contains',
|
|
147
|
+
value: 5
|
|
148
|
+
});
|
|
149
|
+
expect(transformOperands).not.toHaveBeenCalled();
|
|
150
|
+
});
|
|
151
|
+
it('runs a handler with no fieldTypes for every field type', ()=>{
|
|
152
|
+
const transformOperands = vi.fn(({ column, value })=>({
|
|
153
|
+
column,
|
|
154
|
+
value
|
|
155
|
+
}));
|
|
156
|
+
const adapter = {
|
|
157
|
+
operatorHandlers: [
|
|
158
|
+
{
|
|
159
|
+
name: 'universal',
|
|
160
|
+
operators: [
|
|
161
|
+
'contains'
|
|
162
|
+
],
|
|
163
|
+
transformOperands
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
operators: {
|
|
167
|
+
contains: vi.fn(()=>sql`result`)
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
buildOperatorConstraint({
|
|
171
|
+
adapter,
|
|
172
|
+
column: 'col',
|
|
173
|
+
field: numberField,
|
|
174
|
+
originalOperator: 'contains',
|
|
175
|
+
path: 'age',
|
|
176
|
+
resolvedOperator: 'contains',
|
|
177
|
+
value: 5
|
|
178
|
+
});
|
|
179
|
+
expect(transformOperands).toHaveBeenCalled();
|
|
180
|
+
});
|
|
181
|
+
it('gives a single matching replacement handler the operands after every transform has run, and uses its result instead of the default operator', ()=>{
|
|
182
|
+
const containsOperator = vi.fn();
|
|
183
|
+
const sentinel = sql`replacement`;
|
|
184
|
+
const build = vi.fn().mockReturnValue(sentinel);
|
|
185
|
+
const transformOperands = vi.fn(({ column, value })=>({
|
|
186
|
+
column: `${column}-t`,
|
|
187
|
+
value: `${value}-t`
|
|
188
|
+
}));
|
|
189
|
+
const adapter = {
|
|
190
|
+
operatorHandlers: [
|
|
191
|
+
{
|
|
192
|
+
name: 'transform',
|
|
193
|
+
operators: [
|
|
194
|
+
'contains'
|
|
195
|
+
],
|
|
196
|
+
transformOperands
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'replace',
|
|
200
|
+
operators: [
|
|
201
|
+
'contains'
|
|
202
|
+
],
|
|
203
|
+
build
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
operators: {
|
|
207
|
+
contains: containsOperator
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
const result = buildOperatorConstraint({
|
|
211
|
+
adapter,
|
|
212
|
+
column: 'col',
|
|
213
|
+
field: textField,
|
|
214
|
+
originalOperator: 'contains',
|
|
215
|
+
path: 'title',
|
|
216
|
+
resolvedOperator: 'contains',
|
|
217
|
+
value: 'acido'
|
|
218
|
+
});
|
|
219
|
+
expect(build).toHaveBeenCalledWith(expect.objectContaining({
|
|
220
|
+
column: 'col-t',
|
|
221
|
+
value: 'acido-t'
|
|
222
|
+
}));
|
|
223
|
+
expect(containsOperator).not.toHaveBeenCalled();
|
|
224
|
+
expect(result).toBe(sentinel);
|
|
225
|
+
});
|
|
226
|
+
it('passes originalOperator, resolvedOperator, field, path, and locale to handlers', ()=>{
|
|
227
|
+
let capturedContext;
|
|
228
|
+
const transformOperands = vi.fn((context)=>{
|
|
229
|
+
capturedContext = context;
|
|
230
|
+
return {
|
|
231
|
+
column: context.column,
|
|
232
|
+
value: context.value
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
const adapter = {
|
|
236
|
+
operatorHandlers: [
|
|
237
|
+
{
|
|
238
|
+
name: 'observe',
|
|
239
|
+
operators: [
|
|
240
|
+
'like'
|
|
241
|
+
],
|
|
242
|
+
transformOperands
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
operators: {
|
|
246
|
+
like: vi.fn(()=>sql`result`)
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
buildOperatorConstraint({
|
|
250
|
+
adapter,
|
|
251
|
+
column: 'col',
|
|
252
|
+
field: textField,
|
|
253
|
+
locale: 'es',
|
|
254
|
+
originalOperator: 'like',
|
|
255
|
+
path: 'title',
|
|
256
|
+
resolvedOperator: 'like',
|
|
257
|
+
value: '%nino%'
|
|
258
|
+
});
|
|
259
|
+
expect(capturedContext).toMatchObject({
|
|
260
|
+
field: textField,
|
|
261
|
+
locale: 'es',
|
|
262
|
+
originalOperator: 'like',
|
|
263
|
+
path: 'title',
|
|
264
|
+
resolvedOperator: 'like'
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
it('wraps a handler error with the handler name, path, and resolved operator, retaining the original error as the cause', ()=>{
|
|
268
|
+
const originalError = new Error('boom');
|
|
269
|
+
const transformOperands = vi.fn(()=>{
|
|
270
|
+
throw originalError;
|
|
271
|
+
});
|
|
272
|
+
const adapter = {
|
|
273
|
+
operatorHandlers: [
|
|
274
|
+
{
|
|
275
|
+
name: 'explode',
|
|
276
|
+
operators: [
|
|
277
|
+
'contains'
|
|
278
|
+
],
|
|
279
|
+
transformOperands
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
operators: {
|
|
283
|
+
contains: vi.fn()
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
let thrown;
|
|
287
|
+
try {
|
|
288
|
+
buildOperatorConstraint({
|
|
289
|
+
adapter,
|
|
290
|
+
column: 'col',
|
|
291
|
+
field: textField,
|
|
292
|
+
originalOperator: 'contains',
|
|
293
|
+
path: 'title',
|
|
294
|
+
resolvedOperator: 'contains',
|
|
295
|
+
value: 'acido'
|
|
296
|
+
});
|
|
297
|
+
} catch (error) {
|
|
298
|
+
thrown = error;
|
|
299
|
+
}
|
|
300
|
+
expect(thrown).toBeInstanceOf(Error);
|
|
301
|
+
const error = thrown;
|
|
302
|
+
expect(error.message).toContain('explode');
|
|
303
|
+
expect(error.message).toContain('title');
|
|
304
|
+
expect(error.message).toContain('contains');
|
|
305
|
+
expect(error.cause).toBe(originalError);
|
|
306
|
+
});
|
|
307
|
+
it('throws a configuration error when a transform handler returns operands missing column or value, before any default operator or replacement runs', ()=>{
|
|
308
|
+
const transformOperands = vi.fn().mockReturnValue({
|
|
309
|
+
column: 'only-column'
|
|
310
|
+
});
|
|
311
|
+
const containsOperator = vi.fn();
|
|
312
|
+
const build = vi.fn();
|
|
313
|
+
const adapter = {
|
|
314
|
+
operatorHandlers: [
|
|
315
|
+
{
|
|
316
|
+
name: 'broken',
|
|
317
|
+
operators: [
|
|
318
|
+
'contains'
|
|
319
|
+
],
|
|
320
|
+
transformOperands
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
name: 'replace',
|
|
324
|
+
operators: [
|
|
325
|
+
'contains'
|
|
326
|
+
],
|
|
327
|
+
build
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
operators: {
|
|
331
|
+
contains: containsOperator
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
expect(()=>buildOperatorConstraint({
|
|
335
|
+
adapter,
|
|
336
|
+
column: 'col',
|
|
337
|
+
field: textField,
|
|
338
|
+
originalOperator: 'contains',
|
|
339
|
+
path: 'title',
|
|
340
|
+
resolvedOperator: 'contains',
|
|
341
|
+
value: 'acido'
|
|
342
|
+
})).toThrow(/broken/);
|
|
343
|
+
expect(containsOperator).not.toHaveBeenCalled();
|
|
344
|
+
expect(build).not.toHaveBeenCalled();
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
//# sourceMappingURL=buildOperatorConstraint.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/queries/buildOperatorConstraint.spec.ts"],"sourcesContent":["import type { Column } from 'drizzle-orm'\nimport type { FlattenedField } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { describe, expect, it, vi } from 'vitest'\n\nimport type { DrizzleAdapter, DrizzleOperandTransformHandler } from '../types.js'\n\nimport { buildOperatorConstraint } from './buildOperatorConstraint.js'\n\nconst textField = { name: 'title', type: 'text' } as unknown as FlattenedField\nconst numberField = { name: 'age', type: 'number' } as unknown as FlattenedField\n\ndescribe('buildOperatorConstraint', () => {\n it('calls the default operator unchanged when no handlers are configured', () => {\n const sentinel = sql`sentinel`\n const containsOperator = vi.fn().mockReturnValue(sentinel)\n const adapter = {\n operatorHandlers: [],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n const column = 'col' as unknown as Column\n\n const result = buildOperatorConstraint({\n adapter,\n column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(containsOperator).toHaveBeenCalledWith(column, 'acido')\n expect(result).toBe(sentinel)\n })\n\n it('applies operand-transform handlers in configuration order before the default operator runs', () => {\n const calls: string[] = []\n const containsOperator = vi.fn(() => sql`result`)\n\n const handlerA: DrizzleOperandTransformHandler = {\n name: 'handler-a',\n operators: ['contains'],\n transformOperands: ({ column, value }) => {\n calls.push('a')\n return { column: `${column}-a` as unknown as Column, value: `${value}-a` }\n },\n }\n const handlerB: DrizzleOperandTransformHandler = {\n name: 'handler-b',\n operators: ['contains'],\n transformOperands: ({ column, value }) => {\n calls.push('b')\n return { column: `${column}-b` as unknown as Column, value: `${value}-b` }\n },\n }\n\n const adapter = {\n operatorHandlers: [handlerA, handlerB],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'base-column' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(calls).toEqual(['a', 'b'])\n expect(containsOperator).toHaveBeenCalledWith('base-column-a-b', 'acido-a-b')\n })\n\n it('skips a handler whose operators list excludes the resolved operator', () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [{ name: 'like-only', operators: ['like'], transformOperands }],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(transformOperands).not.toHaveBeenCalled()\n })\n\n it(\"skips a handler whose fieldTypes excludes the field's type even when operators matches\", () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [\n { name: 'text-only', operators: ['contains'], fieldTypes: ['text'], transformOperands },\n ],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: numberField,\n originalOperator: 'contains',\n path: 'age',\n resolvedOperator: 'contains',\n value: 5,\n })\n\n expect(transformOperands).not.toHaveBeenCalled()\n })\n\n it('runs a handler with no fieldTypes for every field type', () => {\n const transformOperands = vi.fn(({ column, value }) => ({ column, value }))\n const adapter = {\n operatorHandlers: [{ name: 'universal', operators: ['contains'], transformOperands }],\n operators: { contains: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: numberField,\n originalOperator: 'contains',\n path: 'age',\n resolvedOperator: 'contains',\n value: 5,\n })\n\n expect(transformOperands).toHaveBeenCalled()\n })\n\n it('gives a single matching replacement handler the operands after every transform has run, and uses its result instead of the default operator', () => {\n const containsOperator = vi.fn()\n const sentinel = sql`replacement`\n const build = vi.fn().mockReturnValue(sentinel)\n const transformOperands = vi.fn(({ column, value }) => ({\n column: `${column}-t` as unknown as Column,\n value: `${value}-t`,\n }))\n\n const adapter = {\n operatorHandlers: [\n { name: 'transform', operators: ['contains'], transformOperands },\n { name: 'replace', operators: ['contains'], build },\n ],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n const result = buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n\n expect(build).toHaveBeenCalledWith(\n expect.objectContaining({ column: 'col-t', value: 'acido-t' }),\n )\n expect(containsOperator).not.toHaveBeenCalled()\n expect(result).toBe(sentinel)\n })\n\n it('passes originalOperator, resolvedOperator, field, path, and locale to handlers', () => {\n let capturedContext: any\n const transformOperands = vi.fn((context) => {\n capturedContext = context\n return { column: context.column, value: context.value }\n })\n\n const adapter = {\n operatorHandlers: [{ name: 'observe', operators: ['like'], transformOperands }],\n operators: { like: vi.fn(() => sql`result`) },\n } as unknown as DrizzleAdapter\n\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n locale: 'es',\n originalOperator: 'like',\n path: 'title',\n resolvedOperator: 'like',\n value: '%nino%',\n })\n\n expect(capturedContext).toMatchObject({\n field: textField,\n locale: 'es',\n originalOperator: 'like',\n path: 'title',\n resolvedOperator: 'like',\n })\n })\n\n it('wraps a handler error with the handler name, path, and resolved operator, retaining the original error as the cause', () => {\n const originalError = new Error('boom')\n const transformOperands = vi.fn(() => {\n throw originalError\n })\n\n const adapter = {\n operatorHandlers: [{ name: 'explode', operators: ['contains'], transformOperands }],\n operators: { contains: vi.fn() },\n } as unknown as DrizzleAdapter\n\n let thrown: unknown\n try {\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n })\n } catch (error) {\n thrown = error\n }\n\n expect(thrown).toBeInstanceOf(Error)\n const error = thrown as Error\n expect(error.message).toContain('explode')\n expect(error.message).toContain('title')\n expect(error.message).toContain('contains')\n expect(error.cause).toBe(originalError)\n })\n\n it('throws a configuration error when a transform handler returns operands missing column or value, before any default operator or replacement runs', () => {\n const transformOperands = vi.fn().mockReturnValue({ column: 'only-column' })\n const containsOperator = vi.fn()\n const build = vi.fn()\n\n const adapter = {\n operatorHandlers: [\n { name: 'broken', operators: ['contains'], transformOperands },\n { name: 'replace', operators: ['contains'], build },\n ],\n operators: { contains: containsOperator },\n } as unknown as DrizzleAdapter\n\n expect(() =>\n buildOperatorConstraint({\n adapter,\n column: 'col' as unknown as Column,\n field: textField,\n originalOperator: 'contains',\n path: 'title',\n resolvedOperator: 'contains',\n value: 'acido',\n }),\n ).toThrow(/broken/)\n\n expect(containsOperator).not.toHaveBeenCalled()\n expect(build).not.toHaveBeenCalled()\n })\n})\n"],"names":["sql","describe","expect","it","vi","buildOperatorConstraint","textField","name","type","numberField","sentinel","containsOperator","fn","mockReturnValue","adapter","operatorHandlers","operators","contains","column","result","field","originalOperator","path","resolvedOperator","value","toHaveBeenCalledWith","toBe","calls","handlerA","transformOperands","push","handlerB","toEqual","not","toHaveBeenCalled","fieldTypes","build","objectContaining","capturedContext","context","like","locale","toMatchObject","originalError","Error","thrown","error","toBeInstanceOf","message","toContain","cause","toThrow"],"mappings":"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"}
|
|
@@ -17,6 +17,6 @@ type Args = {
|
|
|
17
17
|
/**
|
|
18
18
|
* Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
|
|
19
19
|
*/
|
|
20
|
-
export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, rawSort, selectFields, sort, tableName, }: Args) => BuildQueryResult[
|
|
20
|
+
export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, rawSort, selectFields, sort, tableName, }: Args) => BuildQueryResult['orderBy'];
|
|
21
21
|
export {};
|
|
22
22
|
//# sourceMappingURL=buildOrderBy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,+GAWtB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAgFnC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IAEd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IAEd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED,eAAO,MAAM,UAAU,4HAWpB,cAAc,KAAG,gBA2CnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTableAlias.d.ts","sourceRoot":"","sources":["../../src/queries/getTableAlias.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;AAClE,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"getTableAlias.d.ts","sourceRoot":"","sources":["../../src/queries/getTableAlias.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;AAClE,eAAO,MAAM,aAAa,4BAGvB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG;IACF,aAAa,EAAE,KAAK,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAa1B,CAAA"}
|
|
@@ -24,6 +24,7 @@ type TableColumn = {
|
|
|
24
24
|
};
|
|
25
25
|
type Args = {
|
|
26
26
|
adapter: DrizzleAdapter;
|
|
27
|
+
/** The current table when a query is being built with an alias, such as inside a subquery. */
|
|
27
28
|
aliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>;
|
|
28
29
|
collectionPath: string;
|
|
29
30
|
columnPrefix?: string;
|
|
@@ -32,6 +33,7 @@ type Args = {
|
|
|
32
33
|
fields: FlattenedField[];
|
|
33
34
|
joins: BuildQueryJoinAliases;
|
|
34
35
|
locale?: string;
|
|
36
|
+
/** The aliased table that owns a field nested inside an array or block. */
|
|
35
37
|
parentAliasTable?: PgTableWithColumns<any> | SQLiteTableWithColumns<any>;
|
|
36
38
|
parentIsLocalized: boolean;
|
|
37
39
|
pathSegments: string[];
|
|
@@ -49,9 +51,16 @@ type Args = {
|
|
|
49
51
|
value: unknown;
|
|
50
52
|
};
|
|
51
53
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
54
|
+
* Resolves a field path to the database table and column that store its value.
|
|
55
|
+
*
|
|
56
|
+
* While walking through relationships, arrays, and blocks, the function adds the joins required
|
|
57
|
+
* to reach the final column. Table aliases are used when the path is resolved inside a subquery.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* Resolving `movies.name` adds joins from the parent collection to its relationship table and then
|
|
61
|
+
* to the `movies` table. The returned column is `movies.name`.
|
|
62
|
+
*
|
|
63
|
+
* @returns The final field and column, plus any extra constraints discovered while resolving it.
|
|
55
64
|
*/
|
|
56
65
|
export declare const getTableColumnFromPath: ({ adapter, aliasTable, collectionPath, columnPrefix, constraintPath: incomingConstraintPath, constraints, fields, joins, locale: incomingLocale, parentAliasTable, parentIsLocalized, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, selectLocale, tableName, tableNameSuffix, value, }: Args) => TableColumn;
|
|
57
66
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"getTableColumnFromPath.d.ts","sourceRoot":"","sources":["../../src/queries/getTableColumnFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAW5D,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;QAClC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACxB,EAAE,CAAA;IACH,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IACxE,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AACD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,iUAmBhC,IAAI,KAAG,WA08BT,CAAA"}
|