@generazioneai/genquery 0.12.1 → 0.13.1
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/README.md +41 -48
- package/dist/adapters/base.d.ts +9 -10
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/prisma/create.d.ts +2 -2
- package/dist/adapters/prisma/create.js +2 -2
- package/dist/engine.d.ts +9 -11
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -1
- package/dist/engine.js.map +1 -1
- package/dist/parsed.d.ts +1 -1
- package/dist/schema.d.ts +2 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js.map +1 -1
- package/package.json +5 -25
- package/spec.md +2 -2
- package/dist/adapters/typeorm/adapter.d.ts +0 -42
- package/dist/adapters/typeorm/adapter.d.ts.map +0 -1
- package/dist/adapters/typeorm/adapter.js +0 -135
- package/dist/adapters/typeorm/adapter.js.map +0 -1
- package/dist/adapters/typeorm/aliases.d.ts +0 -25
- package/dist/adapters/typeorm/aliases.d.ts.map +0 -1
- package/dist/adapters/typeorm/aliases.js +0 -47
- package/dist/adapters/typeorm/aliases.js.map +0 -1
- package/dist/adapters/typeorm/create.d.ts +0 -29
- package/dist/adapters/typeorm/create.d.ts.map +0 -1
- package/dist/adapters/typeorm/create.js +0 -29
- package/dist/adapters/typeorm/create.js.map +0 -1
- package/dist/adapters/typeorm/escape.d.ts +0 -5
- package/dist/adapters/typeorm/escape.d.ts.map +0 -1
- package/dist/adapters/typeorm/escape.js +0 -13
- package/dist/adapters/typeorm/escape.js.map +0 -1
- package/dist/adapters/typeorm/index.d.ts +0 -4
- package/dist/adapters/typeorm/index.d.ts.map +0 -1
- package/dist/adapters/typeorm/index.js +0 -10
- package/dist/adapters/typeorm/index.js.map +0 -1
- package/dist/adapters/typeorm/joins.d.ts +0 -29
- package/dist/adapters/typeorm/joins.d.ts.map +0 -1
- package/dist/adapters/typeorm/joins.js +0 -91
- package/dist/adapters/typeorm/joins.js.map +0 -1
- package/dist/adapters/typeorm/params.d.ts +0 -8
- package/dist/adapters/typeorm/params.d.ts.map +0 -1
- package/dist/adapters/typeorm/params.js +0 -15
- package/dist/adapters/typeorm/params.js.map +0 -1
- package/dist/adapters/typeorm/schema-from-typeorm.d.ts +0 -50
- package/dist/adapters/typeorm/schema-from-typeorm.d.ts.map +0 -1
- package/dist/adapters/typeorm/schema-from-typeorm.js +0 -197
- package/dist/adapters/typeorm/schema-from-typeorm.js.map +0 -1
- package/dist/adapters/typeorm/where.d.ts +0 -26
- package/dist/adapters/typeorm/where.d.ts.map +0 -1
- package/dist/adapters/typeorm/where.js +0 -315
- package/dist/adapters/typeorm/where.js.map +0 -1
- package/dist/paginate/cursor.d.ts +0 -18
- package/dist/paginate/cursor.d.ts.map +0 -1
- package/dist/paginate/cursor.js +0 -53
- package/dist/paginate/cursor.js.map +0 -1
- package/dist/paginate/in-memory.d.ts +0 -13
- package/dist/paginate/in-memory.d.ts.map +0 -1
- package/dist/paginate/in-memory.js +0 -21
- package/dist/paginate/in-memory.js.map +0 -1
- package/dist/paginate/index.d.ts +0 -27
- package/dist/paginate/index.d.ts.map +0 -1
- package/dist/paginate/index.js +0 -33
- package/dist/paginate/index.js.map +0 -1
- package/dist/paginate/model.d.ts +0 -16
- package/dist/paginate/model.d.ts.map +0 -1
- package/dist/paginate/model.js +0 -3
- package/dist/paginate/model.js.map +0 -1
- package/dist/paginate/offset.d.ts +0 -25
- package/dist/paginate/offset.d.ts.map +0 -1
- package/dist/paginate/offset.js +0 -74
- package/dist/paginate/offset.js.map +0 -1
- package/dist/paginate/pagination.d.ts +0 -18
- package/dist/paginate/pagination.d.ts.map +0 -1
- package/dist/paginate/pagination.js +0 -47
- package/dist/paginate/pagination.js.map +0 -1
- package/dist/paginate/transform.d.ts +0 -15
- package/dist/paginate/transform.d.ts.map +0 -1
- package/dist/paginate/transform.js +0 -43
- package/dist/paginate/transform.js.map +0 -1
- package/dist/paginate/types.d.ts +0 -93
- package/dist/paginate/types.d.ts.map +0 -1
- package/dist/paginate/types.js +0 -10
- package/dist/paginate/types.js.map +0 -1
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.schemaFromTypeORM = schemaFromTypeORM;
|
|
4
|
-
/**
|
|
5
|
-
* Build a genquery `Schema` from an initialized TypeORM `DataSource`.
|
|
6
|
-
*
|
|
7
|
-
* The DataSource must be initialized (`await dataSource.initialize()`) before
|
|
8
|
-
* calling this function; otherwise `entityMetadatas` will be empty.
|
|
9
|
-
*
|
|
10
|
-
* const dataSource = new DataSource({ ... });
|
|
11
|
-
* await dataSource.initialize();
|
|
12
|
-
* const schema = schemaFromTypeORM(dataSource);
|
|
13
|
-
* const adapter = new TypeORMAdapter(schema);
|
|
14
|
-
* const engine = new GenQueryEngine({ schema, adapter });
|
|
15
|
-
*
|
|
16
|
-
* Restrict to specific entities:
|
|
17
|
-
*
|
|
18
|
-
* const schema = schemaFromTypeORM(dataSource, { entities: [User, Post] });
|
|
19
|
-
*
|
|
20
|
-
* Override a column type that isn't auto-detected:
|
|
21
|
-
*
|
|
22
|
-
* const schema = schemaFromTypeORM(dataSource, {
|
|
23
|
-
* overrides: { User: { preferences: "string" } },
|
|
24
|
-
* });
|
|
25
|
-
*/
|
|
26
|
-
function schemaFromTypeORM(dataSource, options = {}) {
|
|
27
|
-
const all = dataSource.entityMetadatas;
|
|
28
|
-
const filter = options.entities;
|
|
29
|
-
const selected = filter
|
|
30
|
-
? all.filter((m) => filter.some((t) => typeof t === "string" ? t === m.name : t === m.target))
|
|
31
|
-
: all;
|
|
32
|
-
const entities = {};
|
|
33
|
-
for (const meta of selected) {
|
|
34
|
-
entities[meta.name] = buildEntity(meta, options);
|
|
35
|
-
}
|
|
36
|
-
return { entities };
|
|
37
|
-
}
|
|
38
|
-
function buildEntity(meta, options) {
|
|
39
|
-
const fields = {};
|
|
40
|
-
const overrides = options.overrides?.[meta.name] ?? {};
|
|
41
|
-
const keyColumns = collectKeyColumnNames(meta);
|
|
42
|
-
for (const col of meta.columns) {
|
|
43
|
-
const explicit = overrides[col.propertyName];
|
|
44
|
-
if (explicit) {
|
|
45
|
-
fields[col.propertyName] = { type: explicit, nullable: col.isNullable };
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
// Enum columns: extract values so the parser can validate the allowlist.
|
|
49
|
-
if (isStringEnumColumn(col)) {
|
|
50
|
-
fields[col.propertyName] = {
|
|
51
|
-
type: "enum",
|
|
52
|
-
values: col.enum.slice(),
|
|
53
|
-
nullable: col.isNullable,
|
|
54
|
-
};
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
// Key-like columns (primary keys, foreign keys, uuid-typed columns) are
|
|
58
|
-
// always matched by exact equality — never with LIKE/ILIKE, which fails
|
|
59
|
-
// outright on Postgres `uuid`.
|
|
60
|
-
if (keyColumns.has(col.propertyName) || isUuidColumn(col)) {
|
|
61
|
-
fields[col.propertyName] = { type: "id", nullable: col.isNullable };
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
const fieldType = mapColumnType(col, meta.name, options);
|
|
65
|
-
if (!fieldType)
|
|
66
|
-
continue;
|
|
67
|
-
fields[col.propertyName] = { type: fieldType, nullable: col.isNullable };
|
|
68
|
-
}
|
|
69
|
-
// Add any overrides that didn't correspond to a real column (e.g. virtual fields).
|
|
70
|
-
for (const [name, type] of Object.entries(overrides)) {
|
|
71
|
-
if (!fields[name])
|
|
72
|
-
fields[name] = { type };
|
|
73
|
-
}
|
|
74
|
-
const relations = {};
|
|
75
|
-
for (const rel of meta.relations) {
|
|
76
|
-
relations[rel.propertyName] = {
|
|
77
|
-
target: rel.inverseEntityMetadata.name,
|
|
78
|
-
kind: rel.isOneToOne || rel.isManyToOne ? "one" : "many",
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
const definition = {
|
|
82
|
-
name: meta.name,
|
|
83
|
-
fields,
|
|
84
|
-
};
|
|
85
|
-
if (Object.keys(relations).length > 0)
|
|
86
|
-
definition.relations = relations;
|
|
87
|
-
const pk = meta.primaryColumns[0]?.propertyName;
|
|
88
|
-
if (pk)
|
|
89
|
-
definition.primaryKey = pk;
|
|
90
|
-
return definition;
|
|
91
|
-
}
|
|
92
|
-
function isStringEnumColumn(col) {
|
|
93
|
-
if (!Array.isArray(col.enum) || col.enum.length === 0)
|
|
94
|
-
return false;
|
|
95
|
-
return col.enum.every((v) => typeof v === "string");
|
|
96
|
-
}
|
|
97
|
-
function isUuidColumn(col) {
|
|
98
|
-
const t = col.type;
|
|
99
|
-
return typeof t === "string" && t.toLowerCase() === "uuid";
|
|
100
|
-
}
|
|
101
|
-
function collectKeyColumnNames(meta) {
|
|
102
|
-
const names = new Set();
|
|
103
|
-
for (const pk of meta.primaryColumns) {
|
|
104
|
-
names.add(pk.propertyName);
|
|
105
|
-
}
|
|
106
|
-
for (const rel of meta.relations) {
|
|
107
|
-
for (const jc of rel.joinColumns) {
|
|
108
|
-
// `propertyName` here is the FK property on the parent entity
|
|
109
|
-
// (e.g. `companyId`), not the related entity's id field.
|
|
110
|
-
if (jc.propertyName)
|
|
111
|
-
names.add(jc.propertyName);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return names;
|
|
115
|
-
}
|
|
116
|
-
function mapColumnType(col, entityName, options) {
|
|
117
|
-
const t = col.type;
|
|
118
|
-
if (typeof t === "function") {
|
|
119
|
-
if (t === String)
|
|
120
|
-
return "string";
|
|
121
|
-
if (t === Number)
|
|
122
|
-
return "number";
|
|
123
|
-
if (t === Boolean)
|
|
124
|
-
return "boolean";
|
|
125
|
-
if (t === Date)
|
|
126
|
-
return "date";
|
|
127
|
-
}
|
|
128
|
-
else if (typeof t === "string") {
|
|
129
|
-
const norm = t.toLowerCase();
|
|
130
|
-
if (STRING_TYPES.has(norm))
|
|
131
|
-
return "string";
|
|
132
|
-
if (NUMBER_TYPES.has(norm))
|
|
133
|
-
return "number";
|
|
134
|
-
if (BOOLEAN_TYPES.has(norm))
|
|
135
|
-
return "boolean";
|
|
136
|
-
if (DATE_TYPES.has(norm) || norm.startsWith("timestamp"))
|
|
137
|
-
return "date";
|
|
138
|
-
// "enum" / "simple-enum" columns are handled earlier via isStringEnumColumn.
|
|
139
|
-
// If we reach this point, the values weren't strings — let the fallback decide.
|
|
140
|
-
}
|
|
141
|
-
return options.fallback?.(entityName, col.propertyName, t);
|
|
142
|
-
}
|
|
143
|
-
const STRING_TYPES = new Set([
|
|
144
|
-
"string",
|
|
145
|
-
"varchar",
|
|
146
|
-
"varchar2",
|
|
147
|
-
"char",
|
|
148
|
-
"character",
|
|
149
|
-
"character varying",
|
|
150
|
-
"text",
|
|
151
|
-
"tinytext",
|
|
152
|
-
"mediumtext",
|
|
153
|
-
"longtext",
|
|
154
|
-
"ntext",
|
|
155
|
-
"uuid",
|
|
156
|
-
"citext",
|
|
157
|
-
"nvarchar",
|
|
158
|
-
"nvarchar2",
|
|
159
|
-
"nchar",
|
|
160
|
-
]);
|
|
161
|
-
const NUMBER_TYPES = new Set([
|
|
162
|
-
"int",
|
|
163
|
-
"int2",
|
|
164
|
-
"int4",
|
|
165
|
-
"int8",
|
|
166
|
-
"integer",
|
|
167
|
-
"tinyint",
|
|
168
|
-
"smallint",
|
|
169
|
-
"mediumint",
|
|
170
|
-
"bigint",
|
|
171
|
-
"decimal",
|
|
172
|
-
"numeric",
|
|
173
|
-
"real",
|
|
174
|
-
"float",
|
|
175
|
-
"float4",
|
|
176
|
-
"float8",
|
|
177
|
-
"double",
|
|
178
|
-
"double precision",
|
|
179
|
-
"money",
|
|
180
|
-
"smallmoney",
|
|
181
|
-
"year",
|
|
182
|
-
]);
|
|
183
|
-
const BOOLEAN_TYPES = new Set(["bool", "boolean"]);
|
|
184
|
-
const DATE_TYPES = new Set([
|
|
185
|
-
"date",
|
|
186
|
-
"datetime",
|
|
187
|
-
"datetime2",
|
|
188
|
-
"datetimeoffset",
|
|
189
|
-
"smalldatetime",
|
|
190
|
-
"time",
|
|
191
|
-
"timetz",
|
|
192
|
-
"time with time zone",
|
|
193
|
-
"time without time zone",
|
|
194
|
-
"timestamp with time zone",
|
|
195
|
-
"timestamp without time zone",
|
|
196
|
-
]);
|
|
197
|
-
//# sourceMappingURL=schema-from-typeorm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-from-typeorm.js","sourceRoot":"","sources":["../../../src/adapters/typeorm/schema-from-typeorm.ts"],"names":[],"mappings":";;AA8DA,8CAmBC;AAzCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,iBAAiB,CAC/B,UAAsB,EACtB,UAAoC,EAAE;IAEtC,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM;QACrB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChB,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CACtD,CACF;QACH,CAAC,CAAC,GAAG,CAAC;IAER,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAClB,IAAoB,EACpB,OAAiC;IAEjC,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QACD,yEAAyE;QACzE,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG;gBACzB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAG,GAAG,CAAC,IAA0B,CAAC,KAAK,EAAE;gBAC/C,QAAQ,EAAE,GAAG,CAAC,UAAU;aACzB,CAAC;YACF,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,wEAAwE;QACxE,+BAA+B;QAC/B,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YACpE,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;IAC3E,CAAC;IAED,mFAAmF;IACnF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,SAAS,GAAuC,EAAE,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG;YAC5B,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI;YACtC,IAAI,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;SACzD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAqB;QACnC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM;KACP,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;IACxE,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;IAChD,IAAI,EAAE;QAAE,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAmB;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,GAAmB;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAoB;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACjC,8DAA8D;YAC9D,yDAAyD;YACzD,IAAI,EAAE,CAAC,YAAY;gBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CACpB,GAAmB,EACnB,UAAkB,EAClB,OAAiC;IAEjC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IAEnB,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC5C,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,MAAM,CAAC;QACxE,6EAA6E;QAC7E,gFAAgF;IAClF,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,QAAQ;IACR,SAAS;IACT,UAAU;IACV,MAAM;IACN,WAAW;IACX,mBAAmB;IACnB,MAAM;IACN,UAAU;IACV,YAAY;IACZ,UAAU;IACV,OAAO;IACP,MAAM;IACN,QAAQ;IACR,UAAU;IACV,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,MAAM;IACN,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,MAAM;IACN,QAAQ;IACR,qBAAqB;IACrB,wBAAwB;IACxB,0BAA0B;IAC1B,6BAA6B;CAC9B,CAAC,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type DataSource, type WhereExpressionBuilder } from "typeorm";
|
|
2
|
-
import type { ParsedSearchBy } from "../../parsed";
|
|
3
|
-
import type { Schema } from "../../schema";
|
|
4
|
-
import type { AliasRegistry } from "./aliases";
|
|
5
|
-
import type { ParamCounter } from "./params";
|
|
6
|
-
export interface WhereCtx {
|
|
7
|
-
schema: Schema;
|
|
8
|
-
aliases: AliasRegistry;
|
|
9
|
-
params: ParamCounter;
|
|
10
|
-
/** Bag of parameters collected for the outer QueryBuilder. */
|
|
11
|
-
paramBag: Record<string, unknown>;
|
|
12
|
-
/** Alias of the entity at the current scope. */
|
|
13
|
-
currentAlias: string;
|
|
14
|
-
/** Logical path from root, used to look up nested relation aliases. */
|
|
15
|
-
currentPath: string;
|
|
16
|
-
/** Entity name (as known to TypeORM metadata) at the current scope. */
|
|
17
|
-
currentEntity: string;
|
|
18
|
-
/** TypeORM DataSource / Connection — used to resolve relation metadata for every/none subqueries. */
|
|
19
|
-
connection: DataSource;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Apply a `ParsedSearchBy` inside a TypeORM `Brackets` callback. Caller is
|
|
23
|
-
* responsible for wrapping with `qb.andWhere(new Brackets(b => applySearchByInside(b, ..., ctx)))`.
|
|
24
|
-
*/
|
|
25
|
-
export declare function applySearchByInside(qb: WhereExpressionBuilder, searchBy: ParsedSearchBy, ctx: WhereCtx): void;
|
|
26
|
-
//# sourceMappingURL=where.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"where.d.ts","sourceRoot":"","sources":["../../../src/adapters/typeorm/where.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjF,OAAO,KAAK,EAIV,cAAc,EAEf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,qGAAqG;IACrG,UAAU,EAAE,UAAU,CAAC;CACxB;AAoVD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,sBAAsB,EAC1B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,QAAQ,GACZ,IAAI,CAsBN"}
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applySearchByInside = applySearchByInside;
|
|
4
|
-
const typeorm_1 = require("typeorm");
|
|
5
|
-
const errors_1 = require("../../errors");
|
|
6
|
-
const escape_1 = require("./escape");
|
|
7
|
-
function qualify(alias, field) {
|
|
8
|
-
return `"${alias}"."${field}"`;
|
|
9
|
-
}
|
|
10
|
-
function buildString(alias, field, search, params) {
|
|
11
|
-
const col = qualify(alias, field);
|
|
12
|
-
// Cast to text so LIKE / ILIKE / regex operators work on non-text columns
|
|
13
|
-
// (notably Postgres `uuid`, which has no `~~*` / `~*` operator). No-op for
|
|
14
|
-
// text-like columns.
|
|
15
|
-
const textCol = `${col}::text`;
|
|
16
|
-
const like = search.caseSensitive ? "LIKE" : "ILIKE";
|
|
17
|
-
switch (search.mode) {
|
|
18
|
-
case "exact": {
|
|
19
|
-
const p = params.next();
|
|
20
|
-
if (search.contained) {
|
|
21
|
-
return {
|
|
22
|
-
sql: `${textCol} ${like} :${p}`,
|
|
23
|
-
params: { [p]: `%${(0, escape_1.escapeLike)(search.value)}%` },
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (search.caseSensitive) {
|
|
27
|
-
return {
|
|
28
|
-
sql: `${col} = :${p}`,
|
|
29
|
-
params: { [p]: search.value },
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
// Case-insensitive equality via ILIKE on the escaped literal (no wildcards).
|
|
33
|
-
return {
|
|
34
|
-
sql: `${textCol} ILIKE :${p}`,
|
|
35
|
-
params: { [p]: (0, escape_1.escapeLike)(search.value) },
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
case "nativeregex": {
|
|
39
|
-
const p = params.next();
|
|
40
|
-
const op = search.caseSensitive ? "~" : "~*";
|
|
41
|
-
return {
|
|
42
|
-
sql: `${textCol} ${op} :${p}`,
|
|
43
|
-
params: { [p]: search.value },
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
case "splitword": {
|
|
47
|
-
const words = (0, escape_1.splitWords)(search.value);
|
|
48
|
-
if (words.length === 0) {
|
|
49
|
-
return { sql: "1=1", params: {} };
|
|
50
|
-
}
|
|
51
|
-
const parts = [];
|
|
52
|
-
const out = {};
|
|
53
|
-
for (const w of words) {
|
|
54
|
-
const p = params.next();
|
|
55
|
-
const pattern = search.contained
|
|
56
|
-
? `%${(0, escape_1.escapeLike)(w)}%`
|
|
57
|
-
: (0, escape_1.escapeLike)(w);
|
|
58
|
-
parts.push(`${textCol} ${like} :${p}`);
|
|
59
|
-
out[p] = pattern;
|
|
60
|
-
}
|
|
61
|
-
return { sql: `(${parts.join(" OR ")})`, params: out };
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function buildNumber(alias, field, search, params) {
|
|
66
|
-
const col = qualify(alias, field);
|
|
67
|
-
const p = params.next();
|
|
68
|
-
const op = search.op === "==" ? "=" : search.op;
|
|
69
|
-
return { sql: `${col} ${op} :${p}`, params: { [p]: search.value } };
|
|
70
|
-
}
|
|
71
|
-
function buildDate(alias, field, search, params) {
|
|
72
|
-
const col = qualify(alias, field);
|
|
73
|
-
if (search.kind === "exact") {
|
|
74
|
-
const p = params.next();
|
|
75
|
-
return { sql: `${col} = :${p}`, params: { [p]: search.value } };
|
|
76
|
-
}
|
|
77
|
-
// range
|
|
78
|
-
const clauses = [];
|
|
79
|
-
const out = {};
|
|
80
|
-
if (search.after) {
|
|
81
|
-
const p = params.next();
|
|
82
|
-
clauses.push(`${col} > :${p}`);
|
|
83
|
-
out[p] = search.after;
|
|
84
|
-
}
|
|
85
|
-
if (search.before) {
|
|
86
|
-
const p = params.next();
|
|
87
|
-
clauses.push(`${col} < :${p}`);
|
|
88
|
-
out[p] = search.before;
|
|
89
|
-
}
|
|
90
|
-
return { sql: clauses.join(" AND "), params: out };
|
|
91
|
-
}
|
|
92
|
-
function buildLeaf(cond, ctx) {
|
|
93
|
-
switch (cond.kind) {
|
|
94
|
-
case "string":
|
|
95
|
-
return buildString(ctx.currentAlias, cond.field, cond.search, ctx.params);
|
|
96
|
-
case "number":
|
|
97
|
-
return buildNumber(ctx.currentAlias, cond.field, cond.search, ctx.params);
|
|
98
|
-
case "bool": {
|
|
99
|
-
const p = ctx.params.next();
|
|
100
|
-
return {
|
|
101
|
-
sql: `${qualify(ctx.currentAlias, cond.field)} = :${p}`,
|
|
102
|
-
params: { [p]: cond.search.value },
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
case "date":
|
|
106
|
-
return buildDate(ctx.currentAlias, cond.field, cond.search, ctx.params);
|
|
107
|
-
case "enum": {
|
|
108
|
-
const p = ctx.params.next();
|
|
109
|
-
return {
|
|
110
|
-
sql: `${qualify(ctx.currentAlias, cond.field)} = :${p}`,
|
|
111
|
-
params: { [p]: cond.search.value },
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
case "id": {
|
|
115
|
-
const p = ctx.params.next();
|
|
116
|
-
return {
|
|
117
|
-
sql: `${qualify(ctx.currentAlias, cond.field)} = :${p}`,
|
|
118
|
-
params: { [p]: cond.search.value },
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
case "in": {
|
|
122
|
-
const p = ctx.params.next();
|
|
123
|
-
return {
|
|
124
|
-
sql: `${qualify(ctx.currentAlias, cond.field)} IN (:...${p})`,
|
|
125
|
-
params: { [p]: cond.values },
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
case "null": {
|
|
129
|
-
const col = qualify(ctx.currentAlias, cond.field);
|
|
130
|
-
return {
|
|
131
|
-
sql: `${col} IS ${cond.check.isNull ? "" : "NOT "}NULL`,
|
|
132
|
-
params: {},
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
case "empty": {
|
|
136
|
-
const col = qualify(ctx.currentAlias, cond.field);
|
|
137
|
-
const sql = cond.check.isEmpty
|
|
138
|
-
? `(${col} IS NULL OR ${col} = '')`
|
|
139
|
-
: `(${col} IS NOT NULL AND ${col} <> '')`;
|
|
140
|
-
return { sql, params: {} };
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
function joinPath(parent, child) {
|
|
145
|
-
return parent ? `${parent}.${child}` : child;
|
|
146
|
-
}
|
|
147
|
-
function applyCondition(qb, cond, ctx, isFirst) {
|
|
148
|
-
if (cond.kind === "relation") {
|
|
149
|
-
if (cond.op === "some") {
|
|
150
|
-
const path = joinPath(ctx.currentPath, cond.field);
|
|
151
|
-
const relAlias = ctx.aliases.get(path);
|
|
152
|
-
if (!relAlias) {
|
|
153
|
-
throw new Error(`genquery/typeorm: missing join for relation path '${path}'`);
|
|
154
|
-
}
|
|
155
|
-
const subCtx = {
|
|
156
|
-
...ctx,
|
|
157
|
-
currentAlias: relAlias,
|
|
158
|
-
currentPath: path,
|
|
159
|
-
currentEntity: cond.targetEntity,
|
|
160
|
-
};
|
|
161
|
-
const brackets = new typeorm_1.Brackets((sub) => applySearchByInside(sub, cond.nested, subCtx));
|
|
162
|
-
if (isFirst)
|
|
163
|
-
qb.where(brackets);
|
|
164
|
-
else
|
|
165
|
-
qb.andWhere(brackets);
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
// every / none → EXISTS / NOT EXISTS subquery
|
|
169
|
-
const fragment = buildExistsSubquery(cond, ctx);
|
|
170
|
-
Object.assign(ctx.paramBag, fragment.params);
|
|
171
|
-
if (isFirst)
|
|
172
|
-
qb.where(fragment.sql, fragment.params);
|
|
173
|
-
else
|
|
174
|
-
qb.andWhere(fragment.sql, fragment.params);
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const fragment = buildLeaf(cond, ctx);
|
|
178
|
-
Object.assign(ctx.paramBag, fragment.params);
|
|
179
|
-
if (isFirst)
|
|
180
|
-
qb.where(fragment.sql, fragment.params);
|
|
181
|
-
else
|
|
182
|
-
qb.andWhere(fragment.sql, fragment.params);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Build a `[NOT] EXISTS (SELECT 1 FROM target WHERE ...)` fragment for
|
|
186
|
-
* `every` / `none` relation conditions. Resolves FK columns through TypeORM's
|
|
187
|
-
* own EntityMetadata so we don't reinvent relation introspection.
|
|
188
|
-
*
|
|
189
|
-
* Restrictions (Phase 1):
|
|
190
|
-
* - One-to-many and many-to-one (and one-to-one) relations are supported.
|
|
191
|
-
* - Many-to-many goes through a junction table and isn't supported here yet.
|
|
192
|
-
* - The nested `searchBy` must contain only leaf conditions and OR — nested
|
|
193
|
-
* relation filters inside `every`/`none` are not yet supported.
|
|
194
|
-
*/
|
|
195
|
-
function buildExistsSubquery(cond, ctx) {
|
|
196
|
-
const parentMeta = ctx.connection.getMetadata(ctx.currentEntity);
|
|
197
|
-
const relMeta = parentMeta.relations.find((r) => r.propertyName === cond.field);
|
|
198
|
-
if (!relMeta) {
|
|
199
|
-
throw new Error(`genquery/typeorm: no TypeORM relation metadata for '${ctx.currentEntity}.${cond.field}'`);
|
|
200
|
-
}
|
|
201
|
-
if (relMeta.isManyToMany) {
|
|
202
|
-
throw new errors_1.QueryValidationError(`Relation '${cond.field}' is many-to-many; '${cond.op}' filtering isn't supported yet for M2M relations`, cond.field);
|
|
203
|
-
}
|
|
204
|
-
const targetMeta = relMeta.inverseEntityMetadata;
|
|
205
|
-
const targetTable = targetMeta.tableName;
|
|
206
|
-
const subAlias = `${ctx.currentAlias}__${cond.field}__sub`;
|
|
207
|
-
// Determine the join condition between parent alias and the subquery alias.
|
|
208
|
-
let joinSql;
|
|
209
|
-
if (relMeta.joinColumns.length > 0) {
|
|
210
|
-
// Owning side (many-to-one / owning one-to-one): FK column lives on the
|
|
211
|
-
// parent table, references target's referenced column.
|
|
212
|
-
const fk = relMeta.joinColumns[0];
|
|
213
|
-
const parentCol = fk.databaseName;
|
|
214
|
-
const targetCol = fk.referencedColumn?.databaseName
|
|
215
|
-
?? targetMeta.primaryColumns[0].databaseName;
|
|
216
|
-
joinSql = `"${subAlias}"."${targetCol}" = "${ctx.currentAlias}"."${parentCol}"`;
|
|
217
|
-
}
|
|
218
|
-
else if (relMeta.inverseRelation) {
|
|
219
|
-
// Inverse side (one-to-many / inverse one-to-one): FK lives on the target.
|
|
220
|
-
const fk = relMeta.inverseRelation.joinColumns[0];
|
|
221
|
-
if (!fk) {
|
|
222
|
-
throw new Error(`genquery/typeorm: cannot resolve foreign key for relation '${cond.field}'`);
|
|
223
|
-
}
|
|
224
|
-
const targetFk = fk.databaseName;
|
|
225
|
-
const parentPk = fk.referencedColumn?.databaseName
|
|
226
|
-
?? parentMeta.primaryColumns[0].databaseName;
|
|
227
|
-
joinSql = `"${subAlias}"."${targetFk}" = "${ctx.currentAlias}"."${parentPk}"`;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
throw new Error(`genquery/typeorm: cannot resolve join columns for relation '${cond.field}'`);
|
|
231
|
-
}
|
|
232
|
-
const subCtx = {
|
|
233
|
-
...ctx,
|
|
234
|
-
currentAlias: subAlias,
|
|
235
|
-
currentPath: joinPath(ctx.currentPath, cond.field),
|
|
236
|
-
currentEntity: cond.targetEntity,
|
|
237
|
-
};
|
|
238
|
-
const nestedFrag = buildSearchByFragment(cond.nested, subCtx);
|
|
239
|
-
let whereContent = joinSql;
|
|
240
|
-
if (nestedFrag.sql) {
|
|
241
|
-
const inner = cond.op === "every" ? `NOT (${nestedFrag.sql})` : nestedFrag.sql;
|
|
242
|
-
whereContent = `${joinSql} AND ${inner}`;
|
|
243
|
-
}
|
|
244
|
-
else if (cond.op === "every") {
|
|
245
|
-
// every(no conditions) ≡ "no related rows that violate nothing", i.e. true.
|
|
246
|
-
// Special-case: no WHERE on the nested side means `every` is trivially
|
|
247
|
-
// satisfied (no row can violate an empty predicate).
|
|
248
|
-
return { sql: "1=1", params: {} };
|
|
249
|
-
}
|
|
250
|
-
const exists = cond.op === "some" ? "EXISTS" : "NOT EXISTS";
|
|
251
|
-
const sql = `${exists} (SELECT 1 FROM "${targetTable}" "${subAlias}" WHERE ${whereContent})`;
|
|
252
|
-
return { sql, params: nestedFrag.params };
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Build a SQL fragment representing an entire ParsedSearchBy (conditions
|
|
256
|
-
* AND-ed together, with the OR group AND-ed in). Used inside EXISTS
|
|
257
|
-
* subqueries where we need raw SQL rather than a builder mutation.
|
|
258
|
-
*
|
|
259
|
-
* Throws if a nested relation appears — those need their own EXISTS subquery
|
|
260
|
-
* with metadata resolution, which Phase 1 doesn't support inside every/none.
|
|
261
|
-
*/
|
|
262
|
-
function buildSearchByFragment(searchBy, ctx) {
|
|
263
|
-
const andParts = [];
|
|
264
|
-
const params = {};
|
|
265
|
-
for (const cond of searchBy.conditions) {
|
|
266
|
-
if (cond.kind === "relation") {
|
|
267
|
-
throw new errors_1.QueryValidationError(`Nested relation filter '${cond.field}' inside 'every'/'none' is not supported in this version`, joinPath(ctx.currentPath, cond.field));
|
|
268
|
-
}
|
|
269
|
-
const frag = buildLeaf(cond, ctx);
|
|
270
|
-
andParts.push(frag.sql);
|
|
271
|
-
Object.assign(params, frag.params);
|
|
272
|
-
}
|
|
273
|
-
if (searchBy.or.length > 0) {
|
|
274
|
-
const orParts = [];
|
|
275
|
-
for (const sub of searchBy.or) {
|
|
276
|
-
const subFrag = buildSearchByFragment(sub, ctx);
|
|
277
|
-
if (subFrag.sql)
|
|
278
|
-
orParts.push(`(${subFrag.sql})`);
|
|
279
|
-
Object.assign(params, subFrag.params);
|
|
280
|
-
}
|
|
281
|
-
if (orParts.length > 0)
|
|
282
|
-
andParts.push(`(${orParts.join(" OR ")})`);
|
|
283
|
-
}
|
|
284
|
-
return { sql: andParts.join(" AND "), params };
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Apply a `ParsedSearchBy` inside a TypeORM `Brackets` callback. Caller is
|
|
288
|
-
* responsible for wrapping with `qb.andWhere(new Brackets(b => applySearchByInside(b, ..., ctx)))`.
|
|
289
|
-
*/
|
|
290
|
-
function applySearchByInside(qb, searchBy, ctx) {
|
|
291
|
-
let first = true;
|
|
292
|
-
for (const cond of searchBy.conditions) {
|
|
293
|
-
applyCondition(qb, cond, ctx, first);
|
|
294
|
-
first = false;
|
|
295
|
-
}
|
|
296
|
-
if (searchBy.or.length > 0) {
|
|
297
|
-
const orBrackets = new typeorm_1.Brackets((orQb) => {
|
|
298
|
-
let orFirst = true;
|
|
299
|
-
for (const sub of searchBy.or) {
|
|
300
|
-
const sub_brackets = new typeorm_1.Brackets((b) => applySearchByInside(b, sub, ctx));
|
|
301
|
-
if (orFirst)
|
|
302
|
-
orQb.where(sub_brackets);
|
|
303
|
-
else
|
|
304
|
-
orQb.orWhere(sub_brackets);
|
|
305
|
-
orFirst = false;
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
if (first)
|
|
309
|
-
qb.where(orBrackets);
|
|
310
|
-
else
|
|
311
|
-
qb.andWhere(orBrackets);
|
|
312
|
-
first = false;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=where.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/adapters/typeorm/where.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { PrismaModelDelegate } from "./model";
|
|
2
|
-
import type { CursorPaginateOptions, CursorPaginatedResult } from "./types";
|
|
3
|
-
/**
|
|
4
|
-
* Cursor-paginate a Prisma model — O(1) deep pagination (no growing OFFSET),
|
|
5
|
-
* the efficient choice for infinite-scroll / large datasets.
|
|
6
|
-
*
|
|
7
|
-
* let res = await paginateCursor(prisma.post, { where }, { perPage: 20 });
|
|
8
|
-
* // next page:
|
|
9
|
-
* res = await paginateCursor(prisma.post, { where }, { perPage: 20, cursor: res.meta.nextCursor });
|
|
10
|
-
*
|
|
11
|
-
* `cursorField` must be unique & sequential (default `"id"`). The field is
|
|
12
|
-
* appended to the caller's `orderBy` so ordering is deterministic. No COUNT is
|
|
13
|
-
* ever issued. `direction: "backward"` sorts the cursor field descending.
|
|
14
|
-
*
|
|
15
|
-
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
16
|
-
*/
|
|
17
|
-
export declare function paginateCursor<T = any>(model: PrismaModelDelegate, args?: Record<string, any>, options?: CursorPaginateOptions<T>): Promise<CursorPaginatedResult<T>>;
|
|
18
|
-
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/paginate/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1C,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC9B,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAqCnC"}
|
package/dist/paginate/cursor.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.paginateCursor = paginateCursor;
|
|
4
|
-
const transform_1 = require("./transform");
|
|
5
|
-
/**
|
|
6
|
-
* Cursor-paginate a Prisma model — O(1) deep pagination (no growing OFFSET),
|
|
7
|
-
* the efficient choice for infinite-scroll / large datasets.
|
|
8
|
-
*
|
|
9
|
-
* let res = await paginateCursor(prisma.post, { where }, { perPage: 20 });
|
|
10
|
-
* // next page:
|
|
11
|
-
* res = await paginateCursor(prisma.post, { where }, { perPage: 20, cursor: res.meta.nextCursor });
|
|
12
|
-
*
|
|
13
|
-
* `cursorField` must be unique & sequential (default `"id"`). The field is
|
|
14
|
-
* appended to the caller's `orderBy` so ordering is deterministic. No COUNT is
|
|
15
|
-
* ever issued. `direction: "backward"` sorts the cursor field descending.
|
|
16
|
-
*
|
|
17
|
-
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
18
|
-
*/
|
|
19
|
-
async function paginateCursor(model, args = {}, options = {}) {
|
|
20
|
-
const perPage = Number(options.perPage) || 10;
|
|
21
|
-
const field = options.cursorField ?? "id";
|
|
22
|
-
const dir = options.direction === "backward" ? "desc" : "asc";
|
|
23
|
-
const baseOrder = args.orderBy
|
|
24
|
-
? Array.isArray(args.orderBy)
|
|
25
|
-
? args.orderBy
|
|
26
|
-
: [args.orderBy]
|
|
27
|
-
: [];
|
|
28
|
-
const findArgs = {
|
|
29
|
-
...args,
|
|
30
|
-
orderBy: [...baseOrder, { [field]: dir }],
|
|
31
|
-
take: perPage + 1,
|
|
32
|
-
};
|
|
33
|
-
const hasCursor = options.cursor !== undefined && options.cursor !== null;
|
|
34
|
-
if (hasCursor) {
|
|
35
|
-
findArgs.cursor = { [field]: options.cursor };
|
|
36
|
-
findArgs.skip = 1; // skip the cursor row itself
|
|
37
|
-
}
|
|
38
|
-
const rows = await model.findMany(findArgs);
|
|
39
|
-
const hasNext = rows.length > perPage;
|
|
40
|
-
const pageRows = hasNext ? rows.slice(0, perPage) : rows;
|
|
41
|
-
const last = pageRows[pageRows.length - 1];
|
|
42
|
-
return {
|
|
43
|
-
data: (0, transform_1.applyTransform)(pageRows, options),
|
|
44
|
-
meta: {
|
|
45
|
-
perPage,
|
|
46
|
-
nextCursor: hasNext && last ? String(last[field]) : null,
|
|
47
|
-
prevCursor: hasCursor ? String(options.cursor) : null,
|
|
48
|
-
hasNext,
|
|
49
|
-
hasPrev: hasCursor,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/paginate/cursor.ts"],"names":[],"mappings":";;AAkBA,wCAyCC;AAzDD,2CAA6C;AAE7C;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,cAAc,CAClC,KAA0B,EAC1B,OAA4B,EAAE,EAC9B,UAAoC,EAAE;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;QAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAwB;QACpC,GAAG,IAAI;QACP,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACzC,IAAI,EAAE,OAAO,GAAG,CAAC;KAClB,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;IAC1E,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,IAAA,0BAAc,EAAI,QAAQ,EAAE,OAAO,CAAC;QAC1C,IAAI,EAAE;YACJ,OAAO;YACP,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,OAAO;YACP,OAAO,EAAE,SAAS;SACnB;KACF,CAAC;AACJ,CAAC"}
|