@axium/server 0.39.3 → 0.39.5
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/db/delta.d.ts +1 -0
- package/dist/db/delta.js +72 -28
- package/package.json +2 -2
- package/routes/admin/users/+page.svelte +2 -1
package/dist/db/delta.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const Column: z.ZodObject<{
|
|
|
8
8
|
}, z.core.$strict>;
|
|
9
9
|
export interface Column extends z.infer<typeof Column> {
|
|
10
10
|
}
|
|
11
|
+
export declare function applyToColumn(column: data.Column, delta: Column): void;
|
|
11
12
|
export declare const Table: z.ZodObject<{
|
|
12
13
|
add_columns: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
13
14
|
type: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"bigint" | "boolean" | "uuid" | "date" | "binary" | "integer" | "int2" | "int4" | "int8" | "smallint" | "real" | "double precision" | "float4" | "float8" | "decimal" | "numeric" | "serial" | "bigserial" | "bool" | "varchar" | "char" | "text" | "datetime" | "time" | "timetz" | "timestamp" | "timestamptz" | "bytea" | "varbinary" | "blob" | "int4range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "int4multirange" | "int8multirange" | "nummultirange" | "tsmultirange" | "tstzmultirange" | "datemultirange" | "json" | "jsonb">, z.ZodTemplateLiteral<`binary(${number})` | `varchar(${number})` | `char(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`>, z.ZodTemplateLiteral<`decimal(${number},${number})` | `decimal(${number}, ${number})` | `numeric(${number},${number})` | `numeric(${number}, ${number})`>]>, z.ZodTemplateLiteral<"bigint[]" | "boolean[]" | "uuid[]" | "date[]" | "binary[]" | "integer[]" | "int2[]" | "int4[]" | "int8[]" | "smallint[]" | "real[]" | "double precision[]" | "float4[]" | "float8[]" | "decimal[]" | "numeric[]" | "serial[]" | "bigserial[]" | "bool[]" | "varchar[]" | "char[]" | "text[]" | "datetime[]" | "time[]" | "timetz[]" | "timestamp[]" | "timestamptz[]" | "bytea[]" | "varbinary[]" | "blob[]" | "int4range[]" | "numrange[]" | "tsrange[]" | "tstzrange[]" | "daterange[]" | "int4multirange[]" | "int8multirange[]" | "nummultirange[]" | "tsmultirange[]" | "tstzmultirange[]" | "datemultirange[]" | "json[]" | "jsonb[]" | `binary(${number})[]` | `varchar(${number})[]` | `char(${number})[]` | `datetime(${number})[]` | `time(${number})[]` | `timetz(${number})[]` | `timestamp(${number})[]` | `timestamptz(${number})[]` | `varbinary(${number})[]` | `decimal(${number},${number})[]` | `decimal(${number}, ${number})[]` | `numeric(${number},${number})[]` | `numeric(${number}, ${number})[]` | `bigint[${number}]` | `boolean[${number}]` | `uuid[${number}]` | `date[${number}]` | `binary[${number}]` | `integer[${number}]` | `int2[${number}]` | `int4[${number}]` | `int8[${number}]` | `smallint[${number}]` | `real[${number}]` | `double precision[${number}]` | `float4[${number}]` | `float8[${number}]` | `decimal[${number}]` | `numeric[${number}]` | `serial[${number}]` | `bigserial[${number}]` | `bool[${number}]` | `varchar[${number}]` | `char[${number}]` | `text[${number}]` | `datetime[${number}]` | `time[${number}]` | `timetz[${number}]` | `timestamp[${number}]` | `timestamptz[${number}]` | `bytea[${number}]` | `varbinary[${number}]` | `blob[${number}]` | `int4range[${number}]` | `numrange[${number}]` | `tsrange[${number}]` | `tstzrange[${number}]` | `daterange[${number}]` | `int4multirange[${number}]` | `int8multirange[${number}]` | `nummultirange[${number}]` | `tsmultirange[${number}]` | `tstzmultirange[${number}]` | `datemultirange[${number}]` | `json[${number}]` | `jsonb[${number}]` | `binary(${number})[${number}]` | `varchar(${number})[${number}]` | `char(${number})[${number}]` | `datetime(${number})[${number}]` | `time(${number})[${number}]` | `timetz(${number})[${number}]` | `timestamp(${number})[${number}]` | `timestamptz(${number})[${number}]` | `varbinary(${number})[${number}]` | `decimal(${number},${number})[${number}]` | `decimal(${number}, ${number})[${number}]` | `numeric(${number},${number})[${number}]` | `numeric(${number}, ${number})[${number}]`>]>;
|
package/dist/db/delta.js
CHANGED
|
@@ -9,6 +9,25 @@ export const Column = z.strictObject({
|
|
|
9
9
|
default: z.string().optional(),
|
|
10
10
|
ops: z.literal(['drop_default', 'set_required', 'drop_required']).array().optional(),
|
|
11
11
|
});
|
|
12
|
+
export function applyToColumn(column, delta) {
|
|
13
|
+
if (delta.type)
|
|
14
|
+
column.type = delta.type;
|
|
15
|
+
if (delta.default)
|
|
16
|
+
column.default = delta.default;
|
|
17
|
+
for (const op of delta.ops || []) {
|
|
18
|
+
switch (op) {
|
|
19
|
+
case 'drop_default':
|
|
20
|
+
delete column.default;
|
|
21
|
+
break;
|
|
22
|
+
case 'set_required':
|
|
23
|
+
column.required = true;
|
|
24
|
+
break;
|
|
25
|
+
case 'drop_required':
|
|
26
|
+
column.required = false;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
12
31
|
export const Table = z.strictObject({
|
|
13
32
|
add_columns: z.record(z.string(), data.Column).optional().default({}),
|
|
14
33
|
drop_columns: z.string().array().optional().default([]),
|
|
@@ -32,23 +51,7 @@ export function applyToTable(table, delta) {
|
|
|
32
51
|
const column = table.columns[name];
|
|
33
52
|
if (!column)
|
|
34
53
|
throw `can't modify column ${name} because it does not exist`;
|
|
35
|
-
|
|
36
|
-
column.type = columnDelta.type;
|
|
37
|
-
if (columnDelta.default)
|
|
38
|
-
column.default = columnDelta.default;
|
|
39
|
-
for (const op of columnDelta.ops || []) {
|
|
40
|
-
switch (op) {
|
|
41
|
-
case 'drop_default':
|
|
42
|
-
delete column.default;
|
|
43
|
-
break;
|
|
44
|
-
case 'set_required':
|
|
45
|
-
column.required = true;
|
|
46
|
-
break;
|
|
47
|
-
case 'drop_required':
|
|
48
|
-
column.required = false;
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
54
|
+
applyToColumn(column, columnDelta);
|
|
52
55
|
}
|
|
53
56
|
for (const name of delta.drop_constraints) {
|
|
54
57
|
if (table.constraints[name])
|
|
@@ -192,21 +195,62 @@ export function collapse(deltas) {
|
|
|
192
195
|
for (const [name, table] of Object.entries(delta.alter_tables)) {
|
|
193
196
|
if (name in add_tables) {
|
|
194
197
|
applyToTable(add_tables[name], table);
|
|
198
|
+
continue;
|
|
195
199
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
+
const existing = alter_tables[name];
|
|
201
|
+
if (!existing) {
|
|
202
|
+
alter_tables[name] = table;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
for (const [colName, column] of Object.entries(table.add_columns)) {
|
|
206
|
+
existing.add_columns[colName] = column;
|
|
207
|
+
}
|
|
208
|
+
for (const colName of table.drop_columns) {
|
|
209
|
+
if (colName in existing.add_columns)
|
|
210
|
+
delete existing.add_columns[colName];
|
|
211
|
+
else
|
|
212
|
+
existing.drop_columns.push(colName);
|
|
213
|
+
}
|
|
214
|
+
for (const [colName, delta] of Object.entries(table.alter_columns)) {
|
|
215
|
+
if (colName in existing.add_columns) {
|
|
216
|
+
applyToColumn(existing.add_columns[colName], delta);
|
|
217
|
+
continue;
|
|
200
218
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
219
|
+
const existingCol = existing.alter_columns[colName];
|
|
220
|
+
if (!existingCol) {
|
|
221
|
+
existing.alter_columns[colName] = delta;
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if ('default' in delta)
|
|
225
|
+
existingCol.default = delta.default;
|
|
226
|
+
if ('type' in delta)
|
|
227
|
+
existingCol.type = delta.type;
|
|
228
|
+
existingCol.ops ||= [];
|
|
229
|
+
const { ops } = existingCol;
|
|
230
|
+
for (const op of delta.ops || []) {
|
|
231
|
+
if (ops.includes(op)) {
|
|
232
|
+
io.debug(`Ignoring duplicate operation whilst resolving delta for ${name}.${colName}`);
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
switch (op) {
|
|
236
|
+
case 'drop_default':
|
|
237
|
+
if ('default' in existingCol)
|
|
238
|
+
delete existingCol.default;
|
|
239
|
+
else
|
|
240
|
+
ops.push(op);
|
|
241
|
+
break;
|
|
242
|
+
case 'set_required':
|
|
243
|
+
case 'drop_required': {
|
|
244
|
+
const i = ops.indexOf(op == 'set_required' ? 'drop_required' : 'set_required');
|
|
245
|
+
if (i == -1)
|
|
246
|
+
ops.push(op);
|
|
247
|
+
else
|
|
248
|
+
ops.splice(i, 1);
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
206
252
|
}
|
|
207
253
|
}
|
|
208
|
-
else
|
|
209
|
-
alter_tables[name] = table;
|
|
210
254
|
}
|
|
211
255
|
for (const table of delta.drop_tables) {
|
|
212
256
|
if (table in add_tables)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axium/server",
|
|
3
|
-
"version": "0.39.
|
|
3
|
+
"version": "0.39.5",
|
|
4
4
|
"author": "James Prevett <axium@jamespre.dev>",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"clean": "rm -rf build .svelte-kit node_modules/{.vite,.vite-temp}"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@axium/client": ">=0.
|
|
50
|
+
"@axium/client": ">=0.19.0",
|
|
51
51
|
"@axium/core": ">=0.21.0",
|
|
52
52
|
"kysely": "^0.28.0",
|
|
53
53
|
"utilium": "^2.6.0",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { text } from '@axium/client';
|
|
3
|
+
import { closeOnBackGesture } from '@axium/client/attachments';
|
|
3
4
|
import { FormDialog, Icon, URLText } from '@axium/client/components';
|
|
4
5
|
import { fetchAPI } from '@axium/client/requests';
|
|
5
6
|
import '@axium/client/styles/list';
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
</div>
|
|
49
50
|
</FormDialog>
|
|
50
51
|
|
|
51
|
-
<dialog bind:this={createdUserDialog} id="created-user-verification">
|
|
52
|
+
<dialog bind:this={createdUserDialog} id="created-user-verification" {@attach closeOnBackGesture}>
|
|
52
53
|
<h3>{text('page.admin.users.created_title')}</h3>
|
|
53
54
|
|
|
54
55
|
<p>{text('page.admin.users.created_url')}</p>
|