@type32/tauri-sqlite-orm 0.2.15 → 0.4.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.
Files changed (43) hide show
  1. package/dist/aggregates.d.ts +12 -0
  2. package/dist/aggregates.js +9 -0
  3. package/dist/builders/delete.d.ts +23 -0
  4. package/dist/builders/delete.js +73 -0
  5. package/dist/builders/index.d.ts +7 -0
  6. package/dist/builders/index.js +7 -0
  7. package/dist/builders/insert.d.ts +31 -0
  8. package/dist/builders/insert.js +141 -0
  9. package/dist/builders/query-base.d.ts +1 -0
  10. package/dist/builders/query-base.js +1 -0
  11. package/dist/builders/relations.d.ts +11 -0
  12. package/dist/builders/relations.js +1 -0
  13. package/dist/builders/select.d.ts +54 -0
  14. package/dist/builders/select.js +427 -0
  15. package/dist/builders/update.d.ts +30 -0
  16. package/dist/builders/update.js +124 -0
  17. package/dist/builders/with.d.ts +17 -0
  18. package/dist/builders/with.js +34 -0
  19. package/dist/column-helpers.d.ts +22 -0
  20. package/dist/column-helpers.js +17 -0
  21. package/dist/dialect.d.ts +21 -0
  22. package/dist/dialect.js +67 -0
  23. package/dist/errors.d.ts +30 -0
  24. package/dist/errors.js +66 -0
  25. package/dist/index.d.mts +150 -4
  26. package/dist/index.d.ts +150 -4
  27. package/dist/index.js +270 -108
  28. package/dist/index.mjs +263 -104
  29. package/dist/operators.d.ts +30 -0
  30. package/dist/operators.js +84 -0
  31. package/dist/orm.d.ts +180 -0
  32. package/dist/orm.js +556 -0
  33. package/dist/relational-types.d.ts +87 -0
  34. package/dist/relational-types.js +1 -0
  35. package/dist/relations-v2.d.ts +77 -0
  36. package/dist/relations-v2.js +157 -0
  37. package/dist/serialization.d.ts +14 -0
  38. package/dist/serialization.js +135 -0
  39. package/dist/subquery.d.ts +5 -0
  40. package/dist/subquery.js +6 -0
  41. package/dist/types.d.ts +58 -0
  42. package/dist/types.js +1 -0
  43. package/package.json +2 -1
