@type32/tauri-sqlite-orm 0.2.11 → 0.2.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.
Files changed (3) hide show
  1. package/dist/index.js +171 -21
  2. package/dist/index.mjs +171 -21
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -269,6 +269,107 @@ var between = (column, min2, max2) => ({
269
269
  params: [min2, max2]
270
270
  });
271
271
 
272
+ // src/serialization.ts
273
+ function serializeValue(value, column) {
274
+ if (value === null || value === void 0) {
275
+ return null;
276
+ }
277
+ const { dataType, mode } = column._;
278
+ if (dataType === "TEXT") {
279
+ if (mode === "json") {
280
+ return typeof value === "string" ? value : JSON.stringify(value);
281
+ }
282
+ return String(value);
283
+ }
284
+ if (dataType === "INTEGER") {
285
+ if (mode === "timestamp" || mode === "timestamp_ms") {
286
+ if (value instanceof Date) {
287
+ return mode === "timestamp_ms" ? value.getTime() : Math.floor(value.getTime() / 1e3);
288
+ }
289
+ return typeof value === "number" ? value : parseInt(String(value), 10);
290
+ }
291
+ if (mode === "boolean") {
292
+ return value ? 1 : 0;
293
+ }
294
+ return typeof value === "number" ? Math.floor(value) : parseInt(String(value), 10);
295
+ }
296
+ if (dataType === "REAL") {
297
+ return typeof value === "number" ? value : parseFloat(String(value));
298
+ }
299
+ if (dataType === "BOOLEAN") {
300
+ return value ? 1 : 0;
301
+ }
302
+ if (dataType === "BLOB") {
303
+ if (mode === "json") {
304
+ return typeof value === "string" ? value : JSON.stringify(value);
305
+ }
306
+ if (mode === "bigint") {
307
+ return String(value);
308
+ }
309
+ return value;
310
+ }
311
+ if (dataType === "NUMERIC") {
312
+ if (mode === "bigint") {
313
+ return String(value);
314
+ }
315
+ return typeof value === "number" ? value : parseFloat(String(value));
316
+ }
317
+ return value;
318
+ }
319
+ function deserializeValue(value, column) {
320
+ if (value === null || value === void 0) {
321
+ return null;
322
+ }
323
+ const { dataType, mode } = column._;
324
+ if (dataType === "TEXT") {
325
+ if (mode === "json") {
326
+ try {
327
+ return JSON.parse(value);
328
+ } catch {
329
+ return value;
330
+ }
331
+ }
332
+ return value;
333
+ }
334
+ if (dataType === "INTEGER") {
335
+ if (mode === "timestamp" || mode === "timestamp_ms") {
336
+ const num = typeof value === "string" ? parseInt(value, 10) : value;
337
+ if (isNaN(num)) return null;
338
+ return mode === "timestamp_ms" ? new Date(num) : new Date(num * 1e3);
339
+ }
340
+ if (mode === "boolean") {
341
+ return value === 1 || value === "1" || value === true;
342
+ }
343
+ return typeof value === "string" ? parseInt(value, 10) : value;
344
+ }
345
+ if (dataType === "REAL") {
346
+ return typeof value === "string" ? parseFloat(value) : value;
347
+ }
348
+ if (dataType === "BOOLEAN") {
349
+ return value === 1 || value === "1" || value === true;
350
+ }
351
+ if (dataType === "BLOB") {
352
+ if (mode === "json") {
353
+ try {
354
+ return JSON.parse(value);
355
+ } catch {
356
+ return value;
357
+ }
358
+ }
359
+ if (mode === "bigint") {
360
+ return typeof value === "string" ? BigInt(value) : BigInt(value);
361
+ }
362
+ return value;
363
+ }
364
+ if (dataType === "NUMERIC") {
365
+ if (mode === "bigint") {
366
+ return typeof value === "string" ? BigInt(value) : BigInt(value);
367
+ }
368
+ return typeof value === "string" ? parseFloat(value) : value;
369
+ }
370
+ return value;
371
+ }
372
+
272
373
  // src/builders/select.ts
