@type32/tauri-sqlite-orm 0.2.15 → 0.3.0

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.mjs CHANGED
@@ -75,7 +75,10 @@ var TauriDialect = class {
75
75
  };
76
76
 
77
77
  // src/builders/select.ts
78
- import { sql } from "kysely";
78
+ import { sql as sql2 } from "kysely";
79
+
80
+ // src/operators.ts
81
+ import { isExpression, sql } from "kysely";
79
82
 
80
83
  // src/serialization.ts
81
84
  function serializeValue(value, column) {
@@ -178,6 +181,83 @@ function deserializeValue(value, column) {
178
181
  return value;
179
182
  }
180
183
 
184
+ // src/operators.ts
185
+ var eq = (column, value, tableAlias) => {
186
+ const colRef = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
187
+ const serialized = serializeValue(value, column);
188
+ return sql`${sql.ref(colRef)} = ${sql.val(serialized)}`;
189
+ };
190
+ var ne = (column, value, tableAlias) => {
191
+ const colRef = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
192
+ const serialized = serializeValue(value, column);
193
+ return sql`${sql.ref(colRef)} != ${sql.val(serialized)}`;
194
+ };
195
+ var and = (...conditions) => {
196
+ if (conditions.length === 0) return sql`1 = 1`;
197
+ if (conditions.length === 1) return conditions[0];
198
+ return sql`(${sql.join(conditions.map((c) => sql`(${c})`), sql` AND `)})`;
199
+ };
200
+ var or = (...conditions) => {
201
+ if (conditions.length === 0) return sql`1 = 1`;
202
+ if (conditions.length === 1) return conditions[0];
203
+ return sql`(${sql.join(conditions.map((c) => sql`(${c})`), sql` OR `)})`;
204
+ };
205
+ var not = (condition) => sql`NOT (${condition})`;
206
+ var gt = (column, value) => {
207
+ const serialized = serializeValue(value, column);
208
+ return sql`${sql.ref(column._.name)} > ${sql.val(serialized)}`;
209
+ };
210
+ var gte = (column, value) => {
211
+ const serialized = serializeValue(value, column);
212
+ return sql`${sql.ref(column._.name)} >= ${sql.val(serialized)}`;
213
+ };
214
+ var lt = (column, value) => {
215
+ const serialized = serializeValue(value, column);
216
+ return sql`${sql.ref(column._.name)} < ${sql.val(serialized)}`;
217
+ };
218
+ var lte = (column, value) => {
219
+ const serialized = serializeValue(value, column);
220
+ return sql`${sql.ref(column._.name)} <= ${sql.val(serialized)}`;
221
+ };
222
+ var like = (column, pattern) => sql`${sql.ref(column._.name)} LIKE ${sql.val(pattern)}`;
223
+ var ilike = (column, pattern) => sql`${sql.ref(column._.name)} LIKE ${sql.val(pattern)} COLLATE NOCASE`;
224
+ var startsWith = (column, value) => sql`${sql.ref(column._.name)} LIKE ${sql.val(`${value}%`)}`;
225
+ var endsWith = (column, value) => sql`${sql.ref(column._.name)} LIKE ${sql.val(`%${value}`)}`;
226
+ var contains = (column, value) => sql`${sql.ref(column._.name)} LIKE ${sql.val(`%${value}%`)}`;
227
+ var isNull = (column) => sql`${sql.ref(column._.name)} IS NULL`;
228
+ var isNotNull = (column) => sql`${sql.ref(column._.name)} IS NOT NULL`;
229
+ var exists = (subquery2) => sql`EXISTS ${subquery2}`;
230
+ var notExists = (subquery2) => sql`NOT EXISTS ${subquery2}`;
231
+ var eqSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} = (${subquery2})`;
232
+ var neSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} != (${subquery2})`;
233
+ var gtSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} > (${subquery2})`;
234
+ var gteSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} >= (${subquery2})`;
235
+ var ltSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} < (${subquery2})`;
236
+ var lteSubquery = (column, subquery2) => sql`${sql.ref(column._.name)} <= (${subquery2})`;
237
+ var inArray = (column, values) => {
238
+ if (isExpression(values)) {
239
+ return sql`${sql.ref(column._.name)} IN (${values})`;
240
+ }
241
+ const arr = values;
242
+ if (arr.length === 0) return sql`1 = 0`;
243
+ const serialized = arr.map((v) => sql.val(serializeValue(v, column)));
244
+ return sql`${sql.ref(column._.name)} IN (${sql.join(serialized)})`;
245
+ };
246
+ var notIn = (column, values) => {
247
+ if (isExpression(values)) {
248
+ return sql`${sql.ref(column._.name)} NOT IN (${values})`;
249
+ }
250
+ const arr = values;
251
+ if (arr.length === 0) return sql`1 = 1`;
252
+ const serialized = arr.map((v) => sql.val(serializeValue(v, column)));
253
+ return sql`${sql.ref(column._.name)} NOT IN (${sql.join(serialized)})`;
254
+ };
255
+ var between = (column, min2, max2) => {
256
+ const serializedMin = serializeValue(min2, column);
257
+ const serializedMax = serializeValue(max2, column);
258
+ return sql`${sql.ref(column._.name)} BETWEEN ${sql.val(serializedMin)} AND ${sql.val(serializedMax)}`;
259
+ };
260
+
181
261
  // src/builders/select.ts
182
262
  function getDbNameToTsName(table) {
183
263
  const map = {};
@@ -239,7 +319,7 @@ var SelectQueryBuilder = class {
239
319
  this._builder = this._builder.orderBy(column, direction);
240
320
  } else {
241
321
  this._builder = this._builder.orderBy(
242
- sql.ref(column._.name),
322
+ sql2.ref(column._.name),
243
323
  direction
244
324
  );
245
325
  }
@@ -256,7 +336,7 @@ var SelectQueryBuilder = class {
256
336
  groupBy(...columns) {
257
337
  for (const col of columns) {
258
338
  this._builder = this._builder.groupBy(
259
- sql`${sql.ref(this._table._.name)}.${sql.ref(col._.name)}`
339
+ sql2`${sql2.ref(this._table._.name)}.${sql2.ref(col._.name)}`
260
340
  );
261
341
  }
262
342
  return this;
@@ -307,32 +387,62 @@ var SelectQueryBuilder = class {
307
387
  (col) => `${foreignAlias}.${col._.name} as "${foreignAlias}.${col._.name}"`
308
388
  );
309
389
  if (relation.type === "one" && relation.fields && relation.references) {
310
- const onCondition = sql`${sql.join(
390
+ const onCondition = sql2`${sql2.join(
311
391
  relation.fields.map(
312
- (field, i) => sql`${sql.ref(`${parentAlias}.${field._.name}`)} = ${sql.ref(`${foreignAlias}.${relation.references[i]._.name}`)}`
392
+ (field, i) => sql2`${sql2.ref(`${parentAlias}.${field._.name}`)} = ${sql2.ref(`${foreignAlias}.${relation.references[i]._.name}`)}`
313
393
  ),
314
- sql` AND `
394
+ sql2` AND `
315
395
  )}`;
316
396
  this._builder = this._builder.leftJoin(
317
397
  `${foreignTable._.name} as ${foreignAlias}`,
318
398
  (join) => join.on(onCondition)
319
399
  ).select(aliasedCols);
320
400
  } else if (relation.type === "many") {
321
- const refRelation = Object.entries(foreignTable.relations).find(
322
- ([, r]) => r.foreignTable === parentTable
323
- );
324
- if (refRelation && refRelation[1].fields && refRelation[1].references) {
325
- const [, relationConfig] = refRelation;
326
- const onCondition = sql`${sql.join(
327
- relationConfig.fields.map(
328
- (field, i) => sql`${sql.ref(`${foreignAlias}.${field._.name}`)} = ${sql.ref(`${parentAlias}.${relationConfig.references[i]._.name}`)}`
329
- ),
330
- sql` AND `
331
- )}`;
401
+ if (relation.junctionTable && relation.fromJunction && relation.toJunction) {
402
+ const junctionTable = relation.junctionTable;
403
+ const junctionAlias = `${foreignAlias}_jn`;
404
+ const fromJ = relation.fromJunction;
405
+ const toJ = relation.toJunction;
406
+ const join1 = sql2`${sql2.ref(`${parentAlias}.${fromJ.column._.name}`)} = ${sql2.ref(`${junctionAlias}.${fromJ.junctionColumn._.name}`)}`;
407
+ let join2 = sql2`${sql2.ref(`${junctionAlias}.${toJ.junctionColumn._.name}`)} = ${sql2.ref(`${foreignAlias}.${toJ.column._.name}`)}`;
408
+ if (relation.where) {
409
+ join2 = and(join2, relation.where(foreignAlias));
410
+ }
332
411
  this._builder = this._builder.leftJoin(
412
+ `${junctionTable._.name} as ${junctionAlias}`,
413
+ (join) => join.on(join1)
414
+ ).leftJoin(
333
415
  `${foreignTable._.name} as ${foreignAlias}`,
334
- (join) => join.on(onCondition)
416
+ (join) => join.on(join2)
335
417
  ).select(aliasedCols);
418
+ } else {
419
+ let fields = relation.fields;
420
+ let references = relation.references;
421
+ if (!fields || !references) {
422
+ const refRelation = Object.entries(foreignTable.relations).find(
423
+ ([, r]) => r.foreignTable === parentTable
424
+ );
425
+ if (refRelation && refRelation[1].fields && refRelation[1].references) {
426
+ const [, relationConfig] = refRelation;
427
+ fields = relationConfig.fields;
428
+ references = relationConfig.references;
429
+ }
430
+ }
431
+ if (fields && references) {
432
+ let onCondition = sql2`${sql2.join(
433
+ fields.map(
434
+ (field, i) => sql2`${sql2.ref(`${foreignAlias}.${field._.name}`)} = ${sql2.ref(`${parentAlias}.${references[i]._.name}`)}`
435
+ ),
436
+ sql2` AND `
437
+ )}`;
438
+ if (relation.where) {
439
+ onCondition = and(onCondition, relation.where(foreignAlias));
440
+ }
441
+ this._builder = this._builder.leftJoin(
442
+ `${foreignTable._.name} as ${foreignAlias}`,
443
+ (join) => join.on(onCondition)
444
+ ).select(aliasedCols);
445
+ }
336
446
  }
337
447
  }
338
448
  if (typeof include === "object" && include.with) {
@@ -428,6 +538,7 @@ var SelectQueryBuilder = class {
428
538
  const column = this._table._.columns[tsName];
429
539
  result[tsName] = column ? deserializeValue(value, column) : value;
430
540
  } else {
541
+ if (tableAlias.endsWith("_jn")) continue;
431
542
  const path = parseRelationPath(tableAlias, this._table._.name);
432
543
  if (path.length > 0) {
433
544
  const relationConfig = getNestedRelation(this._table, path);
@@ -506,12 +617,12 @@ var SelectQueryBuilder = class {
506
617
  }
507
618
  async exists() {
508
619
  this.applyIncludes();
509
- const compiledResult = await this._builder.clearSelect().select(sql.raw("1").as("__exists__")).limit(1).execute();
620
+ const compiledResult = await this._builder.clearSelect().select(sql2.raw("1").as("__exists__")).limit(1).execute();
510
621
  return compiledResult.length > 0;
511
622
  }
512
623
  async count() {
513
624
  this.applyIncludes();
514
- const result = await this._builder.clearSelect().select(sql`COUNT(*)`.as("count")).execute();
625
+ const result = await this._builder.clearSelect().select(sql2`COUNT(*)`.as("count")).execute();
515
626
  const row = result[0];
516
627
  const val = row ? row['"count"'] ?? row.count : void 0;
517
628
  return Number(val ?? 0);
@@ -521,7 +632,7 @@ var SelectQueryBuilder = class {
521
632
  const col = this._table._.columns[column];
522
633
  const alias2 = col._.name;
523
634
  const results = await this._builder.clearSelect().select(
524
- sql.raw(`${this._table._.name}.${alias2}`).as(alias2)
635
+ sql2.raw(`${this._table._.name}.${alias2}`).as(alias2)
525
636
  ).execute();
526
637
  return results.map((row) => {
527
638
  const val = row['"' + alias2 + '"'] ?? row[alias2];
@@ -557,7 +668,7 @@ var SelectQueryBuilder = class {
557
668
  };
558
669
 
559
670
  // src/builders/update.ts
560
- import { sql as sql2 } from "kysely";
671
+ import { sql as sql3 } from "kysely";
561
672
 
562
673
  // src/errors.ts
563
674
  var TauriORMError = class extends Error {
@@ -710,7 +821,7 @@ var UpdateQueryBuilder = class {
710
821
  }
711
822
  for (const op of this._incrementDecrementOps) {
712
823
  const sign = op.op === "increment" ? "+" : "-";
713
- setMap[op.column] = sql2.raw(`${op.column} ${sign} ${op.value}`);
824
+ setMap[op.column] = sql3.raw(`${op.column} ${sign} ${op.value}`);
714
825
  }
715
826
  return setMap;
716
827
  }
@@ -1482,8 +1593,9 @@ var OneRelation = class extends Relation {
1482
1593
  }
1483
1594
  };
1484
1595
  var ManyRelation = class extends Relation {
1485
- constructor(foreignTable) {
1596
+ constructor(foreignTable, config) {
1486
1597
  super(foreignTable);
1598
+ this.config = config;
1487
1599
  }
1488
1600
  };
1489
1601
  var relations = (table, relationsCallback) => {
@@ -1501,7 +1613,9 @@ var relations = (table, relationsCallback) => {
1501
1613
  type: "one",
1502
1614
  foreignTable: relation.foreignTable,
1503
1615
  fields: relation.config?.fields,
1504
- references: relation.config?.references
1616
+ references: relation.config?.references,
1617
+ optional: relation.config?.optional,
1618
+ alias: relation.config?.alias
1505
1619
  };
1506
1620
  } else if (relation instanceof ManyRelation) {
1507
1621
  table.relations[name] = {
@@ -1519,84 +1633,6 @@ var alias = (table, alias2) => {
1519
1633
  return table;
1520
1634
  };
1521
1635
 
1522
- // src/operators.ts
1523
- import { isExpression, sql as sql3 } from "kysely";
1524
- var eq = (column, value, tableAlias) => {
1525
- const colRef = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
1526
- const serialized = serializeValue(value, column);
1527
- return sql3`${sql3.ref(colRef)} = ${sql3.val(serialized)}`;
1528
- };
1529
- var ne = (column, value, tableAlias) => {
1530
- const colRef = tableAlias ? `${tableAlias}.${column._.name}` : column._.name;
1531
- const serialized = serializeValue(value, column);
1532
- return sql3`${sql3.ref(colRef)} != ${sql3.val(serialized)}`;
1533
- };
1534
- var and = (...conditions) => {
1535
- if (conditions.length === 0) return sql3`1 = 1`;
1536
- if (conditions.length === 1) return conditions[0];
1537
- return sql3`(${sql3.join(conditions.map((c) => sql3`(${c})`), sql3` AND `)})`;
1538
- };
1539
- var or = (...conditions) => {
1540
- if (conditions.length === 0) return sql3`1 = 1`;
1541
- if (conditions.length === 1) return conditions[0];
1542
- return sql3`(${sql3.join(conditions.map((c) => sql3`(${c})`), sql3` OR `)})`;
1543
- };
1544
- var not = (condition) => sql3`NOT (${condition})`;
1545
- var gt = (column, value) => {
1546
- const serialized = serializeValue(value, column);
1547
- return sql3`${sql3.ref(column._.name)} > ${sql3.val(serialized)}`;
1548
- };
1549
- var gte = (column, value) => {
1550
- const serialized = serializeValue(value, column);
1551
- return sql3`${sql3.ref(column._.name)} >= ${sql3.val(serialized)}`;
1552
- };
1553
- var lt = (column, value) => {
1554
- const serialized = serializeValue(value, column);
1555
- return sql3`${sql3.ref(column._.name)} < ${sql3.val(serialized)}`;
1556
- };
1557
- var lte = (column, value) => {
1558
- const serialized = serializeValue(value, column);
1559
- return sql3`${sql3.ref(column._.name)} <= ${sql3.val(serialized)}`;
1560
- };
1561
- var like = (column, pattern) => sql3`${sql3.ref(column._.name)} LIKE ${sql3.val(pattern)}`;
1562
- var ilike = (column, pattern) => sql3`${sql3.ref(column._.name)} LIKE ${sql3.val(pattern)} COLLATE NOCASE`;
1563
- var startsWith = (column, value) => sql3`${sql3.ref(column._.name)} LIKE ${sql3.val(`${value}%`)}`;
1564
- var endsWith = (column, value) => sql3`${sql3.ref(column._.name)} LIKE ${sql3.val(`%${value}`)}`;
1565
- var contains = (column, value) => sql3`${sql3.ref(column._.name)} LIKE ${sql3.val(`%${value}%`)}`;
1566
- var isNull = (column) => sql3`${sql3.ref(column._.name)} IS NULL`;
1567
- var isNotNull = (column) => sql3`${sql3.ref(column._.name)} IS NOT NULL`;
1568
- var exists = (subquery2) => sql3`EXISTS ${subquery2}`;
1569
- var notExists = (subquery2) => sql3`NOT EXISTS ${subquery2}`;
1570
- var eqSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} = (${subquery2})`;
1571
- var neSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} != (${subquery2})`;
1572
- var gtSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} > (${subquery2})`;
1573
- var gteSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} >= (${subquery2})`;
1574
- var ltSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} < (${subquery2})`;
1575
- var lteSubquery = (column, subquery2) => sql3`${sql3.ref(column._.name)} <= (${subquery2})`;
1576
- var inArray = (column, values) => {
1577
- if (isExpression(values)) {
1578
- return sql3`${sql3.ref(column._.name)} IN (${values})`;
1579
- }
1580
- const arr = values;
1581
- if (arr.length === 0) return sql3`1 = 0`;
1582
- const serialized = arr.map((v) => sql3.val(serializeValue(v, column)));
1583
- return sql3`${sql3.ref(column._.name)} IN (${sql3.join(serialized)})`;
1584
- };
1585
- var notIn = (column, values) => {
1586
- if (isExpression(values)) {
1587
- return sql3`${sql3.ref(column._.name)} NOT IN (${values})`;
1588
- }
1589
- const arr = values;
1590
- if (arr.length === 0) return sql3`1 = 1`;
1591
- const serialized = arr.map((v) => sql3.val(serializeValue(v, column)));
1592
- return sql3`${sql3.ref(column._.name)} NOT IN (${sql3.join(serialized)})`;
1593
- };
1594
- var between = (column, min2, max2) => {
1595
- const serializedMin = serializeValue(min2, column);
1596
- const serializedMax = serializeValue(max2, column);
1597
- return sql3`${sql3.ref(column._.name)} BETWEEN ${sql3.val(serializedMin)} AND ${sql3.val(serializedMax)}`;
1598
- };
1599
-
1600
1636
  // src/aggregates.ts
1601
1637
  import { sql as sql4 } from "kysely";
1602
1638
  var count = (column) => sql4`COUNT(${column ? sql4.ref(column._.name) : sql4.raw("*")})`;
@@ -1633,6 +1669,126 @@ function numeric(name, config) {
1633
1669
  }
1634
1670
  var enumType = (name, values) => text(name, { enum: values });
1635
1671
 
1672
+ // src/relations-v2.ts
1673
+ function extractTables(schema) {
1674
+ const tables = {};
1675
+ for (const [key, value] of Object.entries(schema)) {
1676
+ const v = value;
1677
+ if (v && typeof v === "object" && v._?.name && v._?.columns && typeof v.relations === "object") {
1678
+ tables[key] = v;
1679
+ }
1680
+ }
1681
+ return tables;
1682
+ }
1683
+ function through(column, junctionColumn, junctionTable) {
1684
+ return { column, junctionColumn, junctionTable };
1685
+ }
1686
+ function toArray(col) {
1687
+ return Array.isArray(col) ? col : [col];
1688
+ }
1689
+ function isThroughRef(v) {
1690
+ return v && typeof v === "object" && "column" in v && "junctionColumn" in v && "junctionTable" in v;
1691
+ }
1692
+ function buildTableRef(table) {
1693
+ return { ...table._.columns };
1694
+ }
1695
+ function buildR(tables) {
1696
+ const tableRefs = {};
1697
+ const oneFns = {};
1698
+ const manyFns = {};
1699
+ for (const [tableKey, table] of Object.entries(tables)) {
1700
+ tableRefs[tableKey] = buildTableRef(table);
1701
+ const foreignTable = table;
1702
+ oneFns[tableKey] = (opts) => {
1703
+ return new OneRelation(foreignTable, {
1704
+ fields: toArray(opts.from),
1705
+ references: toArray(opts.to),
1706
+ optional: opts.optional,
1707
+ alias: opts.alias
1708
+ });
1709
+ };
1710
+ manyFns[tableKey] = (opts) => {
1711
+ if (!opts?.from || !opts?.to) return new ManyRelation(foreignTable);
1712
+ if (isThroughRef(opts.from) && isThroughRef(opts.to)) {
1713
+ return new ManyRelation(foreignTable, {
1714
+ through: {
1715
+ junctionTable: opts.from.junctionTable,
1716
+ fromRef: { column: opts.from.column, junctionColumn: opts.from.junctionColumn },
1717
+ toRef: { column: opts.to.column, junctionColumn: opts.to.junctionColumn }
1718
+ },
1719
+ optional: opts.optional,
1720
+ alias: opts.alias,
1721
+ where: opts.where
1722
+ });
1723
+ }
1724
+ return new ManyRelation(foreignTable, {
1725
+ from: toArray(opts.from),
1726
+ to: toArray(opts.to),
1727
+ optional: opts.optional,
1728
+ alias: opts.alias,
1729
+ where: opts.where
1730
+ });
1731
+ };
1732
+ }
1733
+ return {
1734
+ ...tableRefs,
1735
+ one: oneFns,
1736
+ many: manyFns
1737
+ };
1738
+ }
1739
+ function applyRelationsToTables(tables, relationsResult) {
1740
+ for (const [tableKey, rels] of Object.entries(relationsResult)) {
1741
+ const table = tables[tableKey];
1742
+ if (!table) continue;
1743
+ for (const [relName, relation] of Object.entries(rels)) {
1744
+ if (relation instanceof OneRelation) {
1745
+ table.relations[relName] = {
1746
+ type: "one",
1747
+ foreignTable: relation.foreignTable,
1748
+ fields: relation.config?.fields,
1749
+ references: relation.config?.references,
1750
+ optional: relation.config?.optional,
1751
+ alias: relation.config?.alias
1752
+ };
1753
+ } else if (relation instanceof ManyRelation) {
1754
+ const config = relation.config;
1755
+ if (config?.through) {
1756
+ table.relations[relName] = {
1757
+ type: "many",
1758
+ foreignTable: relation.foreignTable,
1759
+ junctionTable: config.through.junctionTable,
1760
+ fromJunction: config.through.fromRef,
1761
+ toJunction: config.through.toRef,
1762
+ optional: config.optional,
1763
+ alias: config.alias,
1764
+ where: config.where
1765
+ };
1766
+ } else {
1767
+ table.relations[relName] = {
1768
+ type: "many",
1769
+ foreignTable: relation.foreignTable,
1770
+ fields: config ? config.to : void 0,
1771
+ references: config ? config.from : void 0,
1772
+ optional: config?.optional,
1773
+ alias: config?.alias,
1774
+ where: config?.where
1775
+ };
1776
+ }
1777
+ }
1778
+ }
1779
+ }
1780
+ }
1781
+ function defineRelations(schema, callback) {
1782
+ const tables = extractTables(schema);
1783
+ const r = buildR(tables);
1784
+ const result = callback(r);
1785
+ applyRelationsToTables(tables, result);
1786
+ return result;
1787
+ }
1788
+ function defineRelationsPart(schema, callback) {
1789
+ return defineRelations(schema, callback);
1790
+ }
1791
+
1636
1792
  // src/index.ts
1637
1793
  import { sql as sql5 } from "kysely";
1638
1794
  export {
@@ -1669,6 +1825,8 @@ export {
1669
1825
  contains,
1670
1826
  count,
1671
1827
  countDistinct,
1828
+ defineRelations,
1829
+ defineRelationsPart,
1672
1830
  desc,
1673
1831
  endsWith,
1674
1832
  enumType,
@@ -1708,5 +1866,6 @@ export {
1708
1866
  startsWith,
1709
1867
  subquery,
1710
1868
  sum,
1711
- text
1869
+ text,
1870
+ through
1712
1871
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@type32/tauri-sqlite-orm",
3
- "version": "0.2.15",
3
+ "version": "0.3.0",
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",