package/dist/orm.d.ts ADDED
@@ -0,0 +1,180 @@
1
+ import { Expression, SqlBool } from 'kysely';
2
+ import { DatabaseLike } from './dialect';
3
+ import { SelectQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, DeleteQueryBuilder, WithQueryBuilder, RelationsBuilder } from './builders';
4
+ import { AnySQLiteColumn, AnyTable, ColumnDataType, ColumnOptions, ColumnValueTypes, Mode, RelationConfig } from './types';
5
+ export 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> {
6
+ type: TType;
7
+ options: ColumnOptions<ColumnValueTypes<TType, TMode>, TEnum>;
8
+ _: {
9
+ name: TName;
10
+ dataType: TType;
11
+ mode: TMode;
12
+ notNull: TNotNull;
13
+ hasDefault: THasDefault;
14
+ autoincrement: TAutoincrement;
15
+ enum: TEnum;
16
+ customType: TCustomType;
17
+ };
18
+ constructor(name: TName, type: TType, options?: ColumnOptions<ColumnValueTypes<TType, TMode>, TEnum>);
19
+ notNull(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement, TEnum, TCustomType>;
20
+ default(value: ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement, TEnum, TCustomType>;
21
+ $defaultFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, true, TAutoincrement, TEnum, TCustomType>;
22
+ primaryKey(): SQLiteColumn<TName, TType, TMode, true, THasDefault, TAutoincrement, TEnum, TCustomType>;
23
+ autoincrement(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, true, TEnum, TCustomType>;
24
+ unique(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
25
+ references<T extends AnyTable, K extends keyof T['_']['columns'] & string>(ref: T, column: K | T['_']['columns'][K], options?: {
26
+ onDelete?: 'cascade' | 'set null' | 'set default' | 'restrict' | 'no action';
27
+ onUpdate?: 'cascade' | 'set null' | 'set default' | 'restrict' | 'no action';
28
+ }): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
29
+ $onUpdateFn(fn: () => ColumnValueTypes<TType, TMode>): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
30
+ $type<T>(): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, T>;
31
+ as(alias: string): SQLiteColumn<TName, TType, TMode, TNotNull, THasDefault, TAutoincrement, TEnum, TCustomType>;
32
+ }
33
+ type IsOptionalOnInsert<C extends AnySQLiteColumn> = C['_']['notNull'] extends false ? true : C['_']['hasDefault'] extends true ? true : C['_']['autoincrement'] extends true ? true : false;
34
+ type OptionalColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
35
+ [K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? K : never;
36
+ }[keyof TColumns];
37
+ type RequiredColumns<TColumns extends Record<string, AnySQLiteColumn>> = {
38
+ [K in keyof TColumns]: IsOptionalOnInsert<TColumns[K]> extends true ? never : K;
39
+ }[keyof TColumns];
40
+ type ExtractInsertColumnType<T extends AnySQLiteColumn> = T extends SQLiteColumn<infer _, infer TType, infer TMode, infer TNotNull, infer THasDefault, infer TAutoincrement, infer TEnum, infer TCustomType> ? [
41
+ TCustomType
42
+ ] extends [never] ? [
43
+ TEnum
44
+ ] extends [never] ? TNotNull extends true ? ColumnValueTypes<TType, TMode> : ColumnValueTypes<TType, TMode> | null : TNotNull extends true ? TEnum[number] : TEnum[number] | null : TNotNull extends true ? TCustomType : TCustomType | null : never;
45
+ export type InferInsertModel<T extends AnyTable> = {
46
+ [K in RequiredColumns<T['_']['columns']>]: ExtractInsertColumnType<T['_']['columns'][K]>;
47
+ } & {
48
+ [K in OptionalColumns<T['_']['columns']>]?: ExtractInsertColumnType<T['_']['columns'][K]>;
49
+ };
50
+ export declare class Table<TColumns extends Record<string, AnySQLiteColumn>, TTableName extends string> {
51
+ _: {
52
+ name: TTableName;
53
+ columns: TColumns;
54
+ };
55
+ relations: Record<string, RelationConfig>;
56
+ constructor(name: TTableName, columns: TColumns);
57
+ }
58
+ export declare const sqliteTable: <TTableName extends string, TColumns extends Record<string, AnySQLiteColumn>>(tableName: TTableName, columns: TColumns) => Table<TColumns, TTableName>;
59
+ export type SQLCondition = Expression<SqlBool>;
60
+ export type SQLAggregate<T = number> = Expression<T>;
61
+ export type SQLSubquery = Expression<any>;
62
+ export declare const asc: (column: AnySQLiteColumn) => Expression<any>;
63
+ export declare const desc: (column: AnySQLiteColumn) => Expression<any>;
64
+ export declare class TauriORM {
65
+ private db;
66
+ private tables;
67
+ private kysely;
68
+ constructor(db: DatabaseLike, schema?: Record<string, AnyTable | Record<string, Relation>> | undefined);
69
+ private buildColumnDefinition;
70
+ checkMigration(): Promise<{
71
+ safe: boolean;
72
+ changes: {
73
+ tablesToCreate: string[];
74
+ tablesToRecreate: string[];
75
+ tablesToDrop: string[];
76
+ columnsToAdd: Array<{
77
+ table: string;
78
+ column: string;
79
+ }>;
80
+ };
81
+ }>;
82
+ migrate(options?: {
83
+ performDestructiveActions?: boolean;
84
+ dryRun?: boolean;
85
+ }): Promise<void>;
86
+ private canAddColumnWithAlter;
87
+ private hasColumnDefinitionChanged;
88
+ private recreateTable;
89
+ select<T extends AnyTable, C extends (keyof T['_']['columns'])[] | undefined = undefined>(table: T, columns?: C): SelectQueryBuilder<T, C>;
90
+ insert<T extends AnyTable>(table: T): InsertQueryBuilder<T>;
91
+ update<T extends AnyTable>(table: T): UpdateQueryBuilder<T>;
92
+ delete<T extends AnyTable>(table: T): DeleteQueryBuilder<T>;
93
+ upsert<T extends AnyTable>(table: T, data: InferInsertModel<T>, conflictTarget: (keyof T['_']['columns'])[]): Promise<T extends AnyTable ? {
94
+ lastInsertId: number;
95
+ rowsAffected: number;
96
+ }[] : never>;
97
+ $with(alias: string): {
98
+ as: (query: SelectQueryBuilder<any, any>) => WithQueryBuilder;
99
+ };
100
+ transaction<T>(callback: (tx: TauriORM) => Promise<T>): Promise<T>;
101
+ rollback(): never;
102
+ private ensureSchemaMeta;
103
+ private getSchemaMeta;
104
+ private setSchemaMeta;
105
+ private normalizeColumn;
106
+ private computeModelSignature;
107
+ getSchemaSignature(): string;
108
+ isSchemaDirty(): Promise<{
109
+ dirty: boolean;
110
+ current: string;
111
+ stored: string | null;
112
+ }>;
113
+ migrateIfDirty(): Promise<boolean>;
114
+ doesTableExist(tableName: string): Promise<boolean>;
115
+ dropTable(tableName: string): Promise<void>;
116
+ doesColumnExist(tableName: string, columnName: string): Promise<boolean>;
117
+ renameTable(from: string, to: string): Promise<void>;
118
+ dropColumn(tableName: string, columnName: string): Promise<void>;
119
+ renameColumn(tableName: string, from: string, to: string): Promise<void>;
120
+ }
121
+ export declare class Relation<T extends AnyTable = AnyTable> {
122
+ foreignTable: T;
123
+ constructor(foreignTable: T);
124
+ }
125
+ export declare class OneRelation<T extends AnyTable = AnyTable> extends Relation<T> {
126
+ config?: {
127
+ fields: AnySQLiteColumn[];
128
+ references: AnySQLiteColumn[];
129
+ optional?: boolean;
130
+ alias?: string;
131
+ } | undefined;
132
+ constructor(foreignTable: T, config?: {
133
+ fields: AnySQLiteColumn[];
134
+ references: AnySQLiteColumn[];
135
+ optional?: boolean;
136
+ alias?: string;
137
+ } | undefined);
138
+ }
139
+ export declare class ManyRelation<T extends AnyTable = AnyTable> extends Relation<T> {
140
+ config?: {
141
+ from?: AnySQLiteColumn[];
142
+ to?: AnySQLiteColumn[];
143
+ through?: {
144
+ junctionTable: AnyTable;
145
+ fromRef: {
146
+ column: AnySQLiteColumn;
147
+ junctionColumn: AnySQLiteColumn;
148
+ };
149
+ toRef: {
150
+ column: AnySQLiteColumn;
151
+ junctionColumn: AnySQLiteColumn;
152
+ };
153
+ };
154
+ optional?: boolean;
155
+ alias?: string;
156
+ where?: (alias: string) => unknown;
157
+ } | undefined;
158
+ constructor(foreignTable: T, config?: {
159
+ from?: AnySQLiteColumn[];
160
+ to?: AnySQLiteColumn[];
161
+ through?: {
162
+ junctionTable: AnyTable;
163
+ fromRef: {
164
+ column: AnySQLiteColumn;
165
+ junctionColumn: AnySQLiteColumn;
166
+ };
167
+ toRef: {
168
+ column: AnySQLiteColumn;
169
+ junctionColumn: AnySQLiteColumn;
170
+ };
171
+ };
172
+ optional?: boolean;
173
+ alias?: string;
174
+ where?: (alias: string) => unknown;
175
+ } | undefined);
176
+ }
177
+ export declare const relations: <T extends AnyTable, R extends Record<string, Relation>>(table: T, relationsCallback: (helpers: RelationsBuilder) => R) => R;
178
+ export declare const getTableColumns: <T extends AnyTable>(table: T) => Record<string, AnySQLiteColumn>;
179
+ export declare const alias: <T extends AnyTable>(table: T, alias: string) => Table<T["_"]["columns"], T["_"]["name"]>;
180
+ export {};