@type32/tauri-sqlite-orm 0.1.18-9 → 0.1.20
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 +176 -160
- package/dist/index.d.ts +176 -160
- package/dist/index.js +516 -394
- package/dist/index.mjs +516 -395
- package/package.json +5 -4
- package/dist/cli.d.mts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -63
- package/dist/cli.mjs +0 -62
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import Database from '@tauri-apps/plugin-sql';
|
|
2
2
|
|
|
3
|
-
type ColumnDataType =
|
|
4
|
-
type Mode =
|
|
5
|
-
type ColumnValueTypes<TType extends ColumnDataType, TMode extends Mode> = TType extends
|
|
6
|
-
interface ColumnOptions<TData> {
|
|
3
|
+
type ColumnDataType = 'TEXT' | 'INTEGER' | 'REAL' | 'BLOB' | 'BOOLEAN' | 'NUMERIC';
|
|
4
|
+
type Mode = 'default' | 'timestamp' | 'timestamp_ms' | 'json' | 'boolean' | 'bigint';
|
|
5
|
+
type ColumnValueTypes<TType extends ColumnDataType, TMode extends Mode> = TType extends 'TEXT' ? TMode extends 'json' ? any : string : TType extends 'INTEGER' ? TMode extends 'timestamp' | 'timestamp_ms' ? Date : TMode extends 'boolean' ? boolean : number : TType extends 'REAL' ? number : TType extends 'BOOLEAN' ? boolean : TType extends 'BLOB' ? TMode extends 'json' ? any : TMode extends 'bigint' ? bigint : Uint8Array : TType extends 'NUMERIC' ? TMode extends 'bigint' ? bigint : number : never;
|
|
6
|
+
interface ColumnOptions<TData, TEnum extends readonly string[] = readonly string[]> {
|
|
7
7
|
notNull?: boolean;
|
|
8
8
|
default?: TData;
|
|
9
9
|
$defaultFn?: () => TData;
|
|
@@ -16,158 +16,76 @@ interface ColumnOptions<TData> {
|
|
|
16
16
|
};
|
|
17
17
|
mode?: Mode;
|
|
18
18
|
$onUpdateFn?: () => TData;
|
|
19
|
+
enum?: TEnum;
|
|
19
20
|
}
|
|
20
|
-
type ExtractColumnType<T extends AnySQLiteColumn> = T extends SQLiteColumn<infer _, infer TType, infer TMode, infer TNotNull, infer THasDefault> ? THasDefault extends true ? TNotNull extends true ? ColumnValueTypes<TType, TMode> : ColumnValueTypes<TType, TMode> | null | undefined : TNotNull extends true ? ColumnValueTypes<TType, TMode> : ColumnValueTypes<TType, TMode> | null | undefined : never;
|
|
21
|
-
|
|
22
|
-
type: TType;
|
|
23
|
-
options: ColumnOptions<ColumnValueTypes<TType, TMode>>;
|
|
24
|
-
_: {
|
|
25
|
-
name: TName;
|
|
26
|
-
dataType: TType;
|
|
27
|
-
mode: TMode;
|
|
28
|
-
notNull: TNotNull;
|
|
29
|
-
hasDefault: THasDefault;
|
|
30
|
-
autoincrement: TAutoincrement;
|
|
31
|
-
table: AnyTable;
|
|
32
|
-
};
|
|
33
|
-
constructor(name: TName, type: TType, options?: ColumnOptions<ColumnValueTypes<TType, TMode>>, mode?: TMode);
|
|
34
|
-
notNull(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
35
|
-
default(value: ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
36
|
-
$defaultFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement>;
|
|
37
|
-
primaryKey(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement>;
|
|
38
|
-
autoincrement(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, true>;
|
|
39
|
-
unique(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
40
|
-
references<T extends AnyTable, K extends keyof T["_"]["columns"] & string>(ref: T, column: K): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
41
|
-
$onUpdateFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
42
|
-
as(alias: string): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement>;
|
|
43
|
-
}
|
|
44
|
-
declare const text: <TName extends string>(name: TName) => SQLiteColumn<TName, "TEXT", "default", false, false, false>;
|
|
45
|
-
declare const integer: <TName extends string, TMode extends Mode = "default">(name: TName, config?: {
|
|
46
|
-
mode?: TMode;
|
|
47
|
-
}) => SQLiteColumn<TName, "INTEGER", "default" | TMode, false, false, false>;
|
|
48
|
-
declare const real: <TName extends string>(name: TName) => SQLiteColumn<TName, "REAL", "default", false, false, false>;
|
|
49
|
-
declare const blob: <TName extends string>(name: TName) => SQLiteColumn<TName, "BLOB", "default", false, false, false>;
|
|
50
|
-
declare const boolean: <TName extends string>(name: TName) => SQLiteColumn<TName, "BOOLEAN", "default", false, false, false>;
|
|
51
|
-
type AnySQLiteColumn = SQLiteColumn<any, any, any, any, any, any>;
|
|
21
|
+
type ExtractColumnType<T extends AnySQLiteColumn> = T['_']['customType'] extends never ? T['_']['enum'] extends readonly string[] ? T['_']['enum'][number] : T extends SQLiteColumn<infer _, infer TType, infer TMode, infer TNotNull, infer THasDefault> ? THasDefault extends true ? TNotNull extends true ? ColumnValueTypes<TType, TMode> : ColumnValueTypes<TType, TMode> | null | undefined : TNotNull extends true ? ColumnValueTypes<TType, TMode> : ColumnValueTypes<TType, TMode> | null | undefined : never : T['_']['customType'];
|
|
22
|
+
type AnySQLiteColumn = SQLiteColumn<any, any, any, any, any, any, any, any>;
|
|
52
23
|
type AnyTable = Table<Record<string, AnySQLiteColumn>, string>;
|
|
53
24
|
type InferSelectModel<T extends AnyTable> = {
|
|
54
|
-
[K in keyof T[
|
|
25
|
+
[K in keyof T['_']['columns']]: ExtractColumnType<T['_']['columns'][K]>;
|
|
55
26
|
};
|
|
56
|
-
type
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}[keyof TColumns];
|
|
63
|
-
type InferInsertModel<T extends AnyTable> = {
|
|
64
|
-
[K in RequiredColumns<T["_"]["columns"]>]: ExtractColumnType<T["_"]["columns"][K]>;
|
|
65
|
-
} & {
|
|
66
|
-
[K in OptionalColumns<T["_"]["columns"]>]?: ExtractColumnType<T["_"]["columns"][K]>;
|
|
67
|
-
};
|
|
68
|
-
declare class Table<TColumns extends Record<string, AnySQLiteColumn>, TTableName extends string> {
|
|
69
|
-
_: {
|
|
70
|
-
name: TTableName;
|
|
71
|
-
columns: TColumns;
|
|
72
|
-
};
|
|
73
|
-
constructor(name: TTableName, columns: TColumns);
|
|
27
|
+
type RelationType = 'one' | 'many';
|
|
28
|
+
interface RelationConfig {
|
|
29
|
+
type: RelationType;
|
|
30
|
+
foreignTable: AnyTable;
|
|
31
|
+
fields?: AnySQLiteColumn[];
|
|
32
|
+
references?: AnySQLiteColumn[];
|
|
74
33
|
}
|
|
75
|
-
declare const sqliteTable: <TTableName extends string, TColumns extends Record<string, AnySQLiteColumn>>(tableName: TTableName, columns: TColumns) => Table<TColumns, TTableName>;
|
|
76
|
-
declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
|
|
77
|
-
declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
|
|
78
34
|
|
|
79
|
-
type SQLCondition = {
|
|
80
|
-
sql: string;
|
|
81
|
-
params: any[];
|
|
82
|
-
};
|
|
83
|
-
declare const eq: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
84
|
-
declare const and: (...conditions: SQLCondition[]) => SQLCondition;
|
|
85
|
-
declare const or: (...conditions: SQLCondition[]) => SQLCondition;
|
|
86
|
-
declare const not: (condition: SQLCondition) => SQLCondition;
|
|
87
|
-
declare const gt: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
88
|
-
declare const gte: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
89
|
-
declare const lt: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
90
|
-
declare const lte: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
91
|
-
declare const like: (column: AnySQLiteColumn, pattern: string) => SQLCondition;
|
|
92
|
-
declare const isNull: (column: AnySQLiteColumn) => SQLCondition;
|
|
93
|
-
declare const isNotNull: (column: AnySQLiteColumn) => SQLCondition;
|
|
94
|
-
declare const inArray: <T>(column: AnySQLiteColumn, values: T[]) => SQLCondition;
|
|
95
|
-
declare const asc: (column: AnySQLiteColumn) => {
|
|
96
|
-
sql: string;
|
|
97
|
-
params: never[];
|
|
98
|
-
};
|
|
99
|
-
declare const desc: (column: AnySQLiteColumn) => {
|
|
100
|
-
sql: string;
|
|
101
|
-
params: never[];
|
|
102
|
-
};
|
|
103
|
-
declare const count: (column?: AnySQLiteColumn) => SQLCondition;
|
|
104
|
-
declare const countDistinct: (column: AnySQLiteColumn) => SQLCondition;
|
|
105
|
-
declare const sum: (column: AnySQLiteColumn) => SQLCondition;
|
|
106
|
-
declare const avg: (column: AnySQLiteColumn) => SQLCondition;
|
|
107
|
-
declare const max: (column: AnySQLiteColumn) => SQLCondition;
|
|
108
|
-
declare const min: (column: AnySQLiteColumn) => SQLCondition;
|
|
109
|
-
declare const sql: <T = unknown>(strings: TemplateStringsArray, ...values: any[]) => {
|
|
110
|
-
sql: string;
|
|
111
|
-
params: any[];
|
|
112
|
-
mapWith?: (value: any) => T;
|
|
113
|
-
};
|
|
114
35
|
declare class BaseQueryBuilder {
|
|
115
36
|
protected db: Database;
|
|
116
37
|
protected query: string;
|
|
117
38
|
protected params: any[];
|
|
118
39
|
constructor(db: Database);
|
|
119
|
-
build(): {
|
|
120
|
-
sql: string;
|
|
121
|
-
params: any[];
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
type SelectedFields = Record<string, AnySQLiteColumn | {
|
|
125
|
-
sql: string;
|
|
126
|
-
params: any[];
|
|
127
|
-
}>;
|
|
128
|
-
declare class SelectQueryBuilder<TTable extends AnyTable, TSelection extends SelectedFields, TResult = InferSelectModel<TTable>> extends BaseQueryBuilder {
|
|
129
|
-
private selection;
|
|
130
|
-
private isDistinct;
|
|
131
|
-
private groupByColumns;
|
|
132
|
-
private havingCondition;
|
|
133
|
-
private joinClauses;
|
|
134
|
-
private fromTable;
|
|
135
|
-
private orderByClauses;
|
|
136
|
-
private limitCount;
|
|
137
|
-
private offsetCount;
|
|
138
|
-
private whereCondition;
|
|
139
|
-
constructor(db: Database, table: TTable, selection: TSelection | undefined);
|
|
140
40
|
where(condition: SQLCondition): this;
|
|
141
|
-
leftJoin(table: AnyTable, on: SQLCondition): this;
|
|
142
|
-
innerJoin(table: AnyTable, on: SQLCondition): this;
|
|
143
|
-
rightJoin(table: AnyTable, on: SQLCondition): this;
|
|
144
|
-
fullJoin(table: AnyTable, on: SQLCondition): this;
|
|
145
|
-
distinct(): this;
|
|
146
|
-
groupBy(...columns: AnySQLiteColumn[]): this;
|
|
147
|
-
having(condition: SQLCondition): this;
|
|
148
41
|
orderBy(column: AnySQLiteColumn | {
|
|
149
42
|
sql: string;
|
|
150
43
|
params: any[];
|
|
151
44
|
}, direction?: "ASC" | "DESC"): this;
|
|
152
45
|
limit(count: number): this;
|
|
153
46
|
offset(count: number): this;
|
|
154
|
-
private buildSelectQuery;
|
|
155
47
|
build(): {
|
|
156
48
|
sql: string;
|
|
157
49
|
params: any[];
|
|
158
50
|
};
|
|
159
|
-
execute(): Promise<TResult[]>;
|
|
160
|
-
all(): Promise<TResult[]>;
|
|
161
|
-
get(): Promise<TResult | undefined>;
|
|
162
51
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
private
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
52
|
+
|
|
53
|
+
declare class SelectQueryBuilder<TTable extends AnyTable, TSelectedColumns extends (keyof TTable['_']['columns'])[] | undefined = undefined> extends BaseQueryBuilder {
|
|
54
|
+
private table;
|
|
55
|
+
private columns?;
|
|
56
|
+
private isDistinct;
|
|
57
|
+
private groupByColumns;
|
|
58
|
+
private havingCondition;
|
|
59
|
+
private joins;
|
|
60
|
+
private includeRelations;
|
|
61
|
+
private selectedTableAlias;
|
|
62
|
+
private selectedColumns;
|
|
63
|
+
constructor(db: Database, table: TTable, columns?: TSelectedColumns | undefined);
|
|
64
|
+
distinct(): this;
|
|
65
|
+
groupBy(...columns: AnySQLiteColumn[]): this;
|
|
66
|
+
having(condition: SQLCondition): this;
|
|
67
|
+
leftJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
|
|
68
|
+
innerJoin<T extends AnyTable>(table: T, condition: SQLCondition, alias: string): this;
|
|
69
|
+
include(relations: Partial<Record<keyof TTable['relations'], boolean>>): this;
|
|
70
|
+
private buildJoins;
|
|
71
|
+
execute(): Promise<any[]>;
|
|
72
|
+
private processRelationResults;
|
|
73
|
+
all(): Promise<any[]>;
|
|
74
|
+
get(): Promise<any | undefined>;
|
|
170
75
|
}
|
|
76
|
+
|
|
77
|
+
declare class UpdateQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
78
|
+
private table;
|
|
79
|
+
private updateData;
|
|
80
|
+
private returningColumns;
|
|
81
|
+
constructor(db: Database, table: T);
|
|
82
|
+
set(data: Partial<InferInsertModel<T>>): this;
|
|
83
|
+
returning(...columns: (keyof T["_"]["columns"])[]): this;
|
|
84
|
+
private buildUpdateClause;
|
|
85
|
+
execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
|
|
86
|
+
returningAll(): Promise<InferSelectModel<T>[]>;
|
|
87
|
+
}
|
|
88
|
+
|
|
171
89
|
declare class InsertQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
172
90
|
private table;
|
|
173
91
|
private dataSets;
|
|
@@ -177,7 +95,7 @@ declare class InsertQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
|
177
95
|
private updateSet;
|
|
178
96
|
constructor(db: Database, table: T);
|
|
179
97
|
values(data: InferInsertModel<T> | InferInsertModel<T>[]): this;
|
|
180
|
-
returning(...columns: (
|
|
98
|
+
returning(...columns: (keyof T["_"]["columns"])[]): this;
|
|
181
99
|
onConflictDoNothing(target?: AnySQLiteColumn | AnySQLiteColumn[]): this;
|
|
182
100
|
onConflictDoUpdate(config: {
|
|
183
101
|
target: AnySQLiteColumn | AnySQLiteColumn[];
|
|
@@ -188,25 +106,16 @@ declare class InsertQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
|
188
106
|
execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
|
|
189
107
|
returningAll(): Promise<InferSelectModel<T>[]>;
|
|
190
108
|
}
|
|
191
|
-
|
|
192
|
-
private table;
|
|
193
|
-
private updateData;
|
|
194
|
-
private returningColumns;
|
|
195
|
-
constructor(db: Database, table: T);
|
|
196
|
-
set(data: Partial<InferInsertModel<T>>): this;
|
|
197
|
-
returning(...columns: (AnySQLiteColumn | keyof T["_"]["columns"])[]): this;
|
|
198
|
-
private buildUpdateClause;
|
|
199
|
-
execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
|
|
200
|
-
returningAll(): Promise<InferSelectModel<T>[]>;
|
|
201
|
-
}
|
|
109
|
+
|
|
202
110
|
declare class DeleteQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
|
|
203
111
|
private table;
|
|
204
112
|
private returningColumns;
|
|
205
113
|
constructor(db: Database, table: T);
|
|
206
|
-
returning(...columns: (
|
|
114
|
+
returning(...columns: (keyof T['_']['columns'])[]): this;
|
|
207
115
|
execute(): Promise<T extends AnyTable ? (InferSelectModel<T> & Record<string, any>)[] : never>;
|
|
208
116
|
returningAll(): Promise<InferSelectModel<T>[]>;
|
|
209
117
|
}
|
|
118
|
+
|
|
210
119
|
declare class WithQueryBuilder {
|
|
211
120
|
private db;
|
|
212
121
|
private ctes;
|
|
@@ -215,23 +124,93 @@ declare class WithQueryBuilder {
|
|
|
215
124
|
sql: string;
|
|
216
125
|
params: any[];
|
|
217
126
|
}): this;
|
|
218
|
-
select<
|
|
219
|
-
[K in keyof TSelection]: any;
|
|
220
|
-
} : InferSelectModel<TTable>>;
|
|
127
|
+
select<T extends AnyTable, C extends (keyof T["_"]["columns"])[] | undefined = undefined>(table: T, columns?: C): SelectQueryBuilder<T, C>;
|
|
221
128
|
insert<T extends AnyTable>(table: T): InsertQueryBuilder<T>;
|
|
222
129
|
update<T extends AnyTable>(table: T): UpdateQueryBuilder<T>;
|
|
223
130
|
delete<T extends AnyTable>(table: T): DeleteQueryBuilder<T>;
|
|
224
131
|
private applyWithClause;
|
|
225
132
|
}
|
|
226
133
|
|
|
134
|
+
type RelationsBuilder = {
|
|
135
|
+
one: <U extends AnyTable>(table: U, config?: {
|
|
136
|
+
fields: AnySQLiteColumn[];
|
|
137
|
+
references: AnySQLiteColumn[];
|
|
138
|
+
}) => OneRelation<U>;
|
|
139
|
+
many: <U extends AnyTable>(table: U) => ManyRelation<U>;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
declare class SQLiteColumn<TName extends string = string, TType extends ColumnDataType = ColumnDataType, TMode extends Mode = 'default', TNotNull extends boolean = false, THasDefault extends boolean = false, TAutoincrement extends boolean = false, TEnum extends readonly string[] = never, TCustomType = never> {
|
|
143
|
+
type: TType;
|
|
144
|
+
options: ColumnOptions<ColumnValueTypes<TType, TMode>, TEnum>;
|
|
145
|
+
_: {
|
|
146
|
+
name: TName;
|
|
147
|
+
dataType: TType;
|
|
148
|
+
mode: TMode;
|
|
149
|
+
notNull: TNotNull;
|
|
150
|
+
hasDefault: THasDefault;
|
|
151
|
+
autoincrement: TAutoincrement;
|
|
152
|
+
enum: TEnum;
|
|
153
|
+
customType: TCustomType;
|
|
154
|
+
};
|
|
155
|
+
constructor(name: TName, type: TType, options?: ColumnOptions<ColumnValueTypes<TType, TMode>, TEnum>, mode?: TMode);
|
|
156
|
+
notNull(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
157
|
+
default(value: ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement, TEnum, TCustomType>;
|
|
158
|
+
$defaultFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement, TEnum, TCustomType>;
|
|
159
|
+
primaryKey(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
160
|
+
autoincrement(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, true, TEnum, TCustomType>;
|
|
161
|
+
unique(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
162
|
+
references<T extends AnyTable, K extends keyof T['_']['columns'] & string>(ref: T, column: K): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
163
|
+
$onUpdateFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
164
|
+
$type<T>(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, T>;
|
|
165
|
+
as(alias: string): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
|
|
166
|
+
}
|
|
167
|
+
type IsOptionalOnInsert<C extends AnySQLiteColumn> = C['_']['notNull'] extends false ? true : C['_']['hasDefault'] extends true ? true : C['_']['autoincrement'] extends true ? true : false;
|
|
168
|
+
type OptionalColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
169
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? K : never;
|
|
170
|
+
}[keyof TColumns];
|
|
171
|
+
type RequiredColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
|
|
172
|
+
[K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? never : K;
|
|
173
|
+
}[keyof TColumns];
|
|
174
|
+
type InferInsertModel<T extends AnyTable> = {
|
|
175
|
+
[K in RequiredColumns<T['_']['columns']>]: ExtractColumnType<T['_']['columns'][K]>;
|
|
176
|
+
} & {
|
|
177
|
+
[K in OptionalColumns<T['_']['columns']>]?: ExtractColumnType<T['_']['columns'][K]>;
|
|
178
|
+
};
|
|
179
|
+
declare class Table<TColumns extends Record<string, AnySQLiteColumn>, TTableName extends string> {
|
|
180
|
+
_: {
|
|
181
|
+
name: TTableName;
|
|
182
|
+
columns: TColumns;
|
|
183
|
+
};
|
|
184
|
+
relations: Record<string, RelationConfig>;
|
|
185
|
+
constructor(name: TTableName, columns: TColumns);
|
|
186
|
+
}
|
|
187
|
+
declare const sqliteTable: <TTableName extends string, TColumns extends Record<string, AnySQLiteColumn>>(tableName: TTableName, columns: TColumns) => Table<TColumns, TTableName>;
|
|
188
|
+
type SQLCondition = {
|
|
189
|
+
sql: string;
|
|
190
|
+
params: any[];
|
|
191
|
+
};
|
|
192
|
+
declare const asc: (column: AnySQLiteColumn) => {
|
|
193
|
+
sql: string;
|
|
194
|
+
params: never[];
|
|
195
|
+
};
|
|
196
|
+
declare const desc: (column: AnySQLiteColumn) => {
|
|
197
|
+
sql: string;
|
|
198
|
+
params: never[];
|
|
199
|
+
};
|
|
200
|
+
declare const sql: <T = unknown>(strings: TemplateStringsArray, ...values: any[]) => {
|
|
201
|
+
sql: string;
|
|
202
|
+
params: any[];
|
|
203
|
+
mapWith?: (value: any) => T;
|
|
204
|
+
};
|
|
227
205
|
declare class TauriORM {
|
|
228
206
|
private db;
|
|
229
207
|
private tables;
|
|
230
208
|
constructor(db: Database, schema?: Record<string, AnyTable | Record<string, Relation>> | undefined);
|
|
231
209
|
private buildColumnDefinition;
|
|
232
|
-
migrate(
|
|
233
|
-
|
|
234
|
-
|
|
210
|
+
migrate(options?: {
|
|
211
|
+
performDestructiveActions?: boolean;
|
|
212
|
+
}): Promise<void>;
|
|
213
|
+
select<T extends AnyTable, C extends (keyof T['_']['columns'])[] | undefined = undefined>(table: T, columns?: C): SelectQueryBuilder<T, C>;
|
|
235
214
|
insert<T extends AnyTable>(table: T): InsertQueryBuilder<T>;
|
|
236
215
|
update<T extends AnyTable>(table: T): UpdateQueryBuilder<T>;
|
|
237
216
|
delete<T extends AnyTable>(table: T): DeleteQueryBuilder<T>;
|
|
@@ -255,6 +234,12 @@ declare class TauriORM {
|
|
|
255
234
|
stored: string | null;
|
|
256
235
|
}>;
|
|
257
236
|
migrateIfDirty(): Promise<boolean>;
|
|
237
|
+
doesTableExist(tableName: string): Promise<boolean>;
|
|
238
|
+
dropTable(tableName: string): Promise<void>;
|
|
239
|
+
doesColumnExist(tableName: string, columnName: string): Promise<boolean>;
|
|
240
|
+
renameTable(from: string, to: string): Promise<void>;
|
|
241
|
+
dropColumn(tableName: string, columnName: string): Promise<void>;
|
|
242
|
+
renameColumn(tableName: string, from: string, to: string): Promise<void>;
|
|
258
243
|
}
|
|
259
244
|
declare class Relation<T extends AnyTable = AnyTable> {
|
|
260
245
|
foreignTable: T;
|
|
@@ -273,13 +258,44 @@ declare class OneRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
|
273
258
|
declare class ManyRelation<T extends AnyTable = AnyTable> extends Relation<T> {
|
|
274
259
|
constructor(foreignTable: T);
|
|
275
260
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
declare const
|
|
261
|
+
declare const relations: <T extends AnyTable, R extends Record<string, Relation>>(table: T, relationsCallback: (helpers: RelationsBuilder) => R) => R;
|
|
262
|
+
declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
|
|
263
|
+
declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
|
|
264
|
+
|
|
265
|
+
declare const eq: <T>(column: AnySQLiteColumn, value: T, tableAlias?: string) => SQLCondition;
|
|
266
|
+
declare const and: (...conditions: SQLCondition[]) => SQLCondition;
|
|
267
|
+
declare const or: (...conditions: SQLCondition[]) => SQLCondition;
|
|
268
|
+
declare const not: (condition: SQLCondition) => SQLCondition;
|
|
269
|
+
declare const gt: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
270
|
+
declare const gte: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
271
|
+
declare const lt: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
272
|
+
declare const lte: <T>(column: AnySQLiteColumn, value: T) => SQLCondition;
|
|
273
|
+
declare const like: (column: AnySQLiteColumn, pattern: string) => SQLCondition;
|
|
274
|
+
declare const isNull: (column: AnySQLiteColumn) => SQLCondition;
|
|
275
|
+
declare const isNotNull: (column: AnySQLiteColumn) => SQLCondition;
|
|
276
|
+
declare const inArray: <T>(column: AnySQLiteColumn, values: T[]) => SQLCondition;
|
|
277
|
+
declare const count: (column?: AnySQLiteColumn) => SQLCondition;
|
|
278
|
+
declare const countDistinct: (column: AnySQLiteColumn) => SQLCondition;
|
|
279
|
+
declare const sum: (column: AnySQLiteColumn) => SQLCondition;
|
|
280
|
+
declare const avg: (column: AnySQLiteColumn) => SQLCondition;
|
|
281
|
+
declare const max: (column: AnySQLiteColumn) => SQLCondition;
|
|
282
|
+
declare const min: (column: AnySQLiteColumn) => SQLCondition;
|
|
283
|
+
|
|
284
|
+
declare const text: <TName extends string, TEnum extends readonly string[]>(name: TName, config?: {
|
|
285
|
+
mode?: "json";
|
|
286
|
+
enum?: TEnum;
|
|
287
|
+
}) => SQLiteColumn<TName, "TEXT", "json", false, false, false, TEnum, never>;
|
|
288
|
+
declare const integer: <TName extends string, TMode extends Mode = "default">(name: TName, config?: {
|
|
289
|
+
mode?: TMode;
|
|
290
|
+
}) => SQLiteColumn<TName, "INTEGER", "default" | TMode, false, false, false, never, never>;
|
|
291
|
+
declare const real: <TName extends string>(name: TName) => SQLiteColumn<TName, "REAL", "default", false, false, false, never, never>;
|
|
292
|
+
declare const blob: <TName extends string>(name: TName, config?: {
|
|
293
|
+
mode: "json" | "bigint";
|
|
294
|
+
}) => SQLiteColumn<TName, "BLOB", "bigint" | "json", false, false, false, never, never>;
|
|
295
|
+
declare const boolean: <TName extends string>(name: TName) => SQLiteColumn<TName, "BOOLEAN", "default", false, false, false, never, never>;
|
|
296
|
+
declare const numeric: <TName extends string>(name: TName, config?: {
|
|
297
|
+
mode?: "bigint";
|
|
298
|
+
}) => SQLiteColumn<TName, "NUMERIC", "bigint", false, false, false, never, never>;
|
|
299
|
+
declare const enumType: <TName extends string, TValues extends readonly [string, ...string[]]>(name: TName, values: TValues) => SQLiteColumn<TName, "TEXT", "json", false, false, false, TValues, never>;
|
|
284
300
|
|
|
285
|
-
export { type AnySQLiteColumn, type AnyTable, BaseQueryBuilder, type ColumnDataType, type ColumnOptions, DeleteQueryBuilder, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, ManyRelation, type Mode, OneRelation, Relation, type
|
|
301
|
+
export { type AnySQLiteColumn, type AnyTable, BaseQueryBuilder, type ColumnDataType, type ColumnOptions, type ColumnValueTypes, DeleteQueryBuilder, type ExtractColumnType, type InferInsertModel, type InferSelectModel, InsertQueryBuilder, ManyRelation, type Mode, OneRelation, Relation, type RelationConfig, type RelationType, type RelationsBuilder, type SQLCondition, SQLiteColumn, SelectQueryBuilder, Table, TauriORM, UpdateQueryBuilder, WithQueryBuilder, alias, and, asc, avg, blob, boolean, count, countDistinct, desc, enumType, eq, getTableColumns, gt, gte, inArray, integer, isNotNull, isNull, like, lt, lte, max, min, not, numeric, or, real, relations, sql, sqliteTable, sum, text };
|