@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 CHANGED
@@ -1,9 +1,9 @@
1
1
  import Database from '@tauri-apps/plugin-sql';
2
2
 
3
- type ColumnDataType = "TEXT" | "INTEGER" | "REAL" | "BLOB" | "BOOLEAN";
4
- type Mode = "default" | "timestamp" | "timestamp_ms" | "json";
5
- type ColumnValueTypes<TType extends ColumnDataType, TMode extends Mode> = TType extends "TEXT" ? string : TType extends "INTEGER" ? TMode extends "timestamp" | "timestamp_ms" ? Date : number : TType extends "REAL" ? number : TType extends "BOOLEAN" ? boolean : TType extends "BLOB" ? Uint8Array : never;
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
- 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> {
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["_"]["columns"]]: ExtractColumnType<T["_"]["columns"][K]>;
25
+ [K in keyof T['_']['columns']]: ExtractColumnType<T['_']['columns'][K]>;
55
26
  };
56
- type IsOptionalOnInsert<C extends AnySQLiteColumn> = C["_"]["notNull"] extends false ? true : C["_"]["hasDefault"] extends true ? true : C["_"]["autoincrement"] extends true ? true : false;
57
- type OptionalColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
58
- [K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? K : never;
59
- }[keyof TColumns];
60
- type RequiredColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
61
- [K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? never : K;
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
- declare class SelectBuilder<TSelection extends SelectedFields | undefined = undefined> {
164
- private db;
165
- private selection;
166
- constructor(db: Database, selection: TSelection);
167
- from<TTable extends AnyTable>(table: TTable): SelectQueryBuilder<TTable, TSelection extends SelectedFields ? TSelection : {}, TSelection extends SelectedFields ? {
168
- [K in keyof TSelection]: any;
169
- } : InferSelectModel<TTable>>;
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: (AnySQLiteColumn | keyof T["_"]["columns"])[]): this;
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
- declare class UpdateQueryBuilder<T extends AnyTable> extends BaseQueryBuilder {
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: (AnySQLiteColumn | keyof T["_"]["columns"])[]): this;
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<TTable extends AnyTable, TSelection extends SelectedFields | undefined = undefined>(table: TTable, selection?: TSelection): SelectQueryBuilder<TTable, TSelection extends SelectedFields ? TSelection : {}, TSelection extends SelectedFields ? {
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(): Promise<void>;
233
- select(): SelectBuilder<undefined>;
234
- select<TSelection extends SelectedFields>(selection: TSelection): SelectBuilder<TSelection>;
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
- type RelationsBuilder = {
277
- one: <U extends AnyTable>(table: U, config?: {
278
- fields: AnySQLiteColumn[];
279
- references: AnySQLiteColumn[];
280
- }) => OneRelation<U>;
281
- many: <U extends AnyTable>(table: U) => ManyRelation<U>;
282
- };
283
- declare const relations: <T extends AnyTable, R extends Record<string, Relation>>(_table: T, relationsCallback: (helpers: RelationsBuilder) => R) => R;
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 SQLCondition, SQLiteColumn, SelectBuilder, SelectQueryBuilder, type SelectedFields, 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 };
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 };