bun-query-builder 0.1.28 → 0.1.29
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/bin/cli.js +11 -4
- package/dist/client.d.ts +25 -12
- package/dist/orm.d.ts +4 -4
- package/dist/src/index.js +10 -3
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -25203,7 +25203,14 @@ class ModelQueryBuilder {
|
|
|
25203
25203
|
sql2 += ` WHERE ${whereBody}`;
|
|
25204
25204
|
}
|
|
25205
25205
|
const row = await exec.get(sql2, params);
|
|
25206
|
-
|
|
25206
|
+
const v2 = row?.v;
|
|
25207
|
+
if (v2 == null)
|
|
25208
|
+
return null;
|
|
25209
|
+
if (typeof v2 === "string") {
|
|
25210
|
+
const n2 = Number(v2);
|
|
25211
|
+
return v2.trim() !== "" && !Number.isNaN(n2) ? n2 : v2;
|
|
25212
|
+
}
|
|
25213
|
+
return v2;
|
|
25207
25214
|
}
|
|
25208
25215
|
max(column) {
|
|
25209
25216
|
return this.aggregate("MAX", column);
|
|
@@ -25212,10 +25219,10 @@ class ModelQueryBuilder {
|
|
|
25212
25219
|
return this.aggregate("MIN", column);
|
|
25213
25220
|
}
|
|
25214
25221
|
async avg(column) {
|
|
25215
|
-
return await this.aggregate("AVG", column) || 0;
|
|
25222
|
+
return Number(await this.aggregate("AVG", column) ?? 0) || 0;
|
|
25216
25223
|
}
|
|
25217
25224
|
async sum(column) {
|
|
25218
|
-
return await this.aggregate("SUM", column) || 0;
|
|
25225
|
+
return Number(await this.aggregate("SUM", column) ?? 0) || 0;
|
|
25219
25226
|
}
|
|
25220
25227
|
async delete() {
|
|
25221
25228
|
const exec = getExecutor();
|
|
@@ -29929,7 +29936,7 @@ function getPrefix() {
|
|
|
29929
29936
|
}
|
|
29930
29937
|
var prefix = getPrefix();
|
|
29931
29938
|
// package.json
|
|
29932
|
-
var version2 = "0.1.
|
|
29939
|
+
var version2 = "0.1.29";
|
|
29933
29940
|
|
|
29934
29941
|
// bin/cli.ts
|
|
29935
29942
|
init_actions();
|
package/dist/client.d.ts
CHANGED
|
@@ -104,8 +104,11 @@ export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>,
|
|
|
104
104
|
having: (expr: WhereExpression<any>) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
105
105
|
havingRaw: (fragment: SqlFragment) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
106
106
|
addSelect: (...columns: ((keyof DB[TTable]['columns'] & string) | string | SqlFragment)[]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
107
|
-
select?:
|
|
108
|
-
|
|
107
|
+
select?: {
|
|
108
|
+
<K extends keyof DB[TTable]['columns'] & string>(columns: K[]): SelectQueryBuilder<DB, TTable, Pick<DB[TTable]['columns'], K>, TJoined>
|
|
109
|
+
(columns: string | SqlFragment | (string | SqlFragment)[]): SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
110
|
+
}
|
|
111
|
+
selectAll?: () => SelectQueryBuilder<DB, TTable, DB[TTable]['columns'], TJoined>
|
|
109
112
|
orderByRaw: (fragment: SqlFragment) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
110
113
|
union: (other: { toSQL: () => any }) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
111
114
|
unionAll: (other: { toSQL: () => any }) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
@@ -146,7 +149,7 @@ export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>,
|
|
|
146
149
|
}
|
|
147
150
|
exists: () => Promise<boolean>
|
|
148
151
|
doesntExist: () => Promise<boolean>
|
|
149
|
-
cursorPaginate: (perPage: number, cursor?: string | number, column?: string, direction?: 'asc' | 'desc') => Promise<{ data:
|
|
152
|
+
cursorPaginate: (perPage: number, cursor?: string | number, column?: string, direction?: 'asc' | 'desc') => Promise<{ data: SelectedRow<DB, TTable, TSelected>[], meta: { perPage: number, nextCursor: string | number | null } }>
|
|
150
153
|
chunk: (size: number, handler: (rows: any[]) => Promise<void> | void) => Promise<void>
|
|
151
154
|
chunkById: (size: number, column?: string, handler?: (rows: any[]) => Promise<void> | void) => Promise<void>
|
|
152
155
|
eachById: (size: number, column?: string, handler?: (row: any) => Promise<void> | void) => Promise<void>
|
|
@@ -175,8 +178,8 @@ export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>,
|
|
|
175
178
|
count: () => Promise<number>
|
|
176
179
|
avg: (column: keyof DB[TTable]['columns'] & string) => Promise<number>
|
|
177
180
|
sum: (column: keyof DB[TTable]['columns'] & string) => Promise<number>
|
|
178
|
-
max:
|
|
179
|
-
min:
|
|
181
|
+
max: <K extends keyof DB[TTable]['columns'] & string>(column: K) => Promise<DB[TTable]['columns'][K] | null>
|
|
182
|
+
min: <K extends keyof DB[TTable]['columns'] & string>(column: K) => Promise<DB[TTable]['columns'][K] | null>
|
|
180
183
|
readonly rows: TSelected[]
|
|
181
184
|
readonly row: TSelected
|
|
182
185
|
values: () => Promise<any[][]>
|
|
@@ -224,13 +227,19 @@ export declare interface TableQueryBuilder<DB extends DatabaseSchema<any>, TTabl
|
|
|
224
227
|
insert: (data: Partial<DB[TTable]['columns']> | Partial<DB[TTable]['columns']>[]) => InsertQueryBuilder<DB, TTable>
|
|
225
228
|
update: (values: Partial<DB[TTable]['columns']>) => UpdateQueryBuilder<DB, TTable>
|
|
226
229
|
delete: () => DeleteQueryBuilder<DB, TTable>
|
|
227
|
-
select:
|
|
230
|
+
select: <K extends keyof DB[TTable]['columns'] & string>(...columns: K[]) => SelectQueryBuilder<DB, TTable, Pick<DB[TTable]['columns'], K>>
|
|
228
231
|
}
|
|
229
232
|
export declare interface QueryBuilder<DB extends DatabaseSchema<any>> {
|
|
230
|
-
select:
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
select: {
|
|
234
|
+
<TTable extends keyof DB & string, K extends keyof DB[TTable]['columns'] & string>(
|
|
235
|
+
table: TTable,
|
|
236
|
+
...columns: K[]
|
|
237
|
+
): SelectQueryBuilder<DB, TTable, Pick<DB[TTable]['columns'], K>>
|
|
238
|
+
<TTable extends keyof DB & string>(
|
|
239
|
+
table: TTable,
|
|
240
|
+
...columns: ((keyof DB[TTable]['columns'] & string) | `${string} as ${string}`)[]
|
|
241
|
+
): SelectQueryBuilder<DB, TTable, any>
|
|
242
|
+
}
|
|
234
243
|
selectFrom: <TTable extends keyof DB & string>(table: TTable) => TypedSelectQueryBuilder<DB, TTable, DB[TTable]['columns'], TTable, `SELECT * FROM ${TTable}`>
|
|
235
244
|
insertInto: <TTable extends keyof DB & string>(table: TTable) => TypedInsertQueryBuilder<DB, TTable>
|
|
236
245
|
updateTable: <TTable extends keyof DB & string>(table: TTable) => UpdateQueryBuilder<DB, TTable>
|
|
@@ -456,11 +465,15 @@ declare type _TypedDynamicWhereMethods<DB extends DatabaseSchema<any>, TTable ex
|
|
|
456
465
|
value: DB[TTable]['columns'][K],
|
|
457
466
|
) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} AND ${K} = ?`>
|
|
458
467
|
}
|
|
468
|
+
// NOTE: TypedSelectQueryBuilder must NOT also intersect DynamicWhereMethods —
|
|
469
|
+
// _TypedDynamicWhereMethods declares the same `where<Column>` keys, and the
|
|
470
|
+
// untyped variant (returning a plain SelectQueryBuilder) would win overload
|
|
471
|
+
// resolution, silently downgrading `toSQL()` from the composed literal SQL
|
|
472
|
+
// type back to `string` after any dynamic-where call.
|
|
459
473
|
export type TypedSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable, TSql extends string = `SELECT * FROM ${TTable}`,> = Omit<
|
|
460
474
|
BaseSelectQueryBuilder<DB, TTable, TSelected, TJoined>,
|
|
461
475
|
'toSQL' | 'where' | 'andWhere' | 'orWhere' | 'orderBy' | 'limit'
|
|
462
|
-
> &
|
|
463
|
-
& _TypedDynamicWhereMethods<DB, TTable, TSelected, TJoined, TSql>
|
|
476
|
+
> & _TypedDynamicWhereMethods<DB, TTable, TSelected, TJoined, TSql>
|
|
464
477
|
& {
|
|
465
478
|
toSQL: () => TSql
|
|
466
479
|
where: (<K extends keyof DB[TTable]['columns'] & string>(
|
package/dist/orm.d.ts
CHANGED
|
@@ -317,8 +317,8 @@ declare class ModelInstance<TDef extends ModelDefinition, TSelected extends Colu
|
|
|
317
317
|
getAttribute<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown;
|
|
318
318
|
getAttributes(): Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>;
|
|
319
319
|
set<K extends ColumnName<TDef>>(key: K, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): void;
|
|
320
|
-
only<K extends TSelected>(keys: ReadonlyArray<K>):
|
|
321
|
-
except<K extends TSelected>(keys: ReadonlyArray<K>):
|
|
320
|
+
only<K extends TSelected>(keys: ReadonlyArray<K>): Pick<ModelAttributes<TDef>, K & keyof ModelAttributes<TDef>>;
|
|
321
|
+
except<K extends TSelected>(keys: ReadonlyArray<K>): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, K>;
|
|
322
322
|
getRelation<R extends InferRelationNames<TDef> & string>(name: R): LoadedRelationValue<TDef, R>;
|
|
323
323
|
setRelation(name: string, data: ModelInstance<any, any>[] | ModelInstance<any, any> | null): void;
|
|
324
324
|
getLoadedRelations(): Record<string, ModelInstance<any, any>[] | ModelInstance<any, any> | null>;
|
|
@@ -440,8 +440,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
|
|
|
440
440
|
to: number | null
|
|
441
441
|
}>;
|
|
442
442
|
pluck<K extends ColumnName<TDef>>(column: K): Promise<(K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]>;
|
|
443
|
-
max<K extends ColumnName<TDef>>(column: K): Promise<number | null>;
|
|
444
|
-
min<K extends ColumnName<TDef>>(column: K): Promise<number | null>;
|
|
443
|
+
max<K extends ColumnName<TDef>>(column: K): Promise<(K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : number) | null>;
|
|
444
|
+
min<K extends ColumnName<TDef>>(column: K): Promise<(K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : number) | null>;
|
|
445
445
|
avg<K extends NumericColumns<TDef>>(column: K): Promise<number>;
|
|
446
446
|
sum<K extends NumericColumns<TDef>>(column: K): Promise<number>;
|
|
447
447
|
delete(): Promise<number>;
|
package/dist/src/index.js
CHANGED
|
@@ -25203,7 +25203,14 @@ class ModelQueryBuilder {
|
|
|
25203
25203
|
sql2 += ` WHERE ${whereBody}`;
|
|
25204
25204
|
}
|
|
25205
25205
|
const row = await exec.get(sql2, params);
|
|
25206
|
-
|
|
25206
|
+
const v2 = row?.v;
|
|
25207
|
+
if (v2 == null)
|
|
25208
|
+
return null;
|
|
25209
|
+
if (typeof v2 === "string") {
|
|
25210
|
+
const n2 = Number(v2);
|
|
25211
|
+
return v2.trim() !== "" && !Number.isNaN(n2) ? n2 : v2;
|
|
25212
|
+
}
|
|
25213
|
+
return v2;
|
|
25207
25214
|
}
|
|
25208
25215
|
max(column) {
|
|
25209
25216
|
return this.aggregate("MAX", column);
|
|
@@ -25212,10 +25219,10 @@ class ModelQueryBuilder {
|
|
|
25212
25219
|
return this.aggregate("MIN", column);
|
|
25213
25220
|
}
|
|
25214
25221
|
async avg(column) {
|
|
25215
|
-
return await this.aggregate("AVG", column) || 0;
|
|
25222
|
+
return Number(await this.aggregate("AVG", column) ?? 0) || 0;
|
|
25216
25223
|
}
|
|
25217
25224
|
async sum(column) {
|
|
25218
|
-
return await this.aggregate("SUM", column) || 0;
|
|
25225
|
+
return Number(await this.aggregate("SUM", column) ?? 0) || 0;
|
|
25219
25226
|
}
|
|
25220
25227
|
async delete() {
|
|
25221
25228
|
const exec = getExecutor();
|
package/package.json
CHANGED