@type32/tauri-sqlite-orm 0.1.18-11 → 0.1.18-13

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 CHANGED
@@ -49,7 +49,7 @@ declare class BaseQueryBuilder {
49
49
  };
50
50
  }
51
51
 
52
- declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns extends (keyof TTable["_"]["columns"])[] | undefined = undefined> extends BaseQueryBuilder {
52
+ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns extends (keyof TTable['_']['columns'])[] | undefined = undefined> extends BaseQueryBuilder {
53
53
  private table;
54
54
  private columns?;
55
55
  private isDistinct;
@@ -57,15 +57,17 @@ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns exten
57
57
  private havingCondition;
58
58
  private joins;
59
59
  private includeRelations;
60
+ private selectedTableAlias;
60
61
  constructor(db: Database, table: TTable, columns?: TSelectedColumns | undefined);
61
62
  distinct(): this;
62
63
  groupBy(...columns: AnySQLiteColumn[]): this;
63
64
  having(condition: SQLCondition): this;
64
- leftJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias?: string): this;
65
- innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias?: string): this;
65
+ leftJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
66
+ innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
66
67
  include(relations: Record<string, boolean>): this;
67
68
  private buildJoins;
68
69
  execute(): Promise<any[]>;
70
+ private processRelationResults;
69
71
  all(): Promise<any[]>;
70
72
  get(): Promise<any | undefined>;
71
73
  }
@@ -107,7 +109,7 @@ declare class DeleteQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
107
109
  private table;
108
110
  private returningColumns;
109
111
  constructor(db: Database, table: T);
110
- returning(...columns: (keyof T["_"]["columns"])[]): this;
112
+ returning(...columns: (keyof T['_']['columns'])[]): this;
111
113
  execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
112
114
  returningAll(): Promise<InferSelectModel<T>[]>;
113
115
  }
@@ -247,7 +249,7 @@ declare const relations: <T extends AnyTable, R extends Record<string, Relation>
247
249
  declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
248
250
  declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
249
251
 
250
- declare const eq: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
252
+ declare const eq: <T>(column: AnySQLiteColumn, value: T, tableAlias?: string) => SQLCondition;
251
253
  declare const and: (...conditions: SQLCondition[]) => SQLCondition;
252
254
  declare const or: (...conditions: SQLCondition[]) => SQLCondition;
253
255
  declare const not: (condition: SQLCondition) => SQLCondition;
package/dist/index.d.ts CHANGED
@@ -49,7 +49,7 @@ declare class BaseQueryBuilder {
49
49
  };
50
50
  }
51
51
 
52
- declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns extends (keyof TTable["_"]["columns"])[] | undefined = undefined> extends BaseQueryBuilder {
52
+ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns extends (keyof TTable['_']['columns'])[] | undefined = undefined> extends BaseQueryBuilder {
53
53
  private table;
54
54
  private columns?;
55
55
  private isDistinct;
@@ -57,15 +57,17 @@ declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns exten
57
57
  private havingCondition;
58
58
  private joins;
59
59
  private includeRelations;
60
+ private selectedTableAlias;
60
61
  constructor(db: Database, table: TTable, columns?: TSelectedColumns | undefined);
61
62
  distinct(): this;
62
63
  groupBy(...columns: AnySQLiteColumn[]): this;
63
64
  having(condition: SQLCondition): this;
64
- leftJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias?: string): this;
65
- innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias?: string): this;
65
+ leftJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
66
+ innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
66
67
  include(relations: Record<string, boolean>): this;
67
68
  private buildJoins;
68
69
  execute(): Promise<any[]>;
70
+ private processRelationResults;
69
71
  all(): Promise<any[]>;
70
72
  get(): Promise<any | undefined>;
71
73
  }
@@ -107,7 +109,7 @@ declare class DeleteQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
107
109
  private table;
108
110
  private returningColumns;
109
111
  constructor(db: Database, table: T);
110
- returning(...columns: (keyof T["_"]["columns"])[]): this;
112
+ returning(...columns: (keyof T['_']['columns'])[]): this;
111
113
  execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
