bun-query-builder 0.2.21 → 0.2.23
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 +38 -12
- package/dist/client.d.ts +4 -0
- package/dist/src/index.js +37 -11
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -15800,6 +15800,18 @@ function createQueryBuilder(state) {
|
|
|
15800
15800
|
}
|
|
15801
15801
|
return this;
|
|
15802
15802
|
},
|
|
15803
|
+
whereNull(column) {
|
|
15804
|
+
const keyword = SQL_PATTERNS.WHERE.test(sqlText) ? "AND" : "WHERE";
|
|
15805
|
+
sqlText = `${sqlText} ${keyword} ${quoteId(String(column))} IS NULL`;
|
|
15806
|
+
built = _sql.unsafe(sqlText, params);
|
|
15807
|
+
return this;
|
|
15808
|
+
},
|
|
15809
|
+
whereNotNull(column) {
|
|
15810
|
+
const keyword = SQL_PATTERNS.WHERE.test(sqlText) ? "AND" : "WHERE";
|
|
15811
|
+
sqlText = `${sqlText} ${keyword} ${quoteId(String(column))} IS NOT NULL`;
|
|
15812
|
+
built = _sql.unsafe(sqlText, params);
|
|
15813
|
+
return this;
|
|
15814
|
+
},
|
|
15803
15815
|
returning(...cols) {
|
|
15804
15816
|
const retText = `${sqlText} RETURNING ${cols.join(", ")}`;
|
|
15805
15817
|
const q = params.length > 0 ? _sql.unsafe(retText, params) : _sql.unsafe(retText);
|
|
@@ -15927,6 +15939,16 @@ function createQueryBuilder(state) {
|
|
|
15927
15939
|
built = applyWhere({}, ensureDelBuilt(), expr);
|
|
15928
15940
|
return this;
|
|
15929
15941
|
},
|
|
15942
|
+
whereNull(column) {
|
|
15943
|
+
sqlText += ` ${getWhereKeyword()} ${quoteId(String(column))} IS NULL`;
|
|
15944
|
+
built = null;
|
|
15945
|
+
return this;
|
|
15946
|
+
},
|
|
15947
|
+
whereNotNull(column) {
|
|
15948
|
+
sqlText += ` ${getWhereKeyword()} ${quoteId(String(column))} IS NOT NULL`;
|
|
15949
|
+
built = null;
|
|
15950
|
+
return this;
|
|
15951
|
+
},
|
|
15930
15952
|
returning(...cols) {
|
|
15931
15953
|
const retText = `${sqlText} RETURNING ${cols.join(", ")}`;
|
|
15932
15954
|
const q = delParams.length > 0 ? _sql.unsafe(retText, delParams) : _sql.unsafe(retText);
|
|
@@ -17890,20 +17912,23 @@ async function buildPgTable(qb, table, enumLabels) {
|
|
|
17890
17912
|
WHERE t.relname = $1 AND t.relkind = 'r'
|
|
17891
17913
|
ORDER BY i.relname, ord`, [table]);
|
|
17892
17914
|
const fkRows = await qb.unsafe(`SELECT kcu.column_name, ccu.table_name AS ref_table, ccu.column_name AS ref_column,
|
|
17893
|
-
tc.constraint_name, rc.delete_rule, rc.update_rule
|
|
17894
|
-
(SELECT COUNT(*) FROM information_schema.key_column_usage count_kcu
|
|
17895
|
-
WHERE count_kcu.constraint_name = tc.constraint_name
|
|
17896
|
-
AND count_kcu.constraint_schema = tc.constraint_schema) AS constraint_column_count
|
|
17915
|
+
tc.constraint_name, rc.delete_rule, rc.update_rule
|
|
17897
17916
|
FROM information_schema.table_constraints tc
|
|
17898
17917
|
JOIN information_schema.key_column_usage kcu ON kcu.constraint_name = tc.constraint_name
|
|
17899
17918
|
JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_name
|
|
17900
17919
|
JOIN information_schema.referential_constraints rc ON rc.constraint_name = tc.constraint_name
|
|
17901
17920
|
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = $1 AND tc.table_schema = 'public'`, [table]);
|
|
17902
17921
|
const fkByColumn = new Map;
|
|
17922
|
+
const fkColumnCounts = new Map;
|
|
17923
|
+
for (const fk of fkRows) {
|
|
17924
|
+
const constraintName = String(fk.constraint_name);
|
|
17925
|
+
fkColumnCounts.set(constraintName, (fkColumnCounts.get(constraintName) ?? 0) + 1);
|
|
17926
|
+
}
|
|
17903
17927
|
for (const fk of fkRows) {
|
|
17904
17928
|
const name = String(fk.column_name);
|
|
17905
17929
|
const existing = fkByColumn.get(name);
|
|
17906
|
-
const
|
|
17930
|
+
const constraintName = String(fk.constraint_name);
|
|
17931
|
+
const constraintNames = fkColumnCounts.get(constraintName) === 1 ? [...new Set([...existing?.constraintNames ?? [], constraintName])] : existing?.constraintNames;
|
|
17907
17932
|
fkByColumn.set(name, existing ? { ...existing, constraintNames } : {
|
|
17908
17933
|
table: String(fk.ref_table),
|
|
17909
17934
|
column: String(fk.ref_column ?? "id"),
|
|
@@ -17948,21 +17973,22 @@ async function buildMysqlTable(qb, table) {
|
|
|
17948
17973
|
WHERE table_name = ? AND table_schema = DATABASE()
|
|
17949
17974
|
ORDER BY index_name, seq_in_index`, [table]);
|
|
17950
17975
|
const fkRows = await qb.unsafe(`SELECT kcu.column_name, kcu.referenced_table_name AS ref_table, kcu.referenced_column_name AS ref_column,
|
|
17951
|
-
kcu.constraint_name, rc.delete_rule, rc.update_rule
|
|
17952
|
-
(SELECT COUNT(*) FROM information_schema.key_column_usage count_kcu
|
|
17953
|
-
WHERE count_kcu.constraint_name = kcu.constraint_name
|
|
17954
|
-
AND count_kcu.constraint_schema = kcu.constraint_schema) AS constraint_column_count
|
|
17976
|
+
kcu.constraint_name, rc.delete_rule, rc.update_rule
|
|
17955
17977
|
FROM information_schema.key_column_usage kcu
|
|
17956
17978
|
JOIN information_schema.referential_constraints rc
|
|
17957
17979
|
ON rc.constraint_name = kcu.constraint_name AND rc.constraint_schema = kcu.table_schema
|
|
17958
17980
|
WHERE kcu.table_name = ? AND kcu.table_schema = DATABASE() AND kcu.referenced_table_name IS NOT NULL`, [table]);
|
|
17959
17981
|
const fkByColumn = new Map;
|
|
17982
|
+
const fkColumnCounts = new Map;
|
|
17983
|
+
for (const fk of fkRows) {
|
|
17984
|
+
const constraintName = String(fk.constraint_name ?? fk.CONSTRAINT_NAME);
|
|
17985
|
+
fkColumnCounts.set(constraintName, (fkColumnCounts.get(constraintName) ?? 0) + 1);
|
|
17986
|
+
}
|
|
17960
17987
|
for (const fk of fkRows) {
|
|
17961
17988
|
const name = String(fk.column_name ?? fk.COLUMN_NAME);
|
|
17962
17989
|
const existing = fkByColumn.get(name);
|
|
17963
|
-
const columnCount = Number(fk.constraint_column_count ?? fk.CONSTRAINT_COLUMN_COUNT);
|
|
17964
17990
|
const constraintName = String(fk.constraint_name ?? fk.CONSTRAINT_NAME);
|
|
17965
|
-
const constraintNames =
|
|
17991
|
+
const constraintNames = fkColumnCounts.get(constraintName) === 1 ? [...new Set([...existing?.constraintNames ?? [], constraintName])] : existing?.constraintNames;
|
|
17966
17992
|
fkByColumn.set(name, existing ? { ...existing, constraintNames } : {
|
|
17967
17993
|
table: String(fk.ref_table ?? fk.REF_TABLE),
|
|
17968
17994
|
column: String(fk.ref_column ?? fk.REF_COLUMN ?? "id"),
|
|
@@ -31630,7 +31656,7 @@ function getPrefix() {
|
|
|
31630
31656
|
}
|
|
31631
31657
|
var prefix = getPrefix();
|
|
31632
31658
|
// package.json
|
|
31633
|
-
var version2 = "0.2.
|
|
31659
|
+
var version2 = "0.2.23";
|
|
31634
31660
|
|
|
31635
31661
|
// bin/cli.ts
|
|
31636
31662
|
init_actions();
|
package/dist/client.d.ts
CHANGED
|
@@ -238,6 +238,8 @@ export declare interface InsertQueryBuilder<DB extends DatabaseSchema<any>, TTab
|
|
|
238
238
|
export declare interface UpdateQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string> {
|
|
239
239
|
set: (values: Partial<{ [K in keyof DB[TTable]['columns']]: DB[TTable]['columns'][K] | SqlFragment }>) => UpdateQueryBuilder<DB, TTable>
|
|
240
240
|
where: (expr: WhereExpression<DB[TTable]['columns']> | string | SqlFragment, op?: WhereOperator, value?: any) => UpdateQueryBuilder<DB, TTable>
|
|
241
|
+
whereNull: <K extends keyof DB[TTable]['columns'] & string>(column: K) => UpdateQueryBuilder<DB, TTable>
|
|
242
|
+
whereNotNull: <K extends keyof DB[TTable]['columns'] & string>(column: K) => UpdateQueryBuilder<DB, TTable>
|
|
241
243
|
returning: <K extends keyof DB[TTable]['columns'] & string>(...cols: K[]) => SelectQueryBuilder<DB, TTable, Pick<DB[TTable]['columns'], K>>
|
|
242
244
|
toSQL: () => string
|
|
243
245
|
execute: () => Promise<number>
|
|
@@ -247,6 +249,8 @@ export declare interface UpdateQueryBuilder<DB extends DatabaseSchema<any>, TTab
|
|
|
247
249
|
}
|
|
248
250
|
export declare interface DeleteQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string> {
|
|
249
251
|
where: (expr: WhereExpression<DB[TTable]['columns']> | string, op?: WhereOperator, value?: any) => DeleteQueryBuilder<DB, TTable>
|
|
252
|
+
whereNull: <K extends keyof DB[TTable]['columns'] & string>(column: K) => DeleteQueryBuilder<DB, TTable>
|
|
253
|
+
whereNotNull: <K extends keyof DB[TTable]['columns'] & string>(column: K) => DeleteQueryBuilder<DB, TTable>
|
|
250
254
|
returning: <K extends keyof DB[TTable]['columns'] & string>(...cols: K[]) => SelectQueryBuilder<DB, TTable, Pick<DB[TTable]['columns'], K>>
|
|
251
255
|
toSQL: () => string
|
|
252
256
|
execute: () => Promise<number>
|
package/dist/src/index.js
CHANGED
|
@@ -15799,6 +15799,18 @@ function createQueryBuilder(state) {
|
|
|
15799
15799
|
}
|
|
15800
15800
|
return this;
|
|
15801
15801
|
},
|
|
15802
|
+
whereNull(column) {
|
|
15803
|
+
const keyword = SQL_PATTERNS.WHERE.test(sqlText) ? "AND" : "WHERE";
|
|
15804
|
+
sqlText = `${sqlText} ${keyword} ${quoteId(String(column))} IS NULL`;
|
|
15805
|
+
built = _sql.unsafe(sqlText, params);
|
|
15806
|
+
return this;
|
|
15807
|
+
},
|
|
15808
|
+
whereNotNull(column) {
|
|
15809
|
+
const keyword = SQL_PATTERNS.WHERE.test(sqlText) ? "AND" : "WHERE";
|
|
15810
|
+
sqlText = `${sqlText} ${keyword} ${quoteId(String(column))} IS NOT NULL`;
|
|
15811
|
+
built = _sql.unsafe(sqlText, params);
|
|
15812
|
+
return this;
|
|
15813
|
+
},
|
|
15802
15814
|
returning(...cols) {
|
|
15803
15815
|
const retText = `${sqlText} RETURNING ${cols.join(", ")}`;
|
|
15804
15816
|
const q = params.length > 0 ? _sql.unsafe(retText, params) : _sql.unsafe(retText);
|
|
@@ -15926,6 +15938,16 @@ function createQueryBuilder(state) {
|
|
|
15926
15938
|
built = applyWhere({}, ensureDelBuilt(), expr);
|
|
15927
15939
|
return this;
|
|
15928
15940
|
},
|
|
15941
|
+
whereNull(column) {
|
|
15942
|
+
sqlText += ` ${getWhereKeyword()} ${quoteId(String(column))} IS NULL`;
|
|
15943
|
+
built = null;
|
|
15944
|
+
return this;
|
|
15945
|
+
},
|
|
15946
|
+
whereNotNull(column) {
|
|
15947
|
+
sqlText += ` ${getWhereKeyword()} ${quoteId(String(column))} IS NOT NULL`;
|
|
15948
|
+
built = null;
|
|
15949
|
+
return this;
|
|
15950
|
+
},
|
|
15929
15951
|
returning(...cols) {
|
|
15930
15952
|
const retText = `${sqlText} RETURNING ${cols.join(", ")}`;
|
|
15931
15953
|
const q = delParams.length > 0 ? _sql.unsafe(retText, delParams) : _sql.unsafe(retText);
|
|
@@ -17889,20 +17911,23 @@ async function buildPgTable(qb, table, enumLabels) {
|
|
|
17889
17911
|
WHERE t.relname = $1 AND t.relkind = 'r'
|
|
17890
17912
|
ORDER BY i.relname, ord`, [table]);
|
|
17891
17913
|
const fkRows = await qb.unsafe(`SELECT kcu.column_name, ccu.table_name AS ref_table, ccu.column_name AS ref_column,
|
|
17892
|
-
tc.constraint_name, rc.delete_rule, rc.update_rule
|
|
17893
|
-
(SELECT COUNT(*) FROM information_schema.key_column_usage count_kcu
|
|
17894
|
-
WHERE count_kcu.constraint_name = tc.constraint_name
|
|
17895
|
-
AND count_kcu.constraint_schema = tc.constraint_schema) AS constraint_column_count
|
|
17914
|
+
tc.constraint_name, rc.delete_rule, rc.update_rule
|
|
17896
17915
|
FROM information_schema.table_constraints tc
|
|
17897
17916
|
JOIN information_schema.key_column_usage kcu ON kcu.constraint_name = tc.constraint_name
|
|
17898
17917
|
JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_name
|
|
17899
17918
|
JOIN information_schema.referential_constraints rc ON rc.constraint_name = tc.constraint_name
|
|
17900
17919
|
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = $1 AND tc.table_schema = 'public'`, [table]);
|
|
17901
17920
|
const fkByColumn = new Map;
|
|
17921
|
+
const fkColumnCounts = new Map;
|
|
17922
|
+
for (const fk of fkRows) {
|
|
17923
|
+
const constraintName = String(fk.constraint_name);
|
|
17924
|
+
fkColumnCounts.set(constraintName, (fkColumnCounts.get(constraintName) ?? 0) + 1);
|
|
17925
|
+
}
|
|
17902
17926
|
for (const fk of fkRows) {
|
|
17903
17927
|
const name = String(fk.column_name);
|
|
17904
17928
|
const existing = fkByColumn.get(name);
|
|
17905
|
-
const
|
|
17929
|
+
const constraintName = String(fk.constraint_name);
|
|
17930
|
+
const constraintNames = fkColumnCounts.get(constraintName) === 1 ? [...new Set([...existing?.constraintNames ?? [], constraintName])] : existing?.constraintNames;
|
|
17906
17931
|
fkByColumn.set(name, existing ? { ...existing, constraintNames } : {
|
|
17907
17932
|
table: String(fk.ref_table),
|
|
17908
17933
|
column: String(fk.ref_column ?? "id"),
|
|
@@ -17947,21 +17972,22 @@ async function buildMysqlTable(qb, table) {
|
|
|
17947
17972
|
WHERE table_name = ? AND table_schema = DATABASE()
|
|
17948
17973
|
ORDER BY index_name, seq_in_index`, [table]);
|
|
17949
17974
|
const fkRows = await qb.unsafe(`SELECT kcu.column_name, kcu.referenced_table_name AS ref_table, kcu.referenced_column_name AS ref_column,
|
|
17950
|
-
kcu.constraint_name, rc.delete_rule, rc.update_rule
|
|
17951
|
-
(SELECT COUNT(*) FROM information_schema.key_column_usage count_kcu
|
|
17952
|
-
WHERE count_kcu.constraint_name = kcu.constraint_name
|
|
17953
|
-
AND count_kcu.constraint_schema = kcu.constraint_schema) AS constraint_column_count
|
|
17975
|
+
kcu.constraint_name, rc.delete_rule, rc.update_rule
|
|
17954
17976
|
FROM information_schema.key_column_usage kcu
|
|
17955
17977
|
JOIN information_schema.referential_constraints rc
|
|
17956
17978
|
ON rc.constraint_name = kcu.constraint_name AND rc.constraint_schema = kcu.table_schema
|
|
17957
17979
|
WHERE kcu.table_name = ? AND kcu.table_schema = DATABASE() AND kcu.referenced_table_name IS NOT NULL`, [table]);
|
|
17958
17980
|
const fkByColumn = new Map;
|
|
17981
|
+
const fkColumnCounts = new Map;
|
|
17982
|
+
for (const fk of fkRows) {
|
|
17983
|
+
const constraintName = String(fk.constraint_name ?? fk.CONSTRAINT_NAME);
|
|
17984
|
+
fkColumnCounts.set(constraintName, (fkColumnCounts.get(constraintName) ?? 0) + 1);
|
|
17985
|
+
}
|
|
17959
17986
|
for (const fk of fkRows) {
|
|
17960
17987
|
const name = String(fk.column_name ?? fk.COLUMN_NAME);
|
|
17961
17988
|
const existing = fkByColumn.get(name);
|
|
17962
|
-
const columnCount = Number(fk.constraint_column_count ?? fk.CONSTRAINT_COLUMN_COUNT);
|
|
17963
17989
|
const constraintName = String(fk.constraint_name ?? fk.CONSTRAINT_NAME);
|
|
17964
|
-
const constraintNames =
|
|
17990
|
+
const constraintNames = fkColumnCounts.get(constraintName) === 1 ? [...new Set([...existing?.constraintNames ?? [], constraintName])] : existing?.constraintNames;
|
|
17965
17991
|
fkByColumn.set(name, existing ? { ...existing, constraintNames } : {
|
|
17966
17992
|
table: String(fk.ref_table ?? fk.REF_TABLE),
|
|
17967
17993
|
column: String(fk.ref_column ?? fk.REF_COLUMN ?? "id"),
|
package/package.json
CHANGED