@type32/tauri-sqlite-orm 0.2.2 → 0.2.3
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.mts +20 -3
- package/dist/index.d.ts +20 -3
- package/dist/index.js +58 -0
- package/dist/index.mjs +58 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -80,10 +80,23 @@ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns exten
|
|
|
80
80
|
innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
|
|
81
81
|
include(relations: IncludeRelations<TTable>): this;
|
|
82
82
|
private buildJoins;
|
|
83
|
-
execute(): Promise<
|
|
83
|
+
execute(): Promise<InferSelectModel<TTable>[]>;
|
|
84
84
|
private processRelationResults;
|
|
85
|
-
all(): Promise<
|
|
86
|
-
get(): Promise<
|
|
85
|
+
all(): Promise<InferSelectModel<TTable>[]>;
|
|
86
|
+
get(): Promise<InferSelectModel<TTable> | undefined>;
|
|
87
|
+
exists(): Promise<boolean>;
|
|
88
|
+
count(): Promise<number>;
|
|
89
|
+
first(): Promise<InferSelectModel<TTable> | undefined>;
|
|
90
|
+
pluck<K extends keyof TTable['_']['columns']>(column: K): Promise<InferSelectModel<TTable>[K][]>;
|
|
91
|
+
paginate(page?: number, pageSize?: number): Promise<{
|
|
92
|
+
data: InferSelectModel<TTable>[];
|
|
93
|
+
total: number;
|
|
94
|
+
page: number;
|
|
95
|
+
pageSize: number;
|
|
96
|
+
totalPages: number;
|
|
97
|
+
hasNextPage: boolean;
|
|
98
|
+
hasPrevPage: boolean;
|
|
99
|
+
}>;
|
|
87
100
|
toSQL(): {
|
|
88
101
|
sql: string;
|
|
89
102
|
params: any[];
|
|
@@ -268,6 +281,10 @@ declare class TauriORM {
|
|
|
268
281
|
insert<T extends AnyTable>(table: T): InsertQueryBuilder<T>;
|
|
269
282
|
update<T extends AnyTable>(table: T): UpdateQueryBuilder<T>;
|
|
270
283
|
delete<T extends AnyTable>(table: T): DeleteQueryBuilder<T>;
|
|
284
|
+
upsert<T extends AnyTable>(table: T, data: InferInsertModel<T>, conflictTarget: (keyof T['_']['columns'])[]): Promise<T extends AnyTable ? {
|
|
285
|
+
lastInsertId: number;
|
|
286
|
+
rowsAffected: number;
|
|
287
|
+
}[] : never>;
|
|
271
288
|
$with(alias: string): {
|
|
272
289
|
as: (query: {
|
|
273
290
|
sql: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -80,10 +80,23 @@ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns exten
|
|
|
80
80
|
innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
|
|
81
81
|
include(relations: IncludeRelations<TTable>): this;
|
|
82
82
|
private buildJoins;
|
|
83
|
-
execute(): Promise<
|
|
83
|
+
execute(): Promise<InferSelectModel<TTable>[]>;
|
|
84
84
|
private processRelationResults;
|
|
85
|
-
all(): Promise<
|
|
86
|
-
get(): Promise<
|
|
85
|
+
all(): Promise<InferSelectModel<TTable>[]>;
|
|
86
|
+
get(): Promise<InferSelectModel<TTable> | undefined>;
|
|
87
|
+
exists(): Promise<boolean>;
|
|
88
|
+
count(): Promise<number>;
|
|
89
|
+
first(): Promise<InferSelectModel<TTable> | undefined>;
|
|
90
|
+
pluck<K extends keyof TTable['_']['columns']>(column: K): Promise<InferSelectModel<TTable>[K][]>;
|
|
91
|
+
paginate(page?: number, pageSize?: number): Promise<{
|
|
92
|
+
data: InferSelectModel<TTable>[];
|
|
93
|
+
total: number;
|
|
94
|
+
page: number;
|
|
95
|
+
pageSize: number;
|
|
96
|
+
totalPages: number;
|
|
97
|
+
hasNextPage: boolean;
|
|
98
|
+
hasPrevPage: boolean;
|
|
99
|
+
}>;
|
|
87
100
|
toSQL(): {
|
|
88
101
|
sql: string;
|
|
89
102
|
params: any[];
|
|
@@ -268,6 +281,10 @@ declare class TauriORM {
|
|
|
268
281
|
insert<T extends AnyTable>(table: T): InsertQueryBuilder<T>;
|
|
269
282
|
update<T extends AnyTable>(table: T): UpdateQueryBuilder<T>;
|
|
270
283
|
delete<T extends AnyTable>(table: T): DeleteQueryBuilder<T>;
|
|
284
|
+
upsert<T extends AnyTable>(table: T, data: InferInsertModel<T>, conflictTarget: (keyof T['_']['columns'])[]): Promise<T extends AnyTable ? {
|
|
285
|
+
lastInsertId: number;
|
|
286
|
+
rowsAffected: number;
|
|
287
|
+
}[] : never>;
|
|
271
288
|
$with(alias: string): {
|
|
272
289
|
as: (query: {
|
|
273
290
|
sql: string;
|
package/dist/index.js
CHANGED
|
@@ -594,6 +594,57 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
|
|
|
594
594
|
const result = await this.execute();
|
|
595
595
|
return result[0];
|
|
596
596
|
}
|
|
597
|
+
async exists() {
|
|
598
|
+
const originalColumns = this.selectedColumns;
|
|
599
|
+
this.selectedColumns = ["1"];
|
|
600
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
601
|
+
const query = `SELECT 1 ${this.query}${joinSql} LIMIT 1`;
|
|
602
|
+
const params = [...this.params, ...joinParams];
|
|
603
|
+
this.selectedColumns = originalColumns;
|
|
604
|
+
const result = await this.db.select(query, params);
|
|
605
|
+
return result.length > 0;
|
|
606
|
+
}
|
|
607
|
+
async count() {
|
|
608
|
+
const originalColumns = this.selectedColumns;
|
|
609
|
+
this.selectedColumns = ["COUNT(*) as count"];
|
|
610
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
611
|
+
const query = `SELECT COUNT(*) as count ${this.query}${joinSql}`;
|
|
612
|
+
const params = [...this.params, ...joinParams];
|
|
613
|
+
this.selectedColumns = originalColumns;
|
|
614
|
+
const result = await this.db.select(query, params);
|
|
615
|
+
return result[0]?.count || 0;
|
|
616
|
+
}
|
|
617
|
+
async first() {
|
|
618
|
+
return this.get();
|
|
619
|
+
}
|
|
620
|
+
async pluck(column) {
|
|
621
|
+
const columnName = this.table._.columns[column]._.name;
|
|
622
|
+
const originalColumns = this.selectedColumns;
|
|
623
|
+
this.selectedColumns = [`${this.selectedTableAlias}.${columnName} AS "${columnName}"`];
|
|
624
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
625
|
+
const query = `SELECT ${this.selectedColumns.join(", ")} ${this.query}${joinSql}`;
|
|
626
|
+
const params = [...this.params, ...joinParams];
|
|
627
|
+
this.selectedColumns = originalColumns;
|
|
628
|
+
const results = await this.db.select(query, params);
|
|
629
|
+
return results.map((row) => row[columnName]);
|
|
630
|
+
}
|
|
631
|
+
async paginate(page = 1, pageSize = 10) {
|
|
632
|
+
if (page < 1) page = 1;
|
|
633
|
+
if (pageSize < 1) pageSize = 10;
|
|
634
|
+
const total = await this.count();
|
|
635
|
+
const totalPages = Math.ceil(total / pageSize);
|
|
636
|
+
const offset = (page - 1) * pageSize;
|
|
637
|
+
const data = await this.limit(pageSize).offset(offset).all();
|
|
638
|
+
return {
|
|
639
|
+
data,
|
|
640
|
+
total,
|
|
641
|
+
page,
|
|
642
|
+
pageSize,
|
|
643
|
+
totalPages,
|
|
644
|
+
hasNextPage: page < totalPages,
|
|
645
|
+
hasPrevPage: page > 1
|
|
646
|
+
};
|
|
647
|
+
}
|
|
597
648
|
toSQL() {
|
|
598
649
|
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
599
650
|
const distinct = this.isDistinct ? "DISTINCT " : "";
|
|
@@ -1253,6 +1304,13 @@ var TauriORM = class {
|
|
|
1253
1304
|
delete(table) {
|
|
1254
1305
|
return new DeleteQueryBuilder(this.db, table);
|
|
1255
1306
|
}
|
|
1307
|
+
async upsert(table, data, conflictTarget) {
|
|
1308
|
+
const columns = conflictTarget.map((col) => table._.columns[col]);
|
|
1309
|
+
return this.insert(table).values(data).onConflictDoUpdate({
|
|
1310
|
+
target: columns.length === 1 ? columns[0] : columns,
|
|
1311
|
+
set: data
|
|
1312
|
+
}).execute();
|
|
1313
|
+
}
|
|
1256
1314
|
$with(alias2) {
|
|
1257
1315
|
const withBuilder = new WithQueryBuilder(this.db);
|
|
1258
1316
|
return {
|
package/dist/index.mjs
CHANGED
|
@@ -495,6 +495,57 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
|
|
|
495
495
|
const result = await this.execute();
|
|
496
496
|
return result[0];
|
|
497
497
|
}
|
|
498
|
+
async exists() {
|
|
499
|
+
const originalColumns = this.selectedColumns;
|
|
500
|
+
this.selectedColumns = ["1"];
|
|
501
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
502
|
+
const query = `SELECT 1 ${this.query}${joinSql} LIMIT 1`;
|
|
503
|
+
const params = [...this.params, ...joinParams];
|
|
504
|
+
this.selectedColumns = originalColumns;
|
|
505
|
+
const result = await this.db.select(query, params);
|
|
506
|
+
return result.length > 0;
|
|
507
|
+
}
|
|
508
|
+
async count() {
|
|
509
|
+
const originalColumns = this.selectedColumns;
|
|
510
|
+
this.selectedColumns = ["COUNT(*) as count"];
|
|
511
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
512
|
+
const query = `SELECT COUNT(*) as count ${this.query}${joinSql}`;
|
|
513
|
+
const params = [...this.params, ...joinParams];
|
|
514
|
+
this.selectedColumns = originalColumns;
|
|
515
|
+
const result = await this.db.select(query, params);
|
|
516
|
+
return result[0]?.count || 0;
|
|
517
|
+
}
|
|
518
|
+
async first() {
|
|
519
|
+
return this.get();
|
|
520
|
+
}
|
|
521
|
+
async pluck(column) {
|
|
522
|
+
const columnName = this.table._.columns[column]._.name;
|
|
523
|
+
const originalColumns = this.selectedColumns;
|
|
524
|
+
this.selectedColumns = [`${this.selectedTableAlias}.${columnName} AS "${columnName}"`];
|
|
525
|
+
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
526
|
+
const query = `SELECT ${this.selectedColumns.join(", ")} ${this.query}${joinSql}`;
|
|
527
|
+
const params = [...this.params, ...joinParams];
|
|
528
|
+
this.selectedColumns = originalColumns;
|
|
529
|
+
const results = await this.db.select(query, params);
|
|
530
|
+
return results.map((row) => row[columnName]);
|
|
531
|
+
}
|
|
532
|
+
async paginate(page = 1, pageSize = 10) {
|
|
533
|
+
if (page < 1) page = 1;
|
|
534
|
+
if (pageSize < 1) pageSize = 10;
|
|
535
|
+
const total = await this.count();
|
|
536
|
+
const totalPages = Math.ceil(total / pageSize);
|
|
537
|
+
const offset = (page - 1) * pageSize;
|
|
538
|
+
const data = await this.limit(pageSize).offset(offset).all();
|
|
539
|
+
return {
|
|
540
|
+
data,
|
|
541
|
+
total,
|
|
542
|
+
page,
|
|
543
|
+
pageSize,
|
|
544
|
+
totalPages,
|
|
545
|
+
hasNextPage: page < totalPages,
|
|
546
|
+
hasPrevPage: page > 1
|
|
547
|
+
};
|
|
548
|
+
}
|
|
498
549
|
toSQL() {
|
|
499
550
|
const { sql: joinSql, params: joinParams } = this.buildJoins();
|
|
500
551
|
const distinct = this.isDistinct ? "DISTINCT " : "";
|
|
@@ -1154,6 +1205,13 @@ var TauriORM = class {
|
|
|
1154
1205
|
delete(table) {
|
|
1155
1206
|
return new DeleteQueryBuilder(this.db, table);
|
|
1156
1207
|
}
|
|
1208
|
+
async upsert(table, data, conflictTarget) {
|
|
1209
|
+
const columns = conflictTarget.map((col) => table._.columns[col]);
|
|
1210
|
+
return this.insert(table).values(data).onConflictDoUpdate({
|
|
1211
|
+
target: columns.length === 1 ? columns[0] : columns,
|
|
1212
|
+
set: data
|
|
1213
|
+
}).execute();
|
|
1214
|
+
}
|
|
1157
1215
|
$with(alias2) {
|
|
1158
1216
|
const withBuilder = new WithQueryBuilder(this.db);
|
|
1159
1217
|
return {
|