112
114
  returningAll(): Promise<InferSelectModel<T>[]>;
113
115
  }
@@ -247,7 +249,7 @@ declare const relations: <T extends AnyTable, R extends Record<string, Relation>
247
249
  declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
248
250
  declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
249
251
 
250
- declare const eq: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
252
+ declare const eq: <T>(column: AnySQLiteColumn, value: T, tableAlias?: string) => SQLCondition;
251
253
  declare const and: (...conditions: SQLCondition[]) => SQLCondition;
252
254
  declare const or: (...conditions: SQLCondition[]) => SQLCondition;
253
255
  declare const not: (condition: SQLCondition) => SQLCondition;
package/dist/index.js CHANGED
@@ -103,10 +103,13 @@ var BaseQueryBuilder = class {
103
103
  };
104
104
 
105
105
  // src/operators.ts
106
- var eq = (column, value) => ({
107
- sql: `${column._.name} = ?`,
108
- params: [value]
109
- });
106
+ var eq = (column, value, tableAlias) => {
107
+ const columnName = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
108
+ return {
109
+ sql: `${columnName} = ?`,
110
+ params: [value]
111
+ };
112
+ };
110
113
  var and = (...conditions) => ({
111
114
  sql: conditions.map((c) => `(${c.sql})`).join(" AND "),
112
115
  params: conditions.flatMap((c) => c.params)
@@ -182,14 +185,16 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
182
185
  super(db);
183
186
  this.table = table;
184
187
  this.columns = columns;
185
- const columnNames = columns ? columns.map((c) => table._.columns[c]._.name) : ["*"];
186
- this.query = `SELECT ${columnNames.join(", ")} FROM ${table._.name}`;
188
+ this.selectedTableAlias = table._.name;
189
+ const columnNames = columns ? columns.map((c) => `${this.selectedTableAlias}.${table._.columns[c]._.name}`) : [`${this.selectedTableAlias}.*`];
190
+ this.query = `SELECT ${columnNames.join(", ")} FROM ${table._.name} ${this.selectedTableAlias}`;
187
191
  }
188
192
  isDistinct = false;
189
193
  groupByColumns = [];
190
194
  havingCondition = null;
191
195
  joins = [];
192
196
  includeRelations = {};
197
+ selectedTableAlias;
193
198
  distinct() {
194
199
  this.isDistinct = true;
195
200
  this.query = this.query.replace("SELECT", "SELECT DISTINCT");
@@ -197,7 +202,7 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
197
202
  }
198
203
  groupBy(...columns) {
199
204
  this.groupByColumns.push(...columns);
200
- const columnNames = columns.map((col) => col._.name).join(", ");
205
+ const columnNames = columns.map((col) => `${this.selectedTableAlias}.${col._.name}`).join(", ");
201
206
  this.query += ` GROUP BY ${columnNames}`;
202
207
  return this;
203
208
  }
@@ -223,48 +228,103 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
223
228
  let sql2 = "";
224
229
  const params = [];
225
230
  for (const join of this.joins) {
226
- const tableAlias = join.alias || join.table._.name;
227
- sql2 += ` ${join.type} JOIN ${join.table._.name} ${tableAlias} ON ${join.condition.sql}`;
231
+ sql2 += ` ${join.type} JOIN ${join.table._.name} ${join.alias} ON ${join.condition.sql}`;
228
232
  params.push(...join.condition.params);
229
233
  }
230
- for (const [relationName, include] of Object.entries(
231
- this.includeRelations
232
- )) {
234
+ for (const [relationName, include] of Object.entries(this.includeRelations)) {
233
235
  if (!include) continue;
234
236
  const relation = this.table.relations[relationName];
235
237
  if (!relation) continue;
236
238
  const foreignTable = relation.foreignTable;
237
- const foreignAlias = `${this.table._.name}_${relationName}`;
239
+ const foreignAlias = `${this.selectedTableAlias}_${relationName}`;
238
240
  if (relation.type === "one" && relation.fields && relation.references) {
239
- const conditions = relation.fields.map(
240
- (field, i) => eq(field, relation.references[i])
241
- );
241
+ const conditions = relation.fields.map((field, i) => {
242
+ const localColumn = `${this.selectedTableAlias}.${field._.name}`;
243
+ const foreignColumn = `${foreignAlias}.${relation.references[i]._.name}`;
244
+ return {
245
+ sql: `${localColumn} = ${foreignColumn}`,
246
+ params: []
247
+ };
248
+ });
242
249
  const condition = conditions.length > 1 ? and(...conditions) : conditions[0];
243
250
  sql2 += ` LEFT JOIN ${foreignTable._.name} ${foreignAlias} ON ${condition.sql}`;
244
251
  params.push(...condition.params);
245
252
  } else if (relation.type === "many") {
246
- const refRelation = Object.values(foreignTable.relations).find(
247
- (r) => r.foreignTable === this.table
253
+ const refRelation = Object.entries(foreignTable.relations).find(
254
+ ([_, r]) => r.foreignTable === this.table
248
255
  );
249
- if (refRelation && refRelation.fields && refRelation.references) {
250
- const conditions = refRelation.fields.map(
251
- (field, i) => eq(field, refRelation.references[i])
252
- );
256
+ if (refRelation && refRelation[1].fields && refRelation[1].references) {
257
+ const [_, relationConfig] = refRelation;
258
+ const conditions = relationConfig.fields.map((field, i) => {
259
+ const localColumn = `${foreignAlias}.${field._.name}`;
260
+ const foreignColumn = `${this.selectedTableAlias}.${relationConfig.references[i]._.name}`;
261
+ return {
262
+ sql: `${localColumn} = ${foreignColumn}`,
263
+ params: []
264
+ };
265
+ });
253
266
  const condition = conditions.length > 1 ? and(...conditions) : conditions[0];
254
267
  sql2 += ` LEFT JOIN ${foreignTable._.name} ${foreignAlias} ON ${condition.sql}`;
255
268
  params.push(...condition.params);
269
+ this.query = this.query.replace("SELECT ", `SELECT ${this.selectedTableAlias}.*, ${foreignAlias}.* `).replace(
270
+ `SELECT ${this.selectedTableAlias}.*, `,
271
+ `SELECT ${this.selectedTableAlias}.*, ${foreignAlias}.*, `
272
+ );
256
273
  }
257
274
  }
258
275
  }
259
276
  return { sql: sql2, params };
260
277
  }
278
+ // Enhanced execute method that handles relation data mapping
261
279
  async execute() {
262
280
  const { sql: joinSql, params: joinParams } = this.buildJoins();
263
281
  this.query += joinSql;
264
282
  this.params.push(...joinParams);
265
283
  const { sql: sql2, params } = this.build();
266
- return this.db.select(sql2, params);
284
+ const rawResults = await this.db.select(sql2, params);
285
+ if (Object.keys(this.includeRelations).some((key) => this.includeRelations[key])) {
286
+ const processed = this.processRelationResults(rawResults);
287
+ return processed;
288
+ }
289
+ return rawResults;
290
+ }
291
+ processRelationResults(rawResults) {
292
+ if (!rawResults.length) return rawResults;
293
+ return rawResults.map((row) => {
294
+ const result = {};
295
+ const relations2 = {};
296
+ for (const [key, value] of Object.entries(row)) {
297
+ if (key.includes(".")) {
298
+ const [tableAlias, columnName] = key.split(".");
299
+ if (tableAlias === this.selectedTableAlias) {
300
+ result[columnName] = value;
301
+ } else {
302
+ const parts = tableAlias.split("_");
303
+ if (parts.length >= 2 && parts[0] === this.selectedTableAlias) {
304
+ const relationName = parts.slice(1).join("_");
305
+ if (!relations2[relationName]) relations2[relationName] = {};
306
+ relations2[relationName][columnName] = value;
307
+ } else {
308
+ if (!result[tableAlias]) result[tableAlias] = {};
309
+ result[tableAlias][columnName] = value;
310
+ }
311
+ }
312
+ } else {
313
+ result[key] = value;
314
+ }
315
+ }
316
+ for (const [relName, relData] of Object.entries(relations2)) {
317
+ const hasData = Object.values(relData).some(
318
+ (v) => v !== null && v !== void 0 && v !== ""
319
+ );
320
+ if (hasData) {
321
+ result[relName] = relData;
322
+ }
323
+ }
324
+ return result;
325
+ });
267
326
  }
327
+ // Update the return type signatures
268
328
  async all() {
269
329
  return this.execute();
270
330
  }
@@ -496,9 +556,7 @@ var DeleteQueryBuilder = class extends BaseQueryBuilder {
496
556
  }
497
557
  }
498
558
  async returningAll() {
499
- const allColumns = Object.keys(
500
- this.table._.columns
501
- );
559
+ const allColumns = Object.keys(this.table._.columns);
502
560
  return this.returning(...allColumns).execute();
503
561
  }
504
562
  };
@@ -687,9 +745,7 @@ var TauriORM = class {
687
745
  for (const [key, value] of Object.entries(schema)) {
688
746
  if (!(value instanceof Table) && typeof value === "object") {
689
747
  const tableName = key.replace("Relations", "");
690
- const table = Array.from(this.tables.values()).find(
691
- (t) => t._.name === tableName
692
- );
748
+ const table = Array.from(this.tables.values()).find((t) => t._.name === tableName);
693
749
  if (table) {
694
750
  for (const [relName, rel] of Object.entries(value)) {
695
751
  if (rel instanceof OneRelation) {
@@ -738,7 +794,10 @@ var TauriORM = class {
738
794
  );
739
795
  if (existingTableInfo.length === 0) {
740
796
  const columnsSql = Object.values(table._.columns).map((col) => this.buildColumnDefinition(col)).join(", ");
741
- const createSql = `CREATE TABLE ${table._.name} (${columnsSql})`;
797
+ const createSql = `CREATE TABLE ${table._.name}
798
+ (
799
+ ${columnsSql}
800
+ )`;
742
801
  await this.db.execute(createSql);
743
802
  } else {
744
803
  const existingColumnNames = new Set(
@@ -747,7 +806,8 @@ var TauriORM = class {
747
806
  for (const column of Object.values(table._.columns)) {
748
807
  if (!existingColumnNames.has(column._.name)) {
749
808
  const columnSql = this.buildColumnDefinition(column, true);
750
- const alterSql = `ALTER TABLE ${table._.name} ADD COLUMN ${columnSql}`;
809
+ const alterSql = `ALTER TABLE ${table._.name}
810
+ ADD COLUMN ${columnSql}`;
751
811
  await this.db.execute(alterSql);
752
812
  }
753
813
  }
@@ -792,13 +852,25 @@ var TauriORM = class {
792
852
  // --- Schema detection / signature ---
793
853
  async ensureSchemaMeta() {
794
854
  await this.db.execute(
795
- `CREATE TABLE IF NOT EXISTS _schema_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)`
855
+ `CREATE TABLE IF NOT EXISTS _schema_meta
856
+ (
857
+ key
858
+ TEXT
859
+ PRIMARY
860
+ KEY,
861
+ value
862
+ TEXT
863
+ NOT
864
+ NULL
865
+ )`
796
866
  );
797
867
  }
798
868
  async getSchemaMeta(key) {
799
869
  await this.ensureSchemaMeta();
800
870
  const rows = await this.db.select(
801
- `SELECT value FROM _schema_meta WHERE key = ?`,
871
+ `SELECT value
872
+ FROM _schema_meta
873
+ WHERE key = ?`,
802
874
  [key]
803
875
  );
804
876
  return rows?.[0]?.value ?? null;
@@ -806,7 +878,10 @@ var TauriORM = class {
806
878
  async setSchemaMeta(key, value) {
807
879
  await this.ensureSchemaMeta();
808
880
  await this.db.execute(
809
- `INSERT INTO _schema_meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value`,
881
+ `INSERT INTO _schema_meta(key, value)
882
+ VALUES (?, ?) ON CONFLICT(key) DO
883
+ UPDATE
884
+ SET value = excluded.value`,
810
885
  [key, value]
811
886
  );
812
887
  }
package/dist/index.mjs CHANGED
@@ -36,10 +36,13 @@ var BaseQueryBuilder = class {
36
36
  };
37
37
 
38
38
  // src/operators.ts
39
- var eq = (column, value) => ({
40
- sql: `${column._.name} = ?`,
41
- params: [value]
42
- });
39
+ var eq = (column, value, tableAlias) => {
40
+ const columnName = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
41
+ return {
42
+ sql: `${columnName} = ?`,
43
+ params: [value]
44
+ };
45
+ };
43
46
  var and = (...conditions) => ({
44
47
  sql: conditions.map((c) => `(${c.sql})`).join(" AND "),
45
48
  params: conditions.flatMap((c) => c.params)
@@ -115,14 +118,16 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
115
118
  super(db);
116
119
  this.table = table;
117
120
  this.columns = columns;
118
- const columnNames = columns ? columns.map((c) => table._.columns[c]._.name) : ["*"];
119
- this.query = `SELECT ${columnNames.join(", ")} FROM ${table._.name}`;
121
+ this.selectedTableAlias = table._.name;
122
+ const columnNames = columns ? columns.map((c) => `${this.selectedTableAlias}.${table._.columns[c]._.name}`) : [`${this.selectedTableAlias}.*`];
123
+ this.query = `SELECT ${columnNames.join(", ")} FROM ${table._.name} ${this.selectedTableAlias}`;
120
124
  }
121
125
  isDistinct = false;
122
126
  groupByColumns = [];
123
127
  havingCondition = null;
124
128
  joins = [];
125
129
  includeRelations = {};
130
+ selectedTableAlias;
126
131
  distinct() {
127
132
  this.isDistinct = true;
128
133
  this.query = this.query.replace("SELECT", "SELECT DISTINCT");
@@ -130,7 +135,7 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
130
135
  }
131
136
  groupBy(...columns) {
132
137
  this.groupByColumns.push(...columns);
133
- const columnNames = columns.map((col) => col._.name).join(", ");
138
+ const columnNames = columns.map((col) => `${this.selectedTableAlias}.${col._.name}`).join(", ");
134
139
  this.query += ` GROUP BY ${columnNames}`;
135
140
  return this;
136
141
  }
@@ -156,48 +161,103 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
156
161
  let sql2 = "";
157
162
  const params = [];
158
163
  for (const join of this.joins) {
159
- const tableAlias = join.alias || join.table._.name;
160
- sql2 += ` ${join.type} JOIN ${join.table._.name} ${tableAlias} ON ${join.condition.sql}`;
164
+ sql2 += ` ${join.type} JOIN ${join.table._.name} ${join.alias} ON ${join.condition.sql}`;
161
165
  params.push(...join.condition.params);
162
166
  }
163
- for (const [relationName, include] of Object.entries(
164
- this.includeRelations
165
- )) {
167
+ for (const [relationName, include] of Object.entries(this.includeRelations)) {
166
168
  if (!include) continue;
167
169
  const relation = this.table.relations[relationName];
168
170
  if (!relation) continue;
169
171
  const foreignTable = relation.foreignTable;
170
- const foreignAlias = `${this.table._.name}_${relationName}`;
172
+ const foreignAlias = `${this.selectedTableAlias}_${relationName}`;
171
173
  if (relation.type === "one" && relation.fields && relation.references) {
172
- const conditions = relation.fields.map(
173
- (field, i) => eq(field, relation.references[i])
174
- );
174
+ const conditions = relation.fields.map((field, i) => {
175
+ const localColumn = `${this.selectedTableAlias}.${field._.name}`;
176
+ const foreignColumn = `${foreignAlias}.${relation.references[i]._.name}`;
177
+ return {
178
+ sql: `${localColumn} = ${foreignColumn}`,
179
+ params: []
180
+ };
181
+ });
175
182
  const condition = conditions.length > 1 ? and(...conditions) : conditions[0];
176
183
  sql2 += ` LEFT JOIN ${foreignTable._.name} ${foreignAlias} ON ${condition.sql}`;
177
184
  params.push(...condition.params);
178
185
  } else if (relation.type === "many") {
179
- const refRelation = Object.values(foreignTable.relations).find(
180
- (r) => r.foreignTable === this.table
186
+ const refRelation = Object.entries(foreignTable.relations).find(
187
+ ([_, r]) => r.foreignTable === this.table
181
188
  );
182
- if (refRelation && refRelation.fields && refRelation.references) {
183
- const conditions = refRelation.fields.map(
184
- (field, i) => eq(field, refRelation.references[i])
185
- );
189
+ if (refRelation && refRelation[1].fields && refRelation[1].references) {
190
+ const [_, relationConfig] = refRelation;
191
+ const conditions = relationConfig.fields.map((field, i) => {
192
+ const localColumn = `${foreignAlias}.${field._.name}`;
193
+ const foreignColumn = `${this.selectedTableAlias}.${relationConfig.references[i]._.name}`;
194
+ return {
195
+ sql: `${localColumn} = ${foreignColumn}`,
196
+ params: []
197
+ };
198
+ });
186
199
  const condition = conditions.length > 1 ? and(...conditions) : conditions[0];
187
200
  sql2 += ` LEFT JOIN ${foreignTable._.name} ${foreignAlias} ON ${condition.sql}`;
188
201
  params.push(...condition.params);
202
+ this.query = this.query.replace("SELECT ", `SELECT ${this.selectedTableAlias}.*, ${foreignAlias}.* `).replace(
203
+ `SELECT ${this.selectedTableAlias}.*, `,
204
+ `SELECT ${this.selectedTableAlias}.*, ${foreignAlias}.*, `
205
+ );
189
206
  }
190
207
  }
191
208
  }
192
209
  return { sql: sql2, params };
193
210
  }
211
+ // Enhanced execute method that handles relation data mapping
194
212
  async execute() {
195
213
  const { sql: joinSql, params: joinParams } = this.buildJoins();
196
214
  this.query += joinSql;
197
215
  this.params.push(...joinParams);
198
216
  const { sql: sql2, params } = this.build();
199
- return this.db.select(sql2, params);
217
+ const rawResults = await this.db.select(sql2, params);
218
+ if (Object.keys(this.includeRelations).some((key) => this.includeRelations[key])) {
219
+ const processed = this.processRelationResults(rawResults);
220
+ return processed;
221
+ }
222
+ return rawResults;
223
+ }
224
+ processRelationResults(rawResults) {
225
+ if (!rawResults.length) return rawResults;
226
+ return rawResults.map((row) => {
227
+ const result = {};
228
+ const relations2 = {};
229
+ for (const [key, value] of Object.entries(row)) {
230
+ if (key.includes(".")) {
231
+ const [tableAlias, columnName] = key.split(".");
232
+ if (tableAlias === this.selectedTableAlias) {
233
+ result[columnName] = value;
234
+ } else {
235
+ const parts = tableAlias.split("_");
236
+ if (parts.length >= 2 && parts[0] === this.selectedTableAlias) {
237
+ const relationName = parts.slice(1).join("_");
238
+ if (!relations2[relationName]) relations2[relationName] = {};
239
+ relations2[relationName][columnName] = value;
240
+ } else {
241
+ if (!result[tableAlias]) result[tableAlias] = {};
242
+ result[tableAlias][columnName] = value;
243
+ }
244
+ }
245
+ } else {
246
+ result[key] = value;
247
+ }
248
+ }
249
+ for (const [relName, relData] of Object.entries(relations2)) {
250
+ const hasData = Object.values(relData).some(
251
+ (v) => v !== null && v !== void 0 && v !== ""
252
+ );
253
+ if (hasData) {
254
+ result[relName] = relData;
255
+ }
256
+ }
257
+ return result;
258
+ });
200
259
  }
260
+ // Update the return type signatures
201
261
  async all() {
202
262
  return this.execute();
203
263
  }
@@ -429,9 +489,7 @@ var DeleteQueryBuilder = class extends BaseQueryBuilder {
429
489
  }
430
490
  }
431
491
  async returningAll() {
432
- const allColumns = Object.keys(
433
- this.table._.columns
434
- );
492
+ const allColumns = Object.keys(this.table._.columns);
435
493
  return this.returning(...allColumns).execute();
436
494
  }
437
495
  };
@@ -620,9 +678,7 @@ var TauriORM = class {
620
678
  for (const [key, value] of Object.entries(schema)) {
621
679
  if (!(value instanceof Table) && typeof value === "object") {
622
680
  const tableName = key.replace("Relations", "");
623
- const table = Array.from(this.tables.values()).find(
624
- (t) => t._.name === tableName
625
- );
681
+ const table = Array.from(this.tables.values()).find((t) => t._.name === tableName);
626
682
  if (table) {
627
683
  for (const [relName, rel] of Object.entries(value)) {
628
684
  if (rel instanceof OneRelation) {
@@ -671,7 +727,10 @@ var TauriORM = class {
671
727
  );
672
728
  if (existingTableInfo.length === 0) {
673
729
  const columnsSql = Object.values(table._.columns).map((col) => this.buildColumnDefinition(col)).join(", ");
674
- const createSql = `CREATE TABLE ${table._.name} (${columnsSql})`;
730
+ const createSql = `CREATE TABLE ${table._.name}
731
+ (
732
+ ${columnsSql}
733
+ )`;
675
734
  await this.db.execute(createSql);
676
735
  } else {
677
736
  const existingColumnNames = new Set(
@@ -680,7 +739,8 @@ var TauriORM = class {
680
739
  for (const column of Object.values(table._.columns)) {
681
740
  if (!existingColumnNames.has(column._.name)) {
682
741
  const columnSql = this.buildColumnDefinition(column, true);
683
- const alterSql = `ALTER TABLE ${table._.name} ADD COLUMN ${columnSql}`;
742
+ const alterSql = `ALTER TABLE ${table._.name}
743
+ ADD COLUMN ${columnSql}`;
684
744
  await this.db.execute(alterSql);
685
745
  }
686
746
  }
@@ -725,13 +785,25 @@ var TauriORM = class {
725
785
  // --- Schema detection / signature ---
726
786
  async ensureSchemaMeta() {
727
787
  await this.db.execute(
728
- `CREATE TABLE IF NOT EXISTS _schema_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)`
788
+ `CREATE TABLE IF NOT EXISTS _schema_meta
789
+ (
790
+ key
791
+ TEXT
792
+ PRIMARY
793
+ KEY,
794
+ value
795
+ TEXT
796
+ NOT
797
+ NULL
798
+ )`
729
799
  );
730
800
  }
731
801
  async getSchemaMeta(key) {
732
802
  await this.ensureSchemaMeta();
733
803
  const rows = await this.db.select(
734
- `SELECT value FROM _schema_meta WHERE key = ?`,
804
+ `SELECT value
805
+ FROM _schema_meta
806
+ WHERE key = ?`,
735
807
  [key]
736
808
  );
737
809
  return rows?.[0]?.value ?? null;
@@ -739,7 +811,10 @@ var TauriORM = class {
739
811
  async setSchemaMeta(key, value) {
740
812
  await this.ensureSchemaMeta();
741
813
  await this.db.execute(
742
- `INSERT INTO _schema_meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value`,
814
+ `INSERT INTO _schema_meta(key, value)
815
+ VALUES (?, ?) ON CONFLICT(key) DO
816
+ UPDATE
817
+ SET value = excluded.value`,
743
818
  [key, value]
744
819
  );
745
820
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@type32/tauri-sqlite-orm",
3
- "version": "0.1.18-11",
3
+ "version": "0.1.18-13",
4
4
  "description": "A Drizzle-like ORM for Tauri v2's SQL JS API plugin.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",