273
374
  var SelectQueryBuilder = class extends BaseQueryBuilder {
274
375
  constructor(db, table, columns) {
@@ -428,9 +529,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
428
529
  async execute() {
429
530
  const { sql: joinSql, params: joinParams } = this.buildJoins();
430
531
  const distinct = this.isDistinct ? "DISTINCT " : "";
431
- this.query = `SELECT ${distinct}${this.selectedColumns.join(", ")} ${this.query}`;
432
- this.query += joinSql;
433
- this.params.push(...joinParams);
532
+ const whereIndex = this.query.indexOf(" WHERE ");
533
+ let fromPart = this.query;
534
+ let wherePart = "";
535
+ if (whereIndex !== -1) {
536
+ fromPart = this.query.substring(0, whereIndex);
537
+ wherePart = this.query.substring(whereIndex);
538
+ }
539
+ this.query = `SELECT ${distinct}${this.selectedColumns.join(", ")} ${fromPart}${joinSql}${wherePart}`;
540
+ this.params = [...joinParams, ...this.params];
434
541
  const { sql: sql2, params } = this.build();
435
542
  const rawResults = await this.db.select(sql2, params);
436
543
  const hasIncludes = Object.values(this.includeRelations).some((i) => i);
@@ -445,10 +552,12 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
445
552
  return rawResults.map((row) => {
446
553
  const newRow = {};
447
554
  for (const key in row) {
448
- if (key.startsWith(prefix)) {
449
- newRow[key.substring(prefix.length)] = row[key];
555
+ const columnName = key.startsWith(prefix) ? key.substring(prefix.length) : key;
556
+ const column = this.table._.columns[columnName];
557
+ if (column) {
558
+ newRow[columnName] = deserializeValue(row[key], column);
450
559
  } else {
451
- newRow[key] = row[key];
560
+ newRow[columnName] = row[key];
452
561
  }
453
562
  }
454
563
  return newRow;
@@ -502,18 +611,23 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
502
611
  if (key.includes(".")) {
503
612
  const [tableAlias, columnName] = key.split(".");
504
613
  if (tableAlias === this.selectedTableAlias) {
505
- result[columnName] = value;
614
+ const column = this.table._.columns[columnName];
615
+ result[columnName] = column ? deserializeValue(value, column) : value;
506
616
  } else {
507
617
  const relationPath = parseRelationPath(tableAlias, this.selectedTableAlias);
508
618
  if (relationPath.length > 0) {
509
- setNestedValue(relations2, relationPath, value, columnName);
619
+ const relationConfig = getNestedRelation(this.table, relationPath);
620
+ const column = relationConfig?.foreignTable?._.columns?.[columnName];
621
+ const deserializedValue = column ? deserializeValue(value, column) : value;
622
+ setNestedValue(relations2, relationPath, deserializedValue, columnName);
510
623
  } else {
511
624
  if (!result[tableAlias]) result[tableAlias] = {};
512
625
  result[tableAlias][columnName] = value;
513
626
  }
514
627
  }
515
628
  } else {
516
- result[key] = value;
629
+ const column = this.table._.columns[key];
630
+ result[key] = column ? deserializeValue(value, column) : value;
517
631
  }
518
632
  }
519
633
  const attachRelations = (target, relationsData, table, pathPrefix = []) => {
@@ -598,8 +712,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
598
712
  const originalColumns = this.selectedColumns;
599
713
  this.selectedColumns = ["1"];
600
714
  const { sql: joinSql, params: joinParams } = this.buildJoins();
601
- const query = `SELECT 1 ${this.query}${joinSql} LIMIT 1`;
602
- const params = [...this.params, ...joinParams];
715
+ const whereIndex = this.query.indexOf(" WHERE ");
716
+ let fromPart = this.query;
717
+ let wherePart = "";
718
+ if (whereIndex !== -1) {
719
+ fromPart = this.query.substring(0, whereIndex);
720
+ wherePart = this.query.substring(whereIndex);
721
+ }
722
+ const query = `SELECT 1 ${fromPart}${joinSql}${wherePart} LIMIT 1`;
723
+ const params = [...joinParams, ...this.params];
603
724
  this.selectedColumns = originalColumns;
604
725
  const result = await this.db.select(query, params);
605
726
  return result.length > 0;
@@ -608,8 +729,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
608
729
  const originalColumns = this.selectedColumns;
609
730
  this.selectedColumns = ["COUNT(*) as count"];
610
731
  const { sql: joinSql, params: joinParams } = this.buildJoins();
611
- const query = `SELECT COUNT(*) as count ${this.query}${joinSql}`;
612
- const params = [...this.params, ...joinParams];
732
+ const whereIndex = this.query.indexOf(" WHERE ");
733
+ let fromPart = this.query;
734
+ let wherePart = "";
735
+ if (whereIndex !== -1) {
736
+ fromPart = this.query.substring(0, whereIndex);
737
+ wherePart = this.query.substring(whereIndex);
738
+ }
739
+ const query = `SELECT COUNT(*) as count ${fromPart}${joinSql}${wherePart}`;
740
+ const params = [...joinParams, ...this.params];
613
741
  this.selectedColumns = originalColumns;
614
742
  const result = await this.db.select(query, params);
615
743
  return result[0]?.count || 0;
@@ -622,11 +750,19 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
622
750
  const originalColumns = this.selectedColumns;
623
751
  this.selectedColumns = [`${this.selectedTableAlias}.${columnName} AS "${columnName}"`];
624
752
  const { sql: joinSql, params: joinParams } = this.buildJoins();
625
- const query = `SELECT ${this.selectedColumns.join(", ")} ${this.query}${joinSql}`;
626
- const params = [...this.params, ...joinParams];
753
+ const whereIndex = this.query.indexOf(" WHERE ");
754
+ let fromPart = this.query;
755
+ let wherePart = "";
756
+ if (whereIndex !== -1) {
757
+ fromPart = this.query.substring(0, whereIndex);
758
+ wherePart = this.query.substring(whereIndex);
759
+ }
760
+ const query = `SELECT ${this.selectedColumns.join(", ")} ${fromPart}${joinSql}${wherePart}`;
761
+ const params = [...joinParams, ...this.params];
627
762
  this.selectedColumns = originalColumns;
628
763
  const results = await this.db.select(query, params);
629
- return results.map((row) => row[columnName]);
764
+ const col = this.table._.columns[column];
765
+ return results.map((row) => col ? deserializeValue(row[columnName], col) : row[columnName]);
630
766
  }
631
767
  async paginate(page = 1, pageSize = 10) {
632
768
  if (page < 1) page = 1;
@@ -799,7 +935,7 @@ var UpdateQueryBuilder = class extends BaseQueryBuilder {
799
935
  throw new ColumnNotFoundError(key, this.table._.name);
800
936
  }
801
937
  setClauses.push(`${column._.name} = ?`);
802
- setParams.push(value);
938
+ setParams.push(serializeValue(value, column));
803
939
  }
804
940
  }
805
941
  for (const op of this.incrementDecrementOps) {
@@ -946,11 +1082,18 @@ var InsertQueryBuilder = class extends BaseQueryBuilder {
946
1082
  ", "
947
1083
  )}) VALUES ${valuesSql}${conflictClause}`;
948
1084
  const params = dataSets.flatMap(
949
- (data) => columns.map((col) => data[col] ?? null)
1085
+ (data) => columns.map((col) => {
1086
+ const value = data[col] ?? null;
1087
+ const column = this.table._.columns[col];
1088
+ return column ? serializeValue(value, column) : value;
1089
+ })
950
1090
  );
951
1091
  if (this.onConflictAction === "update") {
952
1092
  const setValues = Object.entries(this.updateSet).map(
953
- ([, value]) => value
1093
+ ([key, value]) => {
1094
+ const column = this.table._.columns[key];
1095
+ return column ? serializeValue(value, column) : value;
1096
+ }
954
1097
  );
955
1098
  params.push(...setValues);
956
1099
  }
@@ -1002,11 +1145,18 @@ var InsertQueryBuilder = class extends BaseQueryBuilder {
1002
1145
  ", "
1003
1146
  )}) VALUES ${valuesSql}${conflictClause}`;
1004
1147
  const params = processedDataSets.flatMap(
1005
- (data) => columns.map((col) => data[col] ?? null)
1148
+ (data) => columns.map((col) => {
1149
+ const value = data[col] ?? null;
1150
+ const column = this.table._.columns[col];
1151
+ return column ? serializeValue(value, column) : value;
1152
+ })
1006
1153
  );
1007
1154
  if (this.onConflictAction === "update") {
1008
1155
  const setValues = Object.entries(this.updateSet).map(
1009
- ([, value]) => value
1156
+ ([key, value]) => {
1157
+ const column = this.table._.columns[key];
1158
+ return column ? serializeValue(value, column) : value;
1159
+ }
1010
1160
  );
1011
1161
  params.push(...setValues);
1012
1162
  }
package/dist/index.mjs CHANGED
@@ -170,6 +170,107 @@ var between = (column, min2, max2) => ({
170
170
  params: [min2, max2]
171
171
  });
172
172
 
173
+ // src/serialization.ts
174
+ function serializeValue(value, column) {
175
+ if (value === null || value === void 0) {
176
+ return null;
177
+ }
178
+ const { dataType, mode } = column._;
179
+ if (dataType === "TEXT") {
180
+ if (mode === "json") {
181
+ return typeof value === "string" ? value : JSON.stringify(value);
182
+ }
183
+ return String(value);
184
+ }
185
+ if (dataType === "INTEGER") {
186
+ if (mode === "timestamp" || mode === "timestamp_ms") {
187
+ if (value instanceof Date) {
188
+ return mode === "timestamp_ms" ? value.getTime() : Math.floor(value.getTime() / 1e3);
189
+ }
190
+ return typeof value === "number" ? value : parseInt(String(value), 10);
191
+ }
192
+ if (mode === "boolean") {
193
+ return value ? 1 : 0;
194
+ }
195
+ return typeof value === "number" ? Math.floor(value) : parseInt(String(value), 10);
196
+ }
197
+ if (dataType === "REAL") {
198
+ return typeof value === "number" ? value : parseFloat(String(value));
199
+ }
200
+ if (dataType === "BOOLEAN") {
201
+ return value ? 1 : 0;
202
+ }
203
+ if (dataType === "BLOB") {
204
+ if (mode === "json") {
205
+ return typeof value === "string" ? value : JSON.stringify(value);
206
+ }
207
+ if (mode === "bigint") {
208
+ return String(value);
209
+ }
210
+ return value;
211
+ }
212
+ if (dataType === "NUMERIC") {
213
+ if (mode === "bigint") {
214
+ return String(value);
215
+ }
216
+ return typeof value === "number" ? value : parseFloat(String(value));
217
+ }
218
+ return value;
219
+ }
220
+ function deserializeValue(value, column) {
221
+ if (value === null || value === void 0) {
222
+ return null;
223
+ }
224
+ const { dataType, mode } = column._;
225
+ if (dataType === "TEXT") {
226
+ if (mode === "json") {
227
+ try {
228
+ return JSON.parse(value);
229
+ } catch {
230
+ return value;
231
+ }
232
+ }
233
+ return value;
234
+ }
235
+ if (dataType === "INTEGER") {
236
+ if (mode === "timestamp" || mode === "timestamp_ms") {
237
+ const num = typeof value === "string" ? parseInt(value, 10) : value;
238
+ if (isNaN(num)) return null;
239
+ return mode === "timestamp_ms" ? new Date(num) : new Date(num * 1e3);
240
+ }
241
+ if (mode === "boolean") {
242
+ return value === 1 || value === "1" || value === true;
243
+ }
244
+ return typeof value === "string" ? parseInt(value, 10) : value;
245
+ }
246
+ if (dataType === "REAL") {
247
+ return typeof value === "string" ? parseFloat(value) : value;
248
+ }
249
+ if (dataType === "BOOLEAN") {
250
+ return value === 1 || value === "1" || value === true;
251
+ }
252
+ if (dataType === "BLOB") {
253
+ if (mode === "json") {
254
+ try {
255
+ return JSON.parse(value);
256
+ } catch {
257
+ return value;
258
+ }
259
+ }
260
+ if (mode === "bigint") {
261
+ return typeof value === "string" ? BigInt(value) : BigInt(value);
262
+ }
263
+ return value;
264
+ }
265
+ if (dataType === "NUMERIC") {
266
+ if (mode === "bigint") {
267
+ return typeof value === "string" ? BigInt(value) : BigInt(value);
268
+ }
269
+ return typeof value === "string" ? parseFloat(value) : value;
270
+ }
271
+ return value;
272
+ }
273
+
173
274
  // src/builders/select.ts
174
275
  var SelectQueryBuilder = class extends BaseQueryBuilder {
175
276
  constructor(db, table, columns) {
@@ -329,9 +430,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
329
430
  async execute() {
330
431
  const { sql: joinSql, params: joinParams } = this.buildJoins();
331
432
  const distinct = this.isDistinct ? "DISTINCT " : "";
332
- this.query = `SELECT ${distinct}${this.selectedColumns.join(", ")} ${this.query}`;
333
- this.query += joinSql;
334
- this.params.push(...joinParams);
433
+ const whereIndex = this.query.indexOf(" WHERE ");
434
+ let fromPart = this.query;
435
+ let wherePart = "";
436
+ if (whereIndex !== -1) {
437
+ fromPart = this.query.substring(0, whereIndex);
438
+ wherePart = this.query.substring(whereIndex);
439
+ }
440
+ this.query = `SELECT ${distinct}${this.selectedColumns.join(", ")} ${fromPart}${joinSql}${wherePart}`;
441
+ this.params = [...joinParams, ...this.params];
335
442
  const { sql: sql2, params } = this.build();
336
443
  const rawResults = await this.db.select(sql2, params);
337
444
  const hasIncludes = Object.values(this.includeRelations).some((i) => i);
@@ -346,10 +453,12 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
346
453
  return rawResults.map((row) => {
347
454
  const newRow = {};
348
455
  for (const key in row) {
349
- if (key.startsWith(prefix)) {
350
- newRow[key.substring(prefix.length)] = row[key];
456
+ const columnName = key.startsWith(prefix) ? key.substring(prefix.length) : key;
457
+ const column = this.table._.columns[columnName];
458
+ if (column) {
459
+ newRow[columnName] = deserializeValue(row[key], column);
351
460
  } else {
352
- newRow[key] = row[key];
461
+ newRow[columnName] = row[key];
353
462
  }
354
463
  }
355
464
  return newRow;
@@ -403,18 +512,23 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
403
512
  if (key.includes(".")) {
404
513
  const [tableAlias, columnName] = key.split(".");
405
514
  if (tableAlias === this.selectedTableAlias) {
406
- result[columnName] = value;
515
+ const column = this.table._.columns[columnName];
516
+ result[columnName] = column ? deserializeValue(value, column) : value;
407
517
  } else {
408
518
  const relationPath = parseRelationPath(tableAlias, this.selectedTableAlias);
409
519
  if (relationPath.length > 0) {
410
- setNestedValue(relations2, relationPath, value, columnName);
520
+ const relationConfig = getNestedRelation(this.table, relationPath);
521
+ const column = relationConfig?.foreignTable?._.columns?.[columnName];
522
+ const deserializedValue = column ? deserializeValue(value, column) : value;
523
+ setNestedValue(relations2, relationPath, deserializedValue, columnName);
411
524
  } else {
412
525
  if (!result[tableAlias]) result[tableAlias] = {};
413
526
  result[tableAlias][columnName] = value;
414
527
  }
415
528
  }
416
529
  } else {
417
- result[key] = value;
530
+ const column = this.table._.columns[key];
531
+ result[key] = column ? deserializeValue(value, column) : value;
418
532
  }
419
533
  }
420
534
  const attachRelations = (target, relationsData, table, pathPrefix = []) => {
@@ -499,8 +613,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
499
613
  const originalColumns = this.selectedColumns;
500
614
  this.selectedColumns = ["1"];
501
615
  const { sql: joinSql, params: joinParams } = this.buildJoins();
502
- const query = `SELECT 1 ${this.query}${joinSql} LIMIT 1`;
503
- const params = [...this.params, ...joinParams];
616
+ const whereIndex = this.query.indexOf(" WHERE ");
617
+ let fromPart = this.query;
618
+ let wherePart = "";
619
+ if (whereIndex !== -1) {
620
+ fromPart = this.query.substring(0, whereIndex);
621
+ wherePart = this.query.substring(whereIndex);
622
+ }
623
+ const query = `SELECT 1 ${fromPart}${joinSql}${wherePart} LIMIT 1`;
624
+ const params = [...joinParams, ...this.params];
504
625
  this.selectedColumns = originalColumns;
505
626
  const result = await this.db.select(query, params);
506
627
  return result.length > 0;
@@ -509,8 +630,15 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
509
630
  const originalColumns = this.selectedColumns;
510
631
  this.selectedColumns = ["COUNT(*) as count"];
511
632
  const { sql: joinSql, params: joinParams } = this.buildJoins();
512
- const query = `SELECT COUNT(*) as count ${this.query}${joinSql}`;
513
- const params = [...this.params, ...joinParams];
633
+ const whereIndex = this.query.indexOf(" WHERE ");
634
+ let fromPart = this.query;
635
+ let wherePart = "";
636
+ if (whereIndex !== -1) {
637
+ fromPart = this.query.substring(0, whereIndex);
638
+ wherePart = this.query.substring(whereIndex);
639
+ }
640
+ const query = `SELECT COUNT(*) as count ${fromPart}${joinSql}${wherePart}`;
641
+ const params = [...joinParams, ...this.params];
514
642
  this.selectedColumns = originalColumns;
515
643
  const result = await this.db.select(query, params);
516
644
  return result[0]?.count || 0;
@@ -523,11 +651,19 @@ var SelectQueryBuilder = class extends BaseQueryBuilder {
523
651
  const originalColumns = this.selectedColumns;
524
652
  this.selectedColumns = [`${this.selectedTableAlias}.${columnName} AS "${columnName}"`];
525
653
  const { sql: joinSql, params: joinParams } = this.buildJoins();
526
- const query = `SELECT ${this.selectedColumns.join(", ")} ${this.query}${joinSql}`;
527
- const params = [...this.params, ...joinParams];
654
+ const whereIndex = this.query.indexOf(" WHERE ");
655
+ let fromPart = this.query;
656
+ let wherePart = "";
657
+ if (whereIndex !== -1) {
658
+ fromPart = this.query.substring(0, whereIndex);
659
+ wherePart = this.query.substring(whereIndex);
660
+ }
661
+ const query = `SELECT ${this.selectedColumns.join(", ")} ${fromPart}${joinSql}${wherePart}`;
662
+ const params = [...joinParams, ...this.params];
528
663
  this.selectedColumns = originalColumns;
529
664
  const results = await this.db.select(query, params);
530
- return results.map((row) => row[columnName]);
665
+ const col = this.table._.columns[column];
666
+ return results.map((row) => col ? deserializeValue(row[columnName], col) : row[columnName]);
531
667
  }
532
668
  async paginate(page = 1, pageSize = 10) {
533
669
  if (page < 1) page = 1;
@@ -700,7 +836,7 @@ var UpdateQueryBuilder = class extends BaseQueryBuilder {
700
836
  throw new ColumnNotFoundError(key, this.table._.name);
701
837
  }
702
838
  setClauses.push(`${column._.name} = ?`);
703
- setParams.push(value);
839
+ setParams.push(serializeValue(value, column));
704
840
  }
705
841
  }
706
842
  for (const op of this.incrementDecrementOps) {
@@ -847,11 +983,18 @@ var InsertQueryBuilder = class extends BaseQueryBuilder {
847
983
  ", "
848
984
  )}) VALUES ${valuesSql}${conflictClause}`;
849
985
  const params = dataSets.flatMap(
850
- (data) => columns.map((col) => data[col] ?? null)
986
+ (data) => columns.map((col) => {
987
+ const value = data[col] ?? null;
988
+ const column = this.table._.columns[col];
989
+ return column ? serializeValue(value, column) : value;
990
+ })
851
991
  );
852
992
  if (this.onConflictAction === "update") {
853
993
  const setValues = Object.entries(this.updateSet).map(
854
- ([, value]) => value
994
+ ([key, value]) => {
995
+ const column = this.table._.columns[key];
996
+ return column ? serializeValue(value, column) : value;
997
+ }
855
998
  );
856
999
  params.push(...setValues);
857
1000
  }
@@ -903,11 +1046,18 @@ var InsertQueryBuilder = class extends BaseQueryBuilder {
903
1046
  ", "
904
1047
  )}) VALUES ${valuesSql}${conflictClause}`;
905
1048
  const params = processedDataSets.flatMap(
906
- (data) => columns.map((col) => data[col] ?? null)
1049
+ (data) => columns.map((col) => {
1050
+ const value = data[col] ?? null;
1051
+ const column = this.table._.columns[col];
1052
+ return column ? serializeValue(value, column) : value;
1053
+ })
907
1054
  );
908
1055
  if (this.onConflictAction === "update") {
909
1056
  const setValues = Object.entries(this.updateSet).map(
910
- ([, value]) => value
1057
+ ([key, value]) => {
1058
+ const column = this.table._.columns[key];
1059
+ return column ? serializeValue(value, column) : value;
1060
+ }
911
1061
  );
912
1062
  params.push(...setValues);
913
1063
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@type32/tauri-sqlite-orm",
3
- "version": "0.2.11",
3
+ "version": "0.2.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",