pqb 0.35.6 → 0.36.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.
- package/dist/index.d.ts +16 -6
- package/dist/index.js +33 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -5057,9 +5057,14 @@ type SelectArgs<T extends SelectSelf> = ('*' | keyof T['meta']['selectable'])[];
|
|
|
5057
5057
|
interface SelectAsArg<T extends SelectSelf> {
|
|
5058
5058
|
[K: string]: keyof T['meta']['selectable'] | Expression | ((q: {
|
|
5059
5059
|
[K in keyof T]: K extends keyof T['relations'] ? T[K] extends (...args: any[]) => any ? ReturnType<T[K]> : never : T[K];
|
|
5060
|
-
}) =>
|
|
5061
|
-
|
|
5062
|
-
|
|
5060
|
+
}) => unknown);
|
|
5061
|
+
}
|
|
5062
|
+
type SelectAsFnReturnType = {
|
|
5063
|
+
result: QueryColumns;
|
|
5064
|
+
returnType: Exclude<QueryReturnType, 'rows'>;
|
|
5065
|
+
} | Expression;
|
|
5066
|
+
interface SelectAsCheckReturnTypes {
|
|
5067
|
+
[K: string]: PropertyKey | Expression | ((q: never) => SelectAsFnReturnType);
|
|
5063
5068
|
}
|
|
5064
5069
|
type SelectResult<T extends SelectSelf, Columns extends PropertyKey[]> = {
|
|
5065
5070
|
[K in keyof T]: K extends 'result' ? ('*' extends Columns[number] ? {
|
|
@@ -5072,7 +5077,7 @@ type SelectResult<T extends SelectSelf, Columns extends PropertyKey[]> = {
|
|
|
5072
5077
|
[K in Columns[number] as T['meta']['selectable'][K]['as']]: T['meta']['selectable'][K]['column'];
|
|
5073
5078
|
}) & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown)>> : T[K];
|
|
5074
5079
|
} & QueryMetaHasSelect;
|
|
5075
|
-
type SelectResultObj<T extends SelectSelf, Obj> = {
|
|
5080
|
+
type SelectResultObj<T extends SelectSelf, Obj> = Obj extends SelectAsCheckReturnTypes ? {
|
|
5076
5081
|
[K in keyof T]: K extends 'meta' ? T['meta'] & {
|
|
5077
5082
|
hasSelect: true;
|
|
5078
5083
|
selectable: SelectAsSelectable<Obj>;
|
|
@@ -5081,7 +5086,9 @@ type SelectResultObj<T extends SelectSelf, Obj> = {
|
|
|
5081
5086
|
} : K extends 'then' ? QueryThen<GetQueryResult<T, {
|
|
5082
5087
|
[K in T['meta']['hasSelect'] extends true ? keyof Obj | keyof T['result'] : keyof Obj]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends keyof T['result'] ? T['result'][K] : never;
|
|
5083
5088
|
}>> : T[K];
|
|
5084
|
-
}
|
|
5089
|
+
} : `Invalid return type of ${{
|
|
5090
|
+
[K in keyof Obj]: Obj[K] extends (...args: any[]) => any ? ReturnType<Obj[K]> extends SelectAsFnReturnType ? never : K : never;
|
|
5091
|
+
}[keyof Obj] & string}`;
|
|
5085
5092
|
type SelectResultColumnsAndObj<T extends SelectSelf, Columns extends PropertyKey[], Obj> = {
|
|
5086
5093
|
[K in keyof T]: K extends 'meta' ? T['meta'] & {
|
|
5087
5094
|
hasSelect: true;
|
|
@@ -7355,7 +7362,10 @@ interface ColumnData extends ColumnDataBase {
|
|
|
7355
7362
|
compression?: string;
|
|
7356
7363
|
foreignKeys?: TableData.ColumnReferences[];
|
|
7357
7364
|
identity?: TableData.Identity;
|
|
7358
|
-
generated
|
|
7365
|
+
generated?(ctx: {
|
|
7366
|
+
values: unknown[];
|
|
7367
|
+
snakeCase: boolean | undefined;
|
|
7368
|
+
}, quotedAs?: string): string;
|
|
7359
7369
|
}
|
|
7360
7370
|
interface ColumnFromDbParams {
|
|
7361
7371
|
isNullable?: boolean;
|
package/dist/index.js
CHANGED
|
@@ -380,7 +380,8 @@ class ColumnType extends orchidCore.ColumnTypeBase {
|
|
|
380
380
|
* @param args - raw SQL
|
|
381
381
|
*/
|
|
382
382
|
generated(...args) {
|
|
383
|
-
|
|
383
|
+
const sql = raw(...args);
|
|
384
|
+
return orchidCore.setColumnData(this, "generated", (...args2) => sql.toSQL(...args2));
|
|
384
385
|
}
|
|
385
386
|
}
|
|
386
387
|
|
|
@@ -461,6 +462,10 @@ const columnsShapeToCode = (shape, t) => {
|
|
|
461
462
|
for (const key in shape) {
|
|
462
463
|
if (hasTimestamps && (key === "createdAt" || key === "updatedAt"))
|
|
463
464
|
continue;
|
|
465
|
+
const column = shape[key];
|
|
466
|
+
const name = column.data.name;
|
|
467
|
+
if (name === key)
|
|
468
|
+
column.data.name = void 0;
|
|
464
469
|
code.push(
|
|
465
470
|
...combineCodeElements([
|
|
466
471
|
`${orchidCore.quoteObjectKey(key)}: `,
|
|
@@ -468,6 +473,8 @@ const columnsShapeToCode = (shape, t) => {
|
|
|
468
473
|
","
|
|
469
474
|
])
|
|
470
475
|
);
|
|
476
|
+
if (name === key)
|
|
477
|
+
column.data.name = name;
|
|
471
478
|
}
|
|
472
479
|
if (hasTimestamps) {
|
|
473
480
|
code.push(`...${t}.timestamps(),`);
|
|
@@ -1517,26 +1524,33 @@ class TsVectorColumn extends ColumnType {
|
|
|
1517
1524
|
* @param args
|
|
1518
1525
|
*/
|
|
1519
1526
|
generated(...args) {
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1527
|
+
return orchidCore.setColumnData(this, "generated", (ctx, quotedAs) => {
|
|
1528
|
+
const first = args[0];
|
|
1529
|
+
if (typeof first === "string" || !("raw" in first)) {
|
|
1530
|
+
const target = typeof first === "string" ? args[1] : first;
|
|
1531
|
+
const language = typeof first === "string" ? first : this.defaultLanguage;
|
|
1532
|
+
const { snakeCase } = ctx;
|
|
1533
|
+
let sql;
|
|
1534
|
+
if (Array.isArray(target)) {
|
|
1535
|
+
const columns = target.length === 1 ? `"${snakeCase ? orchidCore.toSnakeCase(target[0]) : target[0]}"` : target.map(
|
|
1536
|
+
(column) => `coalesce("${snakeCase ? orchidCore.toSnakeCase(column) : column}", '')`
|
|
1537
|
+
).join(` || ' ' || `);
|
|
1538
|
+
sql = `to_tsvector('${language}', ${columns})`;
|
|
1539
|
+
} else {
|
|
1540
|
+
for (const key in target) {
|
|
1541
|
+
sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${snakeCase ? orchidCore.toSnakeCase(key) : key}", '')), '${target[key]}')`;
|
|
1542
|
+
}
|
|
1543
|
+
if (sql) {
|
|
1544
|
+
sql += ")";
|
|
1545
|
+
} else {
|
|
1546
|
+
throw new Error("Empty target in the text search generated column");
|
|
1547
|
+
}
|
|
1531
1548
|
}
|
|
1532
|
-
|
|
1533
|
-
|
|
1549
|
+
return sql;
|
|
1550
|
+
} else {
|
|
1551
|
+
return raw(...args).toSQL(ctx, quotedAs);
|
|
1534
1552
|
}
|
|
1535
|
-
|
|
1536
|
-
arr.raw = arr;
|
|
1537
|
-
args = [arr];
|
|
1538
|
-
}
|
|
1539
|
-
return super.generated(...args);
|
|
1553
|
+
});
|
|
1540
1554
|
}
|
|
1541
1555
|
}
|
|
1542
1556
|
class TsQueryColumn extends ColumnType {
|