@type32/tauri-sqlite-orm 0.1.18-6 → 0.1.18-8
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/README.md +0 -156
- package/dist/index.d.mts +34 -12
- package/dist/index.d.ts +34 -12
- package/dist/index.js +33 -13
- package/dist/index.mjs +30 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,159 +16,3 @@ bun add @type32/tauri-sqlite-orm @tauri-apps/plugin-sql
|
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Make sure the SQL plugin is registered on the Rust side (see Tauri docs).
|
|
19
|
-
|
|
20
|
-
### Quick Start
|
|
21
|
-
|
|
22
|
-
Here’s a quick example to get you started:
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
// src/db/schema.ts
|
|
26
|
-
import { sqliteTable, text, integer } from "@type32/tauri-sqlite-orm";
|
|
27
|
-
|
|
28
|
-
export const users = sqliteTable("users", {
|
|
29
|
-
id: integer("id").primaryKey().autoincrement(),
|
|
30
|
-
name: text("name").notNull(),
|
|
31
|
-
email: text("email").unique(),
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
export const posts = sqliteTable("posts", {
|
|
35
|
-
id: integer("id").primaryKey(),
|
|
36
|
-
content: text("content"),
|
|
37
|
-
authorId: integer("author_id").references(() => users.id),
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// src/db/index.ts
|
|
41
|
-
import { TauriORM } from "@type32/tauri-sqlite-orm";
|
|
42
|
-
import Database from "@tauri-apps/plugin-sql";
|
|
43
|
-
import * as schema from "./schema";
|
|
44
|
-
|
|
45
|
-
// Load the database
|
|
46
|
-
const dbInstance = await Database.load("sqlite:app.db");
|
|
47
|
-
|
|
48
|
-
// Create the ORM instance
|
|
49
|
-
export const db = new TauriORM(dbInstance, schema);
|
|
50
|
-
|
|
51
|
-
// Migrate the database if the schema has changed
|
|
52
|
-
await db.migrateIfDirty();
|
|
53
|
-
|
|
54
|
-
// Now you can use the ORM to interact with your database
|
|
55
|
-
const newUser = await db
|
|
56
|
-
.insert(schema.users)
|
|
57
|
-
.values({ name: "John Doe", email: "john.doe@example.com" });
|
|
58
|
-
const allUsers = await db.select(schema.users).execute();
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Documentation
|
|
62
|
-
|
|
63
|
-
- [Getting Started](docs/getting-started.md)
|
|
64
|
-
- [Schema and Types](docs/schema-and-types.md)
|
|
65
|
-
- [CRUD Operations (SELECT)](docs/queries-select.md)
|
|
66
|
-
- [CRUD Operations (INSERT)](docs/crud-insert.md)
|
|
67
|
-
- [CRUD Operations (UPDATE)](docs/crud-update.md)
|
|
68
|
-
- [CRUD Operations (DELETE)](docs/crud-delete.md)
|
|
69
|
-
- [Migrations](docs/migrations.md)
|
|
70
|
-
- [Transactions](docs/transactions.md)
|
|
71
|
-
- [Relations](docs/relations.md)
|
|
72
|
-
|
|
73
|
-
### Schema Definition
|
|
74
|
-
|
|
75
|
-
Define your tables and columns using a chainable, Drizzle-style API.
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
import { sqliteTable, text, integer, boolean } from "@type32/tauri-sqlite-orm";
|
|
79
|
-
|
|
80
|
-
export const users = sqliteTable("users", {
|
|
81
|
-
id: integer("id").primaryKey().autoincrement(),
|
|
82
|
-
name: text("name").notNull(),
|
|
83
|
-
email: text("email").unique(),
|
|
84
|
-
isActive: boolean("is_active").default(true),
|
|
85
|
-
createdAt: integer("created_at", { mode: "timestamp" }).$defaultFn(
|
|
86
|
-
() => new Date()
|
|
87
|
-
),
|
|
88
|
-
});
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### CRUD Operations
|
|
92
|
-
|
|
93
|
-
Perform `CREATE`, `READ`, `UPDATE`, and `DELETE` operations using a type-safe query builder.
|
|
94
|
-
|
|
95
|
-
**SELECT**
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
import { eq, and } from "@type32/tauri-sqlite-orm";
|
|
99
|
-
|
|
100
|
-
// Select all users
|
|
101
|
-
const allUsers = await db.select(users).execute();
|
|
102
|
-
|
|
103
|
-
// Select specific columns
|
|
104
|
-
const userNames = await db.select(users, ["name"]).execute();
|
|
105
|
-
|
|
106
|
-
// Use WHERE conditions
|
|
107
|
-
const activeUsers = await db
|
|
108
|
-
.select(users)
|
|
109
|
-
.where(eq(users.isActive, true))
|
|
110
|
-
.execute();
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**INSERT**
|
|
114
|
-
|
|
115
|
-
```typescript
|
|
116
|
-
// Insert a single user
|
|
117
|
-
const newUser = await db
|
|
118
|
-
.insert(users)
|
|
119
|
-
.values({ name: "Jane Doe", email: "jane.doe@example.com" });
|
|
120
|
-
|
|
121
|
-
// Insert multiple users
|
|
122
|
-
await db.insert(users).values([
|
|
123
|
-
{ name: "Alice", email: "alice@example.com" },
|
|
124
|
-
{ name: "Bob", email: "bob@example.com" },
|
|
125
|
-
]);
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**UPDATE**
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
import { eq } from "@type32/tauri-sqlite-orm";
|
|
132
|
-
|
|
133
|
-
// Update a user's email
|
|
134
|
-
await db
|
|
135
|
-
.update(users)
|
|
136
|
-
.set({ email: "new.email@example.com" })
|
|
137
|
-
.where(eq(users._.columns.id, 1));
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**DELETE**
|
|
141
|
-
|
|
142
|
-
```typescript
|
|
143
|
-
import { eq } from "@type32/tauri-sqlite-orm";
|
|
144
|
-
|
|
145
|
-
// Delete a user
|
|
146
|
-
await db.delete(users).where(eq(users._.columns.id, 1));
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Migrations
|
|
150
|
-
|
|
151
|
-
The ORM includes a simple migration system that automatically detects schema changes and applies them to the database.
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
// This will check if the schema has changed and run migrations if it has
|
|
155
|
-
await db.migrateIfDirty();
|
|
156
|
-
|
|
157
|
-
// You can also run migrations manually
|
|
158
|
-
await db.migrate();
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Transactions
|
|
162
|
-
|
|
163
|
-
Run multiple database operations within a transaction to ensure atomicity.
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
await db.transaction(async (tx) => {
|
|
167
|
-
await tx.insert(users).values({ name: "From Transaction" });
|
|
168
|
-
await tx.delete(users).where(eq(users._.columns.id, 1));
|
|
169
|
-
});
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### License
|
|
173
|
-
|
|
174
|
-
MIT
|
package/dist/index.d.mts
CHANGED
|
@@ -33,7 +33,7 @@ declare class SQLiteColumn<TName extends string = string, TType extends ColumnDa
|
|
|
33
33
|
notNull(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
34
34
|
default(value: ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
35
35
|
$defaultFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
36
|
-
primaryKey(): SQLiteColumn<TName, TType, TMode,
|
|
36
|
+
primaryKey(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
37
37
|
autoincrement(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, true>;
|
|
38
38
|
unique(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
39
39
|
references<T extends AnyTable, K extends keyof T["_"]["columns"] & string>(ref: T, column: K): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
@@ -52,11 +52,12 @@ type AnyTable = Table<Record<string, AnySQLiteColumn>, string>;
|
|
|
52
52
|
type InferSelectModel<T extends AnyTable> = {
|
|
53
53
|
[K in keyof T["_"]["columns"]]: ExtractColumnType<T["_"]["columns"][K]>;
|
|
54
54
|
};
|
|
55
|
-
type
|
|
56
|
-
[K in keyof TColumns]: TColumns[K]["_"]["notNull"] extends true ? TColumns[K]["_"]["hasDefault"] extends true ? never : K : never;
|
|
57
|
-
}[keyof TColumns];
|
|
55
|
+
type IsOptionalOnInsert<C extends AnySQLiteColumn> = C["_"]["notNull"] extends false ? true : C["_"]["hasDefault"] extends true ? true : C["_"]["autoincrement"] extends true ? true : false;
|
|
58
56
|
type OptionalColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
59
|
-
[K in keyof TColumns]: TColumns[K]
|
|
57
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? K : never;
|
|
58
|
+
}[keyof TColumns];
|
|
59
|
+
type RequiredColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
60
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? never : K;
|
|
60
61
|
}[keyof TColumns];
|
|
61
62
|
type InferInsertModel<T extends AnyTable> = {
|
|
62
63
|
[K in RequiredColumns<T["_"]["columns"]>]: ExtractColumnType<T["_"]["columns"][K]>;
|
|
@@ -145,7 +146,7 @@ declare class InsertQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
|
145
146
|
private conflictTarget;
|
|
146
147
|
private updateSet;
|
|
147
148
|
constructor(db: Database, table: T);
|
|
148
|
-
values(data:
|
|
149
|
+
values(data: InferInsertModel<T> | InferInsertModel<T>[]): this;
|
|
149
150
|
returning(...columns: (keyof T["_"]["columns"])[]): this;
|
|
150
151
|
onConflictDoNothing(target?: AnySQLiteColumn | AnySQLiteColumn[]): this;
|
|
151
152
|
onConflictDoUpdate(config: {
|
|
@@ -193,7 +194,7 @@ declare class WithQueryBuilder {
|
|
|
193
194
|
declare class TauriORM {
|
|
194
195
|
private db;
|
|
195
196
|
private tables;
|
|
196
|
-
constructor(db: Database, schema?: Record<string, AnyTable
|
|
197
|
+
constructor(db: Database, schema?: Record<string, AnyTable | Record<string, Relation>> | undefined);
|
|
197
198
|
private buildColumnDefinition;
|
|
198
199
|
migrate(): Promise<void>;
|
|
199
200
|
select<T extends AnyTable, C extends (keyof T["_"]["columns"])[] | undefined = undefined>(table: T, columns?: C): SelectQueryBuilder<T, C>;
|
|
@@ -221,11 +222,32 @@ declare class TauriORM {
|
|
|
221
222
|
}>;
|
|
222
223
|
migrateIfDirty(): Promise<boolean>;
|
|
223
224
|
}
|
|
224
|
-
declare
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
225
|
+
declare class Relation<T extends AnyTable = AnyTable> {
|
|
226
|
+
foreignTable: T;
|
|
227
|
+
constructor(foreignTable: T);
|
|
228
|
+
}
|
|
229
|
+
declare class OneRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
230
|
+
config?: {
|
|
231
|
+
fields: AnySQLiteColumn[];
|
|
232
|
+
references: AnySQLiteColumn[];
|
|
233
|
+
} | undefined;
|
|
234
|
+
constructor(foreignTable: T, config?: {
|
|
235
|
+
fields: AnySQLiteColumn[];
|
|
236
|
+
references: AnySQLiteColumn[];
|
|
237
|
+
} | undefined);
|
|
238
|
+
}
|
|
239
|
+
declare class ManyRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
240
|
+
constructor(foreignTable: T);
|
|
241
|
+
}
|
|
242
|
+
type RelationsBuilder = {
|
|
243
|
+
one: <U extends AnyTable>(table: U, config?: {
|
|
244
|
+
fields: AnySQLiteColumn[];
|
|
245
|
+
references: AnySQLiteColumn[];
|
|
246
|
+
}) => OneRelation<U>;
|
|
247
|
+
many: <U extends AnyTable>(table: U) => ManyRelation<U>;
|
|
248
|
+
};
|
|
249
|
+
declare const relations: <T extends AnyTable, R extends Record<string, Relation>>(_table: T, relationsCallback: (helpers: RelationsBuilder) => R) => R;
|
|
228
250
|
declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
|
|
229
251
|
declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
|
|
230
252
|
|
|
231
|
-
export { type AnySQLiteColumn, type AnyTable, type ColumnDataType, type ColumnOptions, DeleteQueryBuilder, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, type Mode, type SQLCondition, SQLiteColumn, SelectQueryBuilder, Table, TauriORM, UpdateQueryBuilder, WithQueryBuilder, alias, and, asc, avg, blob, boolean, count, countDistinct, desc, eq, getTableColumns, gt, gte, inArray, integer, isNotNull, isNull, like, lt, lte, max, min, not, or, real, relations, sql, sqliteTable, sum, text };
|
|
253
|
+
export { type AnySQLiteColumn, type AnyTable, type ColumnDataType, type ColumnOptions, DeleteQueryBuilder, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, ManyRelation, type Mode, OneRelation, Relation, type SQLCondition, SQLiteColumn, SelectQueryBuilder, Table, TauriORM, UpdateQueryBuilder, WithQueryBuilder, alias, and, asc, avg, blob, boolean, count, countDistinct, desc, eq, getTableColumns, gt, gte, inArray, integer, isNotNull, isNull, like, lt, lte, max, min, not, or, real, relations, sql, sqliteTable, sum, text };
|
package/dist/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ declare class SQLiteColumn<TName extends string = string, TType extends ColumnDa
|
|
|
33
33
|
notNull(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
34
34
|
default(value: ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
35
35
|
$defaultFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
36
|
-
primaryKey(): SQLiteColumn<TName, TType, TMode,
|
|
36
|
+
primaryKey(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
37
37
|
autoincrement(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, true>;
|
|
38
38
|
unique(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
39
39
|
references<T extends AnyTable, K extends keyof T["_"]["columns"] & string>(ref: T, column: K): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
@@ -52,11 +52,12 @@ type AnyTable = Table<Record<string, AnySQLiteColumn>, string>;
|
|
|
52
52
|
type InferSelectModel<T extends AnyTable> = {
|
|
53
53
|
[K in keyof T["_"]["columns"]]: ExtractColumnType<T["_"]["columns"][K]>;
|
|
54
54
|
};
|
|
55
|
-
type
|
|
56
|
-
[K in keyof TColumns]: TColumns[K]["_"]["notNull"] extends true ? TColumns[K]["_"]["hasDefault"] extends true ? never : K : never;
|
|
57
|
-
}[keyof TColumns];
|
|
55
|
+
type IsOptionalOnInsert<C extends AnySQLiteColumn> = C["_"]["notNull"] extends false ? true : C["_"]["hasDefault"] extends true ? true : C["_"]["autoincrement"] extends true ? true : false;
|
|
58
56
|
type OptionalColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
59
|
-
[K in keyof TColumns]: TColumns[K]
|
|
57
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? K : never;
|
|
58
|
+
}[keyof TColumns];
|
|
59
|
+
type RequiredColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
60
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? never : K;
|
|
60
61
|
}[keyof TColumns];
|
|
61
62
|
type InferInsertModel<T extends AnyTable> = {
|
|
62
63
|
[K in RequiredColumns<T["_"]["columns"]>]: ExtractColumnType<T["_"]["columns"][K]>;
|
|
@@ -145,7 +146,7 @@ declare class InsertQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
|
145
146
|
private conflictTarget;
|
|
146
147
|
private updateSet;
|
|
147
148
|
constructor(db: Database, table: T);
|
|
148
|
-
values(data:
|
|
149
|
+
values(data: InferInsertModel<T> | InferInsertModel<T>[]): this;
|
|
149
150
|
returning(...columns: (keyof T["_"]["columns"])[]): this;
|
|
150
151
|
onConflictDoNothing(target?: AnySQLiteColumn | AnySQLiteColumn[]): this;
|
|
151
152
|
onConflictDoUpdate(config: {
|
|
@@ -193,7 +194,7 @@ declare class WithQueryBuilder {
|
|
|
193
194
|
declare class TauriORM {
|
|
194
195
|
private db;
|
|
195
196
|
private tables;
|
|
196
|
-
constructor(db: Database, schema?: Record<string, AnyTable
|
|
197
|
+
constructor(db: Database, schema?: Record<string, AnyTable | Record<string, Relation>> | undefined);
|
|
197
198
|
private buildColumnDefinition;
|
|
198
199
|
migrate(): Promise<void>;
|
|
199
200
|
select<T extends AnyTable, C extends (keyof T["_"]["columns"])[] | undefined = undefined>(table: T, columns?: C): SelectQueryBuilder<T, C>;
|
|
@@ -221,11 +222,32 @@ declare class TauriORM {
|
|
|
221
222
|
}>;
|
|
222
223
|
migrateIfDirty(): Promise<boolean>;
|
|
223
224
|
}
|
|
224
|
-
declare
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
225
|
+
declare class Relation<T extends AnyTable = AnyTable> {
|
|
226
|
+
foreignTable: T;
|
|
227
|
+
constructor(foreignTable: T);
|
|
228
|
+
}
|
|
229
|
+
declare class OneRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
230
|
+
config?: {
|
|
231
|
+
fields: AnySQLiteColumn[];
|
|
232
|
+
references: AnySQLiteColumn[];
|
|
233
|
+
} | undefined;
|
|
234
|
+
constructor(foreignTable: T, config?: {
|
|
235
|
+
fields: AnySQLiteColumn[];
|
|
236
|
+
references: AnySQLiteColumn[];
|
|
237
|
+
} | undefined);
|
|
238
|
+
}
|
|
239
|
+
declare class ManyRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
240
|
+
constructor(foreignTable: T);
|
|
241
|
+
}
|
|
242
|
+
type RelationsBuilder = {
|
|
243
|
+
one: <U extends AnyTable>(table: U, config?: {
|
|
244
|
+
fields: AnySQLiteColumn[];
|
|
245
|
+
references: AnySQLiteColumn[];
|
|
246
|
+
}) => OneRelation<U>;
|
|
247
|
+
many: <U extends AnyTable>(table: U) => ManyRelation<U>;
|
|
248
|
+
};
|
|
249
|
+
declare const relations: <T extends AnyTable, R extends Record<string, Relation>>(_table: T, relationsCallback: (helpers: RelationsBuilder) => R) => R;
|
|
228
250
|
declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
|
|
229
251
|
declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
|
|
230
252
|
|
|
231
|
-
export { type AnySQLiteColumn, type AnyTable, type ColumnDataType, type ColumnOptions, DeleteQueryBuilder, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, type Mode, type SQLCondition, SQLiteColumn, SelectQueryBuilder, Table, TauriORM, UpdateQueryBuilder, WithQueryBuilder, alias, and, asc, avg, blob, boolean, count, countDistinct, desc, eq, getTableColumns, gt, gte, inArray, integer, isNotNull, isNull, like, lt, lte, max, min, not, or, real, relations, sql, sqliteTable, sum, text };
|
|
253
|
+
export { type AnySQLiteColumn, type AnyTable, type ColumnDataType, type ColumnOptions, DeleteQueryBuilder, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, ManyRelation, type Mode, OneRelation, Relation, type SQLCondition, SQLiteColumn, SelectQueryBuilder, Table, TauriORM, UpdateQueryBuilder, WithQueryBuilder, alias, and, asc, avg, blob, boolean, count, countDistinct, desc, eq, getTableColumns, gt, gte, inArray, integer, isNotNull, isNull, like, lt, lte, max, min, not, or, real, relations, sql, sqliteTable, sum, text };
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,9 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
DeleteQueryBuilder: () => DeleteQueryBuilder,
|
|
24
24
|
InsertQueryBuilder: () => InsertQueryBuilder,
|
|
25
|
+
ManyRelation: () => ManyRelation,
|
|
26
|
+
OneRelation: () => OneRelation,
|
|
27
|
+
Relation: () => Relation,
|
|
25
28
|
SQLiteColumn: () => SQLiteColumn,
|
|
26
29
|
SelectQueryBuilder: () => SelectQueryBuilder,
|
|
27
30
|
Table: () => Table,
|
|
@@ -104,7 +107,7 @@ var SQLiteColumn = class _SQLiteColumn {
|
|
|
104
107
|
return new _SQLiteColumn(
|
|
105
108
|
this._.name,
|
|
106
109
|
this.type,
|
|
107
|
-
{ ...this.options, primaryKey: true },
|
|
110
|
+
{ ...this.options, primaryKey: true, notNull: true },
|
|
108
111
|
this._.mode
|
|
109
112
|
);
|
|
110
113
|
}
|
|
@@ -610,7 +613,9 @@ var TauriORM = class {
|
|
|
610
613
|
this.db = db;
|
|
611
614
|
if (schema) {
|
|
612
615
|
for (const table of Object.values(schema)) {
|
|
613
|
-
|
|
616
|
+
if (table instanceof Table) {
|
|
617
|
+
this.tables.set(table._.name, table);
|
|
618
|
+
}
|
|
614
619
|
}
|
|
615
620
|
}
|
|
616
621
|
}
|
|
@@ -755,18 +760,30 @@ var TauriORM = class {
|
|
|
755
760
|
return false;
|
|
756
761
|
}
|
|
757
762
|
};
|
|
758
|
-
var
|
|
763
|
+
var Relation = class {
|
|
764
|
+
constructor(foreignTable) {
|
|
765
|
+
this.foreignTable = foreignTable;
|
|
766
|
+
}
|
|
767
|
+
};
|
|
768
|
+
var OneRelation = class extends Relation {
|
|
769
|
+
constructor(foreignTable, config) {
|
|
770
|
+
super(foreignTable);
|
|
771
|
+
this.config = config;
|
|
772
|
+
}
|
|
773
|
+
};
|
|
774
|
+
var ManyRelation = class extends Relation {
|
|
775
|
+
constructor(foreignTable) {
|
|
776
|
+
super(foreignTable);
|
|
777
|
+
}
|
|
778
|
+
};
|
|
779
|
+
var relations = (_table, relationsCallback) => {
|
|
759
780
|
return relationsCallback({
|
|
760
|
-
one: (
|
|
761
|
-
table
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
}
|
|
766
|
-
many: (table2) => ({
|
|
767
|
-
table: table2,
|
|
768
|
-
type: "many"
|
|
769
|
-
})
|
|
781
|
+
one: (table, config) => {
|
|
782
|
+
return new OneRelation(table, config);
|
|
783
|
+
},
|
|
784
|
+
many: (table) => {
|
|
785
|
+
return new ManyRelation(table);
|
|
786
|
+
}
|
|
770
787
|
});
|
|
771
788
|
};
|
|
772
789
|
var getTableColumns = (table) => {
|
|
@@ -779,6 +796,9 @@ var alias = (table, alias2) => {
|
|
|
779
796
|
0 && (module.exports = {
|
|
780
797
|
DeleteQueryBuilder,
|
|
781
798
|
InsertQueryBuilder,
|
|
799
|
+
ManyRelation,
|
|
800
|
+
OneRelation,
|
|
801
|
+
Relation,
|
|
782
802
|
SQLiteColumn,
|
|
783
803
|
SelectQueryBuilder,
|
|
784
804
|
Table,
|
package/dist/index.mjs
CHANGED
|
@@ -41,7 +41,7 @@ var SQLiteColumn = class _SQLiteColumn {
|
|
|
41
41
|
return new _SQLiteColumn(
|
|
42
42
|
this._.name,
|
|
43
43
|
this.type,
|
|
44
|
-
{ ...this.options, primaryKey: true },
|
|
44
|
+
{ ...this.options, primaryKey: true, notNull: true },
|
|
45
45
|
this._.mode
|
|
46
46
|
);
|
|
47
47
|
}
|
|
@@ -547,7 +547,9 @@ var TauriORM = class {
|
|
|
547
547
|
this.db = db;
|
|
548
548
|
if (schema) {
|
|
549
549
|
for (const table of Object.values(schema)) {
|
|
550
|
-
|
|
550
|
+
if (table instanceof Table) {
|
|
551
|
+
this.tables.set(table._.name, table);
|
|
552
|
+
}
|
|
551
553
|
}
|
|
552
554
|
}
|
|
553
555
|
}
|
|
@@ -692,18 +694,30 @@ var TauriORM = class {
|
|
|
692
694
|
return false;
|
|
693
695
|
}
|
|
694
696
|
};
|
|
695
|
-
var
|
|
697
|
+
var Relation = class {
|
|
698
|
+
constructor(foreignTable) {
|
|
699
|
+
this.foreignTable = foreignTable;
|
|
700
|
+
}
|
|
701
|
+
};
|
|
702
|
+
var OneRelation = class extends Relation {
|
|
703
|
+
constructor(foreignTable, config) {
|
|
704
|
+
super(foreignTable);
|
|
705
|
+
this.config = config;
|
|
706
|
+
}
|
|
707
|
+
};
|
|
708
|
+
var ManyRelation = class extends Relation {
|
|
709
|
+
constructor(foreignTable) {
|
|
710
|
+
super(foreignTable);
|
|
711
|
+
}
|
|
712
|
+
};
|
|
713
|
+
var relations = (_table, relationsCallback) => {
|
|
696
714
|
return relationsCallback({
|
|
697
|
-
one: (
|
|
698
|
-
table
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
}
|
|
703
|
-
many: (table2) => ({
|
|
704
|
-
table: table2,
|
|
705
|
-
type: "many"
|
|
706
|
-
})
|
|
715
|
+
one: (table, config) => {
|
|
716
|
+
return new OneRelation(table, config);
|
|
717
|
+
},
|
|
718
|
+
many: (table) => {
|
|
719
|
+
return new ManyRelation(table);
|
|
720
|
+
}
|
|
707
721
|
});
|
|
708
722
|
};
|
|
709
723
|
var getTableColumns = (table) => {
|
|
@@ -715,6 +729,9 @@ var alias = (table, alias2) => {
|
|
|
715
729
|
export {
|
|
716
730
|
DeleteQueryBuilder,
|
|
717
731
|
InsertQueryBuilder,
|
|
732
|
+
ManyRelation,
|
|
733
|
+
OneRelation,
|
|
734
|
+
Relation,
|
|
718
735
|
SQLiteColumn,
|
|
719
736
|
SelectQueryBuilder,
|
|
720
737
|
Table,
|