@livestore/common 0.0.47 → 0.0.48-dev.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/.tsbuildinfo +1 -1
- package/dist/__tests__/fixture.d.ts +68 -0
- package/dist/__tests__/fixture.d.ts.map +1 -0
- package/dist/__tests__/fixture.js +16 -0
- package/dist/__tests__/fixture.js.map +1 -0
- package/dist/adapter-types.d.ts +86 -0
- package/dist/adapter-types.d.ts.map +1 -0
- package/dist/adapter-types.js +2 -0
- package/dist/adapter-types.js.map +1 -0
- package/dist/derived-mutations.d.ts +107 -0
- package/dist/derived-mutations.d.ts.map +1 -0
- package/dist/derived-mutations.js +51 -0
- package/dist/derived-mutations.js.map +1 -0
- package/dist/derived-mutations.test.d.ts +2 -0
- package/dist/derived-mutations.test.d.ts.map +1 -0
- package/dist/derived-mutations.test.js +92 -0
- package/dist/derived-mutations.test.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/init-singleton-tables.d.ts +2 -2
- package/dist/init-singleton-tables.d.ts.map +1 -1
- package/dist/init-singleton-tables.js.map +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/query-info.d.ts +47 -0
- package/dist/query-info.d.ts.map +1 -0
- package/dist/query-info.js +38 -0
- package/dist/query-info.js.map +1 -0
- package/dist/rehydrate-from-mutationlog.d.ts +6 -5
- package/dist/rehydrate-from-mutationlog.d.ts.map +1 -1
- package/dist/rehydrate-from-mutationlog.js +24 -7
- package/dist/rehydrate-from-mutationlog.js.map +1 -1
- package/dist/schema/index.d.ts +33 -23
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +31 -15
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/mutations.d.ts +16 -0
- package/dist/schema/mutations.d.ts.map +1 -1
- package/dist/schema/mutations.js +18 -8
- package/dist/schema/mutations.js.map +1 -1
- package/dist/schema/parse-utils.d.ts +14 -4
- package/dist/schema/parse-utils.d.ts.map +1 -1
- package/dist/schema/parse-utils.js +3 -3
- package/dist/schema/parse-utils.js.map +1 -1
- package/dist/schema/system-tables.d.ts +239 -67
- package/dist/schema/system-tables.d.ts.map +1 -1
- package/dist/schema/system-tables.js +24 -3
- package/dist/schema/system-tables.js.map +1 -1
- package/dist/schema/table-def.d.ts +53 -10
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +27 -12
- package/dist/schema/table-def.js.map +1 -1
- package/dist/schema-management/common.d.ts +5 -0
- package/dist/schema-management/common.d.ts.map +1 -0
- package/dist/schema-management/common.js +22 -0
- package/dist/schema-management/common.js.map +1 -0
- package/dist/schema-management/migrations.d.ts +18 -0
- package/dist/schema-management/migrations.d.ts.map +1 -0
- package/dist/{migrations.js → schema-management/migrations.js} +29 -36
- package/dist/schema-management/migrations.js.map +1 -0
- package/dist/schema-management/validate-mutation-defs.d.ts +16 -0
- package/dist/schema-management/validate-mutation-defs.d.ts.map +1 -0
- package/dist/schema-management/validate-mutation-defs.js +63 -0
- package/dist/schema-management/validate-mutation-defs.js.map +1 -0
- package/dist/sql-queries/sql-queries.d.ts +4 -4
- package/dist/sql-queries/sql-queries.d.ts.map +1 -1
- package/dist/sql-queries/sql-queries.js +7 -8
- package/dist/sql-queries/sql-queries.js.map +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts +1 -1
- package/dist/sql-queries/sql-query-builder.d.ts.map +1 -1
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync.d.ts +25 -0
- package/dist/sync/sync.d.ts.map +1 -0
- package/dist/sync/sync.js +8 -0
- package/dist/sync/sync.js.map +1 -0
- package/package.json +6 -6
- package/src/__tests__/fixture.ts +23 -0
- package/src/adapter-types.ts +104 -0
- package/src/ambient.d.ts +3 -0
- package/src/derived-mutations.test.ts +100 -0
- package/src/derived-mutations.ts +126 -0
- package/src/index.ts +6 -2
- package/src/init-singleton-tables.ts +2 -2
- package/src/query-info.ts +104 -0
- package/src/rehydrate-from-mutationlog.ts +34 -20
- package/src/schema/index.ts +67 -39
- package/src/schema/mutations.ts +28 -9
- package/src/schema/parse-utils.ts +3 -3
- package/src/schema/system-tables.ts +44 -3
- package/src/schema/table-def.ts +64 -18
- package/src/schema-management/common.ts +29 -0
- package/src/{migrations.ts → schema-management/migrations.ts} +44 -57
- package/src/schema-management/validate-mutation-defs.ts +108 -0
- package/src/sql-queries/sql-queries.ts +8 -9
- package/src/sync/index.ts +1 -0
- package/src/sync/sync.ts +14 -0
- package/dist/database.d.ts +0 -50
- package/dist/database.d.ts.map +0 -1
- package/dist/database.js +0 -2
- package/dist/database.js.map +0 -1
- package/dist/migrations.d.ts +0 -16
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js.map +0 -1
- package/src/database.ts +0 -60
|
@@ -1,76 +1,248 @@
|
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
|
1
2
|
import { SqliteDsl } from 'effect-db-schema';
|
|
2
3
|
import type { FromTable } from './table-def.js';
|
|
3
4
|
export declare const SCHEMA_META_TABLE = "__livestore_schema";
|
|
4
|
-
declare const schemaMetaTable:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
export declare const schemaMetaTable: {
|
|
6
|
+
sqliteDef: SqliteDsl.TableDefinition<"__livestore_schema", {
|
|
7
|
+
tableName: {
|
|
8
|
+
columnType: "text";
|
|
9
|
+
schema: Schema.Schema<string, string, never>;
|
|
10
|
+
default: import("effect/Option").None<never>;
|
|
11
|
+
nullable: false;
|
|
12
|
+
primaryKey: true;
|
|
13
|
+
};
|
|
14
|
+
schemaHash: {
|
|
15
|
+
columnType: "integer";
|
|
16
|
+
schema: Schema.Schema<number, number, never>;
|
|
17
|
+
default: import("effect/Option").None<never>;
|
|
18
|
+
nullable: false;
|
|
19
|
+
primaryKey: false;
|
|
20
|
+
};
|
|
21
|
+
updatedAt: {
|
|
22
|
+
columnType: "text";
|
|
23
|
+
schema: Schema.Schema<string, string, never>;
|
|
24
|
+
default: import("effect/Option").None<never>;
|
|
25
|
+
nullable: false;
|
|
26
|
+
primaryKey: false;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
isSingleColumn: false;
|
|
30
|
+
options: {
|
|
31
|
+
isSingleton: false;
|
|
32
|
+
dynamicRegistration: false;
|
|
33
|
+
disableAutomaticIdColumn: true;
|
|
34
|
+
deriveMutations: false;
|
|
35
|
+
isSingleColumn: false;
|
|
11
36
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
default: import("effect/Option").None<never>;
|
|
23
|
-
nullable: false;
|
|
24
|
-
primaryKey: false;
|
|
25
|
-
};
|
|
26
|
-
}>, false, {
|
|
27
|
-
isSingleton: false;
|
|
28
|
-
dynamicRegistration: false;
|
|
29
|
-
disableAutomaticIdColumn: true;
|
|
30
|
-
}, import("@effect/schema/Schema").Schema<{
|
|
31
|
-
readonly tableName: string;
|
|
32
|
-
readonly schemaHash: number;
|
|
33
|
-
readonly updatedAt: string;
|
|
34
|
-
}, {
|
|
35
|
-
readonly tableName: string;
|
|
36
|
-
readonly schemaHash: number;
|
|
37
|
-
readonly updatedAt: string;
|
|
38
|
-
}, never>>;
|
|
37
|
+
schema: Schema.Schema<{
|
|
38
|
+
readonly tableName: string;
|
|
39
|
+
readonly schemaHash: number;
|
|
40
|
+
readonly updatedAt: string;
|
|
41
|
+
}, {
|
|
42
|
+
readonly tableName: string;
|
|
43
|
+
readonly schemaHash: number;
|
|
44
|
+
readonly updatedAt: string;
|
|
45
|
+
}, never>;
|
|
46
|
+
};
|
|
39
47
|
export type SchemaMetaRow = FromTable.RowDecoded<typeof schemaMetaTable>;
|
|
40
|
-
export declare const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
export declare const SCHEMA_MUTATIONS_META_TABLE = "__livestore_schema_mutations";
|
|
49
|
+
export declare const schemaMutationsMetaTable: {
|
|
50
|
+
sqliteDef: SqliteDsl.TableDefinition<"__livestore_schema_mutations", {
|
|
51
|
+
mutationName: {
|
|
52
|
+
columnType: "text";
|
|
53
|
+
schema: Schema.Schema<string, string, never>;
|
|
54
|
+
default: import("effect/Option").None<never>;
|
|
55
|
+
nullable: false;
|
|
56
|
+
primaryKey: true;
|
|
57
|
+
};
|
|
58
|
+
schemaHash: {
|
|
59
|
+
columnType: "integer";
|
|
60
|
+
schema: Schema.Schema<number, number, never>;
|
|
61
|
+
default: import("effect/Option").None<never>;
|
|
62
|
+
nullable: false;
|
|
63
|
+
primaryKey: false;
|
|
64
|
+
};
|
|
65
|
+
updatedAt: {
|
|
66
|
+
columnType: "text";
|
|
67
|
+
schema: Schema.Schema<string, string, never>;
|
|
68
|
+
default: import("effect/Option").None<never>;
|
|
69
|
+
nullable: false;
|
|
70
|
+
primaryKey: false;
|
|
71
|
+
};
|
|
72
|
+
}>;
|
|
73
|
+
isSingleColumn: false;
|
|
74
|
+
options: {
|
|
75
|
+
isSingleton: false;
|
|
76
|
+
dynamicRegistration: false;
|
|
77
|
+
disableAutomaticIdColumn: true;
|
|
78
|
+
deriveMutations: false;
|
|
79
|
+
isSingleColumn: false;
|
|
80
|
+
};
|
|
81
|
+
schema: Schema.Schema<{
|
|
82
|
+
readonly mutationName: string;
|
|
83
|
+
readonly schemaHash: number;
|
|
84
|
+
readonly updatedAt: string;
|
|
85
|
+
}, {
|
|
86
|
+
readonly mutationName: string;
|
|
87
|
+
readonly schemaHash: number;
|
|
88
|
+
readonly updatedAt: string;
|
|
89
|
+
}, never>;
|
|
90
|
+
};
|
|
91
|
+
export type SchemaMutationsMetaRow = FromTable.RowDecoded<typeof schemaMutationsMetaTable>;
|
|
92
|
+
export declare const systemTables: ({
|
|
93
|
+
sqliteDef: SqliteDsl.TableDefinition<"__livestore_schema", {
|
|
94
|
+
tableName: {
|
|
95
|
+
columnType: "text";
|
|
96
|
+
schema: Schema.Schema<string, string, never>;
|
|
97
|
+
default: import("effect/Option").None<never>;
|
|
98
|
+
nullable: false;
|
|
99
|
+
primaryKey: true;
|
|
100
|
+
};
|
|
101
|
+
schemaHash: {
|
|
102
|
+
columnType: "integer";
|
|
103
|
+
schema: Schema.Schema<number, number, never>;
|
|
104
|
+
default: import("effect/Option").None<never>;
|
|
105
|
+
nullable: false;
|
|
106
|
+
primaryKey: false;
|
|
107
|
+
};
|
|
108
|
+
updatedAt: {
|
|
109
|
+
columnType: "text";
|
|
110
|
+
schema: Schema.Schema<string, string, never>;
|
|
111
|
+
default: import("effect/Option").None<never>;
|
|
112
|
+
nullable: false;
|
|
113
|
+
primaryKey: false;
|
|
114
|
+
};
|
|
115
|
+
}>;
|
|
116
|
+
isSingleColumn: false;
|
|
117
|
+
options: {
|
|
118
|
+
isSingleton: false;
|
|
119
|
+
dynamicRegistration: false;
|
|
120
|
+
disableAutomaticIdColumn: true;
|
|
121
|
+
deriveMutations: false;
|
|
122
|
+
isSingleColumn: false;
|
|
47
123
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
124
|
+
schema: Schema.Schema<{
|
|
125
|
+
readonly tableName: string;
|
|
126
|
+
readonly schemaHash: number;
|
|
127
|
+
readonly updatedAt: string;
|
|
128
|
+
}, {
|
|
129
|
+
readonly tableName: string;
|
|
130
|
+
readonly schemaHash: number;
|
|
131
|
+
readonly updatedAt: string;
|
|
132
|
+
}, never>;
|
|
133
|
+
} | {
|
|
134
|
+
sqliteDef: SqliteDsl.TableDefinition<"__livestore_schema_mutations", {
|
|
135
|
+
mutationName: {
|
|
136
|
+
columnType: "text";
|
|
137
|
+
schema: Schema.Schema<string, string, never>;
|
|
138
|
+
default: import("effect/Option").None<never>;
|
|
139
|
+
nullable: false;
|
|
140
|
+
primaryKey: true;
|
|
141
|
+
};
|
|
142
|
+
schemaHash: {
|
|
143
|
+
columnType: "integer";
|
|
144
|
+
schema: Schema.Schema<number, number, never>;
|
|
145
|
+
default: import("effect/Option").None<never>;
|
|
146
|
+
nullable: false;
|
|
147
|
+
primaryKey: false;
|
|
148
|
+
};
|
|
149
|
+
updatedAt: {
|
|
150
|
+
columnType: "text";
|
|
151
|
+
schema: Schema.Schema<string, string, never>;
|
|
152
|
+
default: import("effect/Option").None<never>;
|
|
153
|
+
nullable: false;
|
|
154
|
+
primaryKey: false;
|
|
155
|
+
};
|
|
156
|
+
}>;
|
|
157
|
+
isSingleColumn: false;
|
|
158
|
+
options: {
|
|
159
|
+
isSingleton: false;
|
|
160
|
+
dynamicRegistration: false;
|
|
161
|
+
disableAutomaticIdColumn: true;
|
|
162
|
+
deriveMutations: false;
|
|
163
|
+
isSingleColumn: false;
|
|
54
164
|
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
165
|
+
schema: Schema.Schema<{
|
|
166
|
+
readonly mutationName: string;
|
|
167
|
+
readonly schemaHash: number;
|
|
168
|
+
readonly updatedAt: string;
|
|
169
|
+
}, {
|
|
170
|
+
readonly mutationName: string;
|
|
171
|
+
readonly schemaHash: number;
|
|
172
|
+
readonly updatedAt: string;
|
|
173
|
+
}, never>;
|
|
174
|
+
})[];
|
|
175
|
+
export declare const SyncStatus: Schema.Literal<["synced", "pending", "error"]>;
|
|
176
|
+
export type SyncStatus = typeof SyncStatus.Type;
|
|
177
|
+
export declare const MUTATION_LOG_META_TABLE = "mutation_log";
|
|
178
|
+
export declare const mutationLogMetaTable: {
|
|
179
|
+
sqliteDef: SqliteDsl.TableDefinition<"mutation_log", {
|
|
180
|
+
id: {
|
|
181
|
+
columnType: "text";
|
|
182
|
+
schema: Schema.Schema<string, string, never>;
|
|
183
|
+
default: import("effect/Option").None<never>;
|
|
184
|
+
nullable: false;
|
|
185
|
+
primaryKey: true;
|
|
186
|
+
};
|
|
187
|
+
mutation: {
|
|
188
|
+
columnType: "text";
|
|
189
|
+
schema: Schema.Schema<string, string, never>;
|
|
190
|
+
default: import("effect/Option").None<never>;
|
|
191
|
+
nullable: false;
|
|
192
|
+
primaryKey: false;
|
|
193
|
+
};
|
|
194
|
+
argsJson: {
|
|
195
|
+
columnType: "text";
|
|
196
|
+
schema: Schema.Schema<any, string, never>;
|
|
197
|
+
default: import("effect/Option").None<never>;
|
|
198
|
+
nullable: false;
|
|
199
|
+
primaryKey: false;
|
|
200
|
+
};
|
|
201
|
+
schemaHash: {
|
|
202
|
+
columnType: "integer";
|
|
203
|
+
schema: Schema.Schema<number, number, never>;
|
|
204
|
+
default: import("effect/Option").None<never>;
|
|
205
|
+
nullable: false;
|
|
206
|
+
primaryKey: false;
|
|
207
|
+
};
|
|
208
|
+
createdAt: {
|
|
209
|
+
columnType: "text";
|
|
210
|
+
schema: Schema.Schema<string, string, never>;
|
|
211
|
+
default: import("effect/Option").None<never>;
|
|
212
|
+
nullable: false;
|
|
213
|
+
primaryKey: false;
|
|
214
|
+
};
|
|
215
|
+
syncStatus: {
|
|
216
|
+
columnType: "text";
|
|
217
|
+
schema: Schema.Schema<"synced" | "pending" | "error", "synced" | "pending" | "error", never>;
|
|
218
|
+
default: import("effect/Option").None<never>;
|
|
219
|
+
nullable: false;
|
|
220
|
+
primaryKey: false;
|
|
221
|
+
};
|
|
222
|
+
}>;
|
|
223
|
+
isSingleColumn: false;
|
|
224
|
+
options: {
|
|
225
|
+
isSingleton: false;
|
|
226
|
+
dynamicRegistration: false;
|
|
227
|
+
disableAutomaticIdColumn: true;
|
|
228
|
+
deriveMutations: false;
|
|
229
|
+
isSingleColumn: false;
|
|
61
230
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
231
|
+
schema: Schema.Schema<{
|
|
232
|
+
readonly id: string;
|
|
233
|
+
readonly mutation: string;
|
|
234
|
+
readonly argsJson: any;
|
|
235
|
+
readonly schemaHash: number;
|
|
236
|
+
readonly createdAt: string;
|
|
237
|
+
readonly syncStatus: "synced" | "pending" | "error";
|
|
238
|
+
}, {
|
|
239
|
+
readonly id: string;
|
|
240
|
+
readonly mutation: string;
|
|
241
|
+
readonly argsJson: string;
|
|
242
|
+
readonly schemaHash: number;
|
|
243
|
+
readonly createdAt: string;
|
|
244
|
+
readonly syncStatus: "synced" | "pending" | "error";
|
|
245
|
+
}, never>;
|
|
246
|
+
};
|
|
247
|
+
export type MutationLogMetaRow = FromTable.RowDecoded<typeof mutationLogMetaTable>;
|
|
76
248
|
//# sourceMappingURL=system-tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system-tables.d.ts","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK/C,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AAErD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAExE,eAAO,MAAM,2BAA2B,iCAAiC,CAAA;AAEzE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE1F,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8C,CAAA;AAIvE,eAAO,MAAM,UAAU,gDAA+C,CAAA;AACtE,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AAErD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAahC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
|
@@ -1,12 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
import { Schema } from '@livestore/utils/effect';
|
|
2
2
|
import { SqliteDsl } from 'effect-db-schema';
|
|
3
3
|
import { table } from './table-def.js';
|
|
4
|
+
/// App DB
|
|
4
5
|
export const SCHEMA_META_TABLE = '__livestore_schema';
|
|
5
|
-
const schemaMetaTable = table(SCHEMA_META_TABLE, {
|
|
6
|
+
export const schemaMetaTable = table(SCHEMA_META_TABLE, {
|
|
6
7
|
tableName: SqliteDsl.text({ primaryKey: true }),
|
|
7
8
|
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
8
9
|
/** ISO date format */
|
|
9
10
|
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
10
11
|
}, { disableAutomaticIdColumn: true });
|
|
11
|
-
export const
|
|
12
|
+
export const SCHEMA_MUTATIONS_META_TABLE = '__livestore_schema_mutations';
|
|
13
|
+
export const schemaMutationsMetaTable = table(SCHEMA_MUTATIONS_META_TABLE, {
|
|
14
|
+
mutationName: SqliteDsl.text({ primaryKey: true }),
|
|
15
|
+
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
16
|
+
/** ISO date format */
|
|
17
|
+
updatedAt: SqliteDsl.text({ nullable: false }),
|
|
18
|
+
}, { disableAutomaticIdColumn: true });
|
|
19
|
+
export const systemTables = [schemaMetaTable, schemaMutationsMetaTable];
|
|
20
|
+
/// Mutation log DB
|
|
21
|
+
export const SyncStatus = Schema.Literal('synced', 'pending', 'error');
|
|
22
|
+
export const MUTATION_LOG_META_TABLE = 'mutation_log';
|
|
23
|
+
export const mutationLogMetaTable = table(MUTATION_LOG_META_TABLE, {
|
|
24
|
+
// TODO add parent ids (see https://vlcn.io/blog/crdt-substrate)
|
|
25
|
+
id: SqliteDsl.text({ primaryKey: true }),
|
|
26
|
+
mutation: SqliteDsl.text({ nullable: false }),
|
|
27
|
+
argsJson: SqliteDsl.text({ nullable: false, schema: Schema.parseJson(Schema.Any) }),
|
|
28
|
+
schemaHash: SqliteDsl.integer({ nullable: false }),
|
|
29
|
+
/** ISO date format */
|
|
30
|
+
createdAt: SqliteDsl.text({ nullable: false }),
|
|
31
|
+
syncStatus: SqliteDsl.text({ schema: SyncStatus }),
|
|
32
|
+
}, { disableAutomaticIdColumn: true });
|
|
12
33
|
//# sourceMappingURL=system-tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"system-tables.js","sourceRoot":"","sources":["../../src/schema/system-tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAiC,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG3E,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,UAAU;AAEV,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAClC,iBAAiB,EACjB;IACE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC/C,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA;AAID,MAAM,CAAC,MAAM,2BAA2B,GAAG,8BAA8B,CAAA;AAEzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAC3C,2BAA2B,EAC3B;IACE,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAClD,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC/C,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA;AAID,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAA;AAEvE,mBAAmB;AAEnB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAGtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CACvC,uBAAuB,EACvB;IACE,gEAAgE;IAChE,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACnF,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClD,sBAAsB;IACtB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC9C,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;CACnD,EACD,EAAE,wBAAwB,EAAE,IAAI,EAAE,CACnC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Schema } from '@livestore/utils/effect';
|
|
2
2
|
import type { Nullable, PrettifyFlat } from 'effect-db-schema';
|
|
3
3
|
import { SqliteDsl } from 'effect-db-schema';
|
|
4
|
+
import type { DerivedMutationHelperFns } from '../derived-mutations.js';
|
|
4
5
|
export declare const blob: SqliteDsl.ColDefFn<"blob">, boolean: SqliteDsl.SpecializedColDefFn<"integer", false, boolean>, column: <TColumnType extends SqliteDsl.FieldColumnType>(columnType: TColumnType) => SqliteDsl.ColDefFn<TColumnType>, datetime: SqliteDsl.SpecializedColDefFn<"text", false, Date>, integer: SqliteDsl.ColDefFn<"integer">, isColumnDefinition: (value: unknown) => value is SqliteDsl.ColumnDefinition<any, any>, json: SqliteDsl.SpecializedColDefFn<"text", true, unknown>, real: SqliteDsl.ColDefFn<"real">, text: SqliteDsl.ColDefFn<"text">;
|
|
5
6
|
export { type SqliteDsl } from 'effect-db-schema';
|
|
6
7
|
export type StateType = 'singleton' | 'dynamic';
|
|
@@ -15,15 +16,15 @@ export type TableDef<TSqliteDef extends DefaultSqliteTableDef = DefaultSqliteTab
|
|
|
15
16
|
isSingleColumn: TIsSingleColumn;
|
|
16
17
|
options: TOptions;
|
|
17
18
|
schema: TSchema;
|
|
18
|
-
};
|
|
19
|
-
export type TableOptionsInput = Partial<TableOptions & {
|
|
19
|
+
} & (TOptions['deriveMutations'] extends true ? DerivedMutationHelperFns<TSqliteDef['columns'], TOptions> : {});
|
|
20
|
+
export type TableOptionsInput = Partial<Omit<TableOptions, 'isSingleColumn'> & {
|
|
20
21
|
indexes: SqliteDsl.Index[];
|
|
21
22
|
}>;
|
|
22
23
|
export type TableOptions = {
|
|
23
24
|
/**
|
|
24
25
|
* Setting this to true will have the following consequences:
|
|
25
26
|
* - An `id` column will be added with `primaryKey: true` and `"singleton"` as default value and only allowed value
|
|
26
|
-
* - LiveStore will automatically create the singleton row when
|
|
27
|
+
* - LiveStore will automatically create the singleton row when booting up
|
|
27
28
|
* - LiveStore will fail if there is already a column defined with `primaryKey: true`
|
|
28
29
|
*
|
|
29
30
|
* @default false
|
|
@@ -31,30 +32,72 @@ export type TableOptions = {
|
|
|
31
32
|
isSingleton: boolean;
|
|
32
33
|
dynamicRegistration: boolean;
|
|
33
34
|
disableAutomaticIdColumn: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Setting this to true will automatically derive insert, update and delete mutations for this table. Example:
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* const todos = table('todos', { ... }, { deriveMutations: true })
|
|
40
|
+
* todos.insert({ id: '1', text: 'Hello' })
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* This is also a prerequisite for using the `useRow`, `useAtom` and `rowQuery` APIs.
|
|
44
|
+
*
|
|
45
|
+
* Important: When using this option, make sure you're following the "Rules of mutations" for the table schema.
|
|
46
|
+
*/
|
|
47
|
+
deriveMutations: boolean;
|
|
48
|
+
/** Derived based on whether the table definition has one or more columns (besides the `id` column) */
|
|
49
|
+
isSingleColumn: boolean;
|
|
34
50
|
};
|
|
35
|
-
export declare const table: <TName extends string, TColumns extends SqliteDsl.ColumnDefinition<any, any> | SqliteDsl.Columns, const TOptionsInput extends Partial<TableOptions & {
|
|
51
|
+
export declare const table: <TName extends string, TColumns extends SqliteDsl.ColumnDefinition<any, any> | SqliteDsl.Columns, const TOptionsInput extends Partial<Omit<TableOptions, "isSingleColumn"> & {
|
|
36
52
|
indexes: SqliteDsl.Index[];
|
|
37
|
-
}> = Partial<TableOptions & {
|
|
53
|
+
}> = Partial<Omit<TableOptions, "isSingleColumn"> & {
|
|
38
54
|
indexes: SqliteDsl.Index[];
|
|
39
55
|
}>>(name: TName, columnOrColumns: TColumns, options?: TOptionsInput) => TableDef<SqliteDsl.TableDefinition<TName, PrettifyFlat<WithId<TColumns extends SqliteDsl.Columns ? TColumns : {
|
|
40
56
|
value: TColumns;
|
|
41
|
-
}, WithDefaults<TOptionsInput
|
|
42
|
-
export declare const
|
|
57
|
+
}, WithDefaults<TOptionsInput, SqliteDsl.IsSingleColumn<TColumns>>>>>, SqliteDsl.IsSingleColumn<TColumns>, WithDefaults<TOptionsInput, SqliteDsl.IsSingleColumn<TColumns>>>;
|
|
58
|
+
export declare const tableHasDerivedMutations: <TTableDef extends {
|
|
59
|
+
sqliteDef: DefaultSqliteTableDefConstrained;
|
|
60
|
+
isSingleColumn: boolean;
|
|
61
|
+
options: TableOptions;
|
|
62
|
+
schema: Schema.Schema<any, any, never>;
|
|
63
|
+
}>(tableDef: TTableDef) => tableDef is TTableDef & {
|
|
64
|
+
options: {
|
|
65
|
+
deriveMutations: true;
|
|
66
|
+
};
|
|
67
|
+
} & DerivedMutationHelperFns<TTableDef["sqliteDef"]["columns"], TTableDef["options"]>;
|
|
68
|
+
export declare const tableIsSingleton: <TTableDef extends {
|
|
69
|
+
sqliteDef: DefaultSqliteTableDefConstrained;
|
|
70
|
+
isSingleColumn: boolean;
|
|
71
|
+
options: TableOptions;
|
|
72
|
+
schema: Schema.Schema<any, any, never>;
|
|
73
|
+
}>(tableDef: TTableDef) => tableDef is TTableDef & {
|
|
43
74
|
options: {
|
|
44
75
|
isSingleton: true;
|
|
45
76
|
};
|
|
46
77
|
};
|
|
47
|
-
export declare const getDefaultValuesEncoded: <TTableDef extends
|
|
48
|
-
|
|
78
|
+
export declare const getDefaultValuesEncoded: <TTableDef extends {
|
|
79
|
+
sqliteDef: DefaultSqliteTableDefConstrained;
|
|
80
|
+
isSingleColumn: boolean;
|
|
81
|
+
options: TableOptions;
|
|
82
|
+
schema: Schema.Schema<any, any, never>;
|
|
83
|
+
}>(tableDef: TTableDef, fallbackValues?: Record<string, any>) => Record<string, any>;
|
|
84
|
+
export declare const getDefaultValuesDecoded: <TTableDef extends {
|
|
85
|
+
sqliteDef: DefaultSqliteTableDefConstrained;
|
|
86
|
+
isSingleColumn: boolean;
|
|
87
|
+
options: TableOptions;
|
|
88
|
+
schema: Schema.Schema<any, any, never>;
|
|
89
|
+
}>(tableDef: TTableDef, fallbackValues?: Record<string, any>) => Record<string, any>;
|
|
49
90
|
type WithId<TColumns extends SqliteDsl.Columns, TOptions extends TableOptions> = TColumns & ('id' extends keyof TColumns ? {} : TOptions['disableAutomaticIdColumn'] extends true ? {} : TOptions['isSingleton'] extends true ? {
|
|
50
91
|
id: SqliteDsl.ColumnDefinition<'singleton', 'singleton'>;
|
|
51
92
|
} : {
|
|
52
93
|
id: SqliteDsl.ColumnDefinition<string, string>;
|
|
53
94
|
});
|
|
54
|
-
type WithDefaults<TOptionsInput extends TableOptionsInput> = {
|
|
95
|
+
type WithDefaults<TOptionsInput extends TableOptionsInput, TIsSingleColumn extends boolean> = {
|
|
55
96
|
isSingleton: TOptionsInput['isSingleton'] extends true ? true : false;
|
|
56
97
|
dynamicRegistration: TOptionsInput['dynamicRegistration'] extends true ? true : false;
|
|
57
98
|
disableAutomaticIdColumn: TOptionsInput['disableAutomaticIdColumn'] extends true ? true : false;
|
|
99
|
+
deriveMutations: TOptionsInput['deriveMutations'] extends true ? true : false;
|
|
100
|
+
isSingleColumn: TIsSingleColumn;
|
|
58
101
|
};
|
|
59
102
|
export declare namespace FromTable {
|
|
60
103
|
type RowDecoded<TTableDef extends TableDef> = PrettifyFlat<Nullable<Pick<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>> & Omit<RowDecodedAll<TTableDef>, NullableColumnNames<TTableDef>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,eAAO,MAAQ,IAAI,8BAAE,OAAO,4DAAE,MAAM,+GAAE,QAAQ,sDAAE,OAAO,iCAAE,kBAAkB,qEAAE,IAAI,wDAAE,IAAI,8BAAE,IAAI,4BAAc,CAAA;AAE3G,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAE/C,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AACxF,MAAM,MAAM,gCAAgC,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAyB7G,MAAM,MAAM,QAAQ,CAClB,UAAU,SAAS,qBAAqB,GAAG,gCAAgC,EAC3E,eAAe,SAAS,OAAO,GAAG,OAAO,EACzC,QAAQ,SAAS,YAAY,GAAG,YAAY,EAG5C,OAAO,GAAG,MAAM,CAAC,MAAM,CACrB,SAAS,CAAC,eAAe,CACvB,UAAU,CAAC,SAAS,CAAC,EACrB;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAAE,CACxG,EACD,SAAS,CAAC,eAAe,CACvB,UAAU,CAAC,SAAS,CAAC,EACrB;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAAE,CAC3G,CACF,IACC;IACF,SAAS,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"table-def.d.ts","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/table-def.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
2
2
|
import { pipe, ReadonlyRecord, Schema } from '@livestore/utils/effect';
|
|
3
3
|
import { SqliteDsl } from 'effect-db-schema';
|
|
4
|
+
import { makeDerivedMutationDefsForTable } from '../derived-mutations.js';
|
|
4
5
|
export const { blob, boolean, column, datetime, integer, isColumnDefinition, json, real, text } = SqliteDsl;
|
|
5
|
-
export const table = (name, columnOrColumns,
|
|
6
|
-
// type?: TStateType,
|
|
7
|
-
options) => {
|
|
6
|
+
export const table = (name, columnOrColumns, options) => {
|
|
8
7
|
const tablePath = name;
|
|
9
8
|
const options_ = {
|
|
10
9
|
isSingleton: options?.isSingleton ?? false,
|
|
11
10
|
dynamicRegistration: options?.dynamicRegistration ?? false,
|
|
12
11
|
disableAutomaticIdColumn: options?.disableAutomaticIdColumn ?? false,
|
|
12
|
+
deriveMutations: options?.deriveMutations ?? false,
|
|
13
|
+
isSingleColumn: SqliteDsl.isColumnDefinition(columnOrColumns) === true,
|
|
13
14
|
};
|
|
14
15
|
const columns = (SqliteDsl.isColumnDefinition(columnOrColumns) ? { value: columnOrColumns } : columnOrColumns);
|
|
15
16
|
if (options_.disableAutomaticIdColumn === true) {
|
|
@@ -19,13 +20,14 @@ options) => {
|
|
|
19
20
|
}
|
|
20
21
|
else if (columns.id === undefined && ReadonlyRecord.some(columns, (_) => _.primaryKey === true) === false) {
|
|
21
22
|
if (options_.isSingleton) {
|
|
22
|
-
columns.id = SqliteDsl.text({ schema: Schema.
|
|
23
|
+
columns.id = SqliteDsl.text({ schema: Schema.Literal('singleton'), primaryKey: true, default: 'singleton' });
|
|
23
24
|
}
|
|
24
25
|
else {
|
|
25
26
|
columns.id = SqliteDsl.text({ primaryKey: true });
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
const sqliteDef = SqliteDsl.table(tablePath, columns, options?.indexes ?? []);
|
|
30
|
+
// TODO also enforce this on the type level
|
|
29
31
|
if (options_.isSingleton) {
|
|
30
32
|
for (const column of sqliteDef.ast.columns) {
|
|
31
33
|
if (column.nullable === false && column.default._tag === 'None') {
|
|
@@ -36,16 +38,29 @@ options) => {
|
|
|
36
38
|
const isSingleColumn = SqliteDsl.isColumnDefinition(columnOrColumns) === true;
|
|
37
39
|
const schema = SqliteDsl.structSchemaForTable(sqliteDef);
|
|
38
40
|
const tableDef = { sqliteDef, isSingleColumn, options: options_, schema };
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (tableHasDerivedMutations(tableDef)) {
|
|
42
|
+
const derivedMutationDefs = makeDerivedMutationDefsForTable(tableDef);
|
|
43
|
+
tableDef.insert = (valuesOrValue) => {
|
|
44
|
+
if (isSingleColumn && options_.isSingleton) {
|
|
45
|
+
return derivedMutationDefs.insert({ id: 'singleton', value: { value: valuesOrValue } });
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return derivedMutationDefs.insert(valuesOrValue);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
tableDef.update = (argsOrValues) => {
|
|
52
|
+
if (isSingleColumn && options_.isSingleton) {
|
|
53
|
+
return derivedMutationDefs.update({ where: { id: 'singleton' }, values: { value: argsOrValues } });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return derivedMutationDefs.update(argsOrValues);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
tableDef.delete = (args) => derivedMutationDefs.delete(args);
|
|
60
|
+
}
|
|
47
61
|
return tableDef;
|
|
48
62
|
};
|
|
63
|
+
export const tableHasDerivedMutations = (tableDef) => tableDef.options.deriveMutations === true;
|
|
49
64
|
export const tableIsSingleton = (tableDef) => tableDef.options.isSingleton === true;
|
|
50
65
|
export const getDefaultValuesEncoded = (tableDef, fallbackValues) => pipe(tableDef.sqliteDef.columns, ReadonlyRecord.filter((col, key) => {
|
|
51
66
|
if (fallbackValues?.[key] !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"table-def.js","sourceRoot":"","sources":["../../src/schema/table-def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5C,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAA;AAwF3G,MAAM,CAAC,MAAM,KAAK,GAAG,CAKnB,IAAW,EACX,eAAyB,EACzB,OAAuB,EAavB,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,CAAA;IAEtB,MAAM,QAAQ,GAAiB;QAC7B,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;QAC1C,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,KAAK;QAC1D,wBAAwB,EAAE,OAAO,EAAE,wBAAwB,IAAI,KAAK;QACpE,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,KAAK;QAClD,cAAc,EAAE,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,IAAI;KACvE,CAAA;IAED,MAAM,OAAO,GAAG,CACd,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CACxE,CAAA;IAEtB,IAAI,QAAQ,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9D,iBAAiB,CACf,uBAAuB,IAAI,iHAAiH,CAC7I,CAAA;QACH,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;QAC5G,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;QAC9G,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAE7E,2CAA2C;IAC3C,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChE,iBAAiB,CACf,yGAAyG,MAAM,CAAC,IAAI,eAAe,CACpI,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IAE7E,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAqB,CAAA;IAE5F,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAA;QAErE,QAAQ,CAAC,MAAM,GAAG,CAAC,aAAkB,EAAE,EAAE;YACvC,IAAI,cAAc,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC3C,OAAO,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;YACzF,CAAC;iBAAM,CAAC;gBACN,OAAO,mBAAmB,CAAC,MAAM,CAAC,aAAoB,CAAC,CAAA;YACzD,CAAC;QACH,CAAC,CAAA;QAED,QAAQ,CAAC,MAAM,GAAG,CAAC,YAAiB,EAAE,EAAE;YACtC,IAAI,cAAc,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC3C,OAAO,mBAAmB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAS,EAAE,CAAC,CAAA;YAC3G,CAAC;iBAAM,CAAC;gBACN,OAAO,mBAAmB,CAAC,MAAM,CAAC,YAAmB,CAAC,CAAA;YACxD,CAAC;QACH,CAAC,CAAA;QAED,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,QAAe,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,QAAmB,EAGiE,EAAE,CACtF,QAAQ,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAAmB,EACyC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,CAAA;AAEtG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAAmB,EACnB,cAAoC,EACpC,EAAE,CACF,IAAI,CACF,QAAQ,CAAC,SAAS,CAAC,OAAO,EAC1B,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC9B,OAAO,GAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAA;AAClG,CAAC,CAAC,EACF,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CACxC,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,SAAS;IACxC,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;QAC/B,CAAC,CAAC,MAAO,CAAC,QAAQ,KAAK,IAAI;YACzB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,iBAAiB,CAAC,UAAU,UAAU,2CAA2C,CAAC;QACtF,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5D,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAC/B,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAAmB,EACnB,cAAoC,EACpC,EAAE,CACF,IAAI,CACF,QAAQ,CAAC,SAAS,CAAC,OAAO,EAC1B,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC9B,OAAO,GAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAA;AAClG,CAAC,CAAC,EACF,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CACxC,cAAc,EAAE,CAAC,UAAU,CAAC,KAAK,SAAS;IACxC,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;QAC/B,CAAC,CAAC,MAAO,CAAC,QAAQ,KAAK,IAAI;YACzB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,iBAAiB,CAAC,UAAU,UAAU,2CAA2C,CAAC;QACtF,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9D,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAC/B,CACF,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { InMemoryDatabase } from '../adapter-types.js';
|
|
2
|
+
import type { ParamsObject } from '../util.js';
|
|
3
|
+
export declare const dbExecute: (db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => void;
|
|
4
|
+
export declare const dbSelect: <T>(db: InMemoryDatabase, queryStr: string, bindValues?: ParamsObject) => readonly T[];
|
|
5
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,SAAS,OAAQ,gBAAgB,YAAY,MAAM,eAAe,YAAY,SAU1F,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,gBAAgB,YAAY,MAAM,eAAe,YAAY,iBAQ5F,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { prepareBindValues } from '../util.js';
|
|
2
|
+
// TODO bring back statement caching
|
|
3
|
+
// will require proper scope-aware cleanup etc (for testing and apps with multiple LiveStore instances)
|
|
4
|
+
// const cachedStmts = new Map<string, PreparedStatement>()
|
|
5
|
+
export const dbExecute = (db, queryStr, bindValues) => {
|
|
6
|
+
// let stmt = cachedStmts.get(queryStr)
|
|
7
|
+
// if (!stmt) {
|
|
8
|
+
const stmt = db.prepare(queryStr);
|
|
9
|
+
// cachedStmts.set(queryStr, stmt)
|
|
10
|
+
// }
|
|
11
|
+
const preparedBindValues = bindValues ? prepareBindValues(bindValues, queryStr) : undefined;
|
|
12
|
+
stmt.execute(preparedBindValues);
|
|
13
|
+
};
|
|
14
|
+
export const dbSelect = (db, queryStr, bindValues) => {
|
|
15
|
+
// let stmt = cachedStmts.get(queryStr)
|
|
16
|
+
// if (!stmt) {
|
|
17
|
+
const stmt = db.prepare(queryStr);
|
|
18
|
+
// cachedStmts.set(queryStr, stmt)
|
|
19
|
+
// }
|
|
20
|
+
return stmt.select(bindValues ? prepareBindValues(bindValues, queryStr) : undefined);
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schema-management/common.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,oCAAoC;AACpC,uGAAuG;AACvG,2DAA2D;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAoB,EAAE,QAAgB,EAAE,UAAyB,EAAE,EAAE;IAC7F,uCAAuC;IACvC,eAAe;IACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACjC,kCAAkC;IAClC,IAAI;IAEJ,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE3F,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAoB,EAAE,QAAgB,EAAE,UAAyB,EAAE,EAAE;IAC/F,uCAAuC;IACvC,eAAe;IACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACjC,kCAAkC;IAClC,IAAI;IAEJ,OAAO,IAAI,CAAC,MAAM,CAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACzF,CAAC,CAAA"}
|