rado 0.1.18 → 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/lib/Column.d.ts +3 -3
- package/dist/lib/Column.js +1 -1
- package/dist/lib/Formatter.js +10 -3
- package/dist/lib/Schema.js +5 -2
- package/dist/lib/Statement.d.ts +5 -1
- package/dist/lib/Statement.js +3 -1
- package/dist/sqlite/SqliteFunctions.d.ts +6 -0
- package/dist/sqlite/SqliteFunctions.js +139 -1
- package/dist/sqlite/SqliteSchema.js +1 -1
- package/package.json +1 -1
package/dist/lib/Column.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Expr, ExprData } from './Expr';
|
|
1
|
+
import { EV, Expr, ExprData } from './Expr';
|
|
2
2
|
export declare enum ColumnType {
|
|
3
3
|
String = "String",
|
|
4
4
|
Integer = "Integer",
|
|
@@ -10,7 +10,7 @@ interface PartialColumnData {
|
|
|
10
10
|
type: ColumnType;
|
|
11
11
|
name?: string;
|
|
12
12
|
nullable?: boolean;
|
|
13
|
-
defaultValue?:
|
|
13
|
+
defaultValue?: ExprData;
|
|
14
14
|
autoIncrement?: boolean;
|
|
15
15
|
primaryKey?: boolean;
|
|
16
16
|
unique?: boolean;
|
|
@@ -29,7 +29,7 @@ export declare class Column<T> {
|
|
|
29
29
|
primaryKey<K extends string>(): Column<Column.IsPrimary<T, K>>;
|
|
30
30
|
references(column: Expr<T>): Column<T>;
|
|
31
31
|
unique(): Column<T>;
|
|
32
|
-
defaultValue(value: T): Column<Column.IsOptional<T>>;
|
|
32
|
+
defaultValue(value: EV<T>): Column<Column.IsOptional<T>>;
|
|
33
33
|
}
|
|
34
34
|
export type PrimaryKey<T, K> = string extends K ? T : T & {
|
|
35
35
|
[Column.isPrimary]: K;
|
package/dist/lib/Column.js
CHANGED
|
@@ -31,7 +31,7 @@ var Column = class {
|
|
|
31
31
|
return new Column({ ...this.data, unique: true });
|
|
32
32
|
}
|
|
33
33
|
defaultValue(value) {
|
|
34
|
-
return new Column({ ...this.data, defaultValue: value });
|
|
34
|
+
return new Column({ ...this.data, defaultValue: ExprData.create(value) });
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
((Column2) => {
|
package/dist/lib/Formatter.js
CHANGED
|
@@ -167,8 +167,13 @@ var Formatter = class {
|
|
|
167
167
|
}
|
|
168
168
|
formatColumn(column) {
|
|
169
169
|
return identifier(column.name).add(this.formatType(column.type)).addIf(column.unique, "UNIQUE").addIf(column.autoIncrement, "AUTOINCREMENT").addIf(column.primaryKey, "PRIMARY KEY").addIf(!column.nullable, "NOT NULL").addIf(
|
|
170
|
-
column.defaultValue
|
|
171
|
-
raw("DEFAULT").
|
|
170
|
+
column.defaultValue,
|
|
171
|
+
() => raw("DEFAULT").addParenthesis(
|
|
172
|
+
this.formatExpr(column.defaultValue, {
|
|
173
|
+
formatAsJson: false,
|
|
174
|
+
forceInline: true
|
|
175
|
+
})
|
|
176
|
+
)
|
|
172
177
|
).addIf(column.references, () => {
|
|
173
178
|
return this.formatContraintReference(column.references);
|
|
174
179
|
});
|
|
@@ -205,8 +210,10 @@ var Formatter = class {
|
|
|
205
210
|
}
|
|
206
211
|
formatColumnValue(column, columnValue) {
|
|
207
212
|
const isNull = columnValue === void 0 || columnValue === null;
|
|
208
|
-
const isOptional = column.nullable || column.autoIncrement || column.primaryKey
|
|
213
|
+
const isOptional = column.nullable || column.autoIncrement || column.primaryKey;
|
|
209
214
|
if (isNull) {
|
|
215
|
+
if (column.defaultValue !== void 0)
|
|
216
|
+
return this.formatExpr(column.defaultValue, {});
|
|
210
217
|
if (!isOptional)
|
|
211
218
|
throw new TypeError(`Expected value for column ${column.name}`);
|
|
212
219
|
return raw("NULL");
|
package/dist/lib/Schema.js
CHANGED
|
@@ -10,6 +10,9 @@ var Schema;
|
|
|
10
10
|
return Query.Batch({ queries });
|
|
11
11
|
}
|
|
12
12
|
Schema2.create = create;
|
|
13
|
+
function removeLeadingWhitespace(str) {
|
|
14
|
+
return str.replace(/\n\s+/g, "\n");
|
|
15
|
+
}
|
|
13
16
|
function upgrade(formatter, local, schema) {
|
|
14
17
|
const columnNames = /* @__PURE__ */ new Set([
|
|
15
18
|
...Object.keys(local.columns),
|
|
@@ -25,7 +28,7 @@ var Schema;
|
|
|
25
28
|
res.push(Query.AlterTable({ table: schema, dropColumn: columnName }));
|
|
26
29
|
} else {
|
|
27
30
|
const [instruction] = formatter.formatColumn({ ...schemaCol, references: void 0 }).compile(formatter);
|
|
28
|
-
if (localInstruction !== instruction) {
|
|
31
|
+
if (removeLeadingWhitespace(localInstruction) !== removeLeadingWhitespace(instruction)) {
|
|
29
32
|
res.push(Query.AlterTable({ table: schema, alterColumn: schemaCol }));
|
|
30
33
|
}
|
|
31
34
|
}
|
|
@@ -45,7 +48,7 @@ var Schema;
|
|
|
45
48
|
const [instruction] = formatter.formatCreateIndex(
|
|
46
49
|
Query.CreateIndex({ table: schema, index: schemaIndex })
|
|
47
50
|
).compile(formatter);
|
|
48
|
-
if (localInstruction !== instruction) {
|
|
51
|
+
if (removeLeadingWhitespace(localInstruction) !== removeLeadingWhitespace(instruction)) {
|
|
49
52
|
res.push(Query.DropIndex({ table: schema, name: indexName }));
|
|
50
53
|
res.push(Query.CreateIndex({ table: schema, index: schemaIndex }));
|
|
51
54
|
}
|
package/dist/lib/Statement.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ declare class Token {
|
|
|
16
16
|
static Identifier(data: string): Token;
|
|
17
17
|
static Value(data: any): Token;
|
|
18
18
|
}
|
|
19
|
+
export interface CompileOptions {
|
|
20
|
+
formatInline?: boolean;
|
|
21
|
+
spaces?: number;
|
|
22
|
+
}
|
|
19
23
|
export declare class Statement {
|
|
20
24
|
tokens: Array<Token>;
|
|
21
25
|
constructor(tokens: Array<Token>);
|
|
@@ -30,7 +34,7 @@ export declare class Statement {
|
|
|
30
34
|
addIf(condition: any, addition: string | Statement | (() => string | Statement)): Statement;
|
|
31
35
|
indent(): Statement;
|
|
32
36
|
dedent(): Statement;
|
|
33
|
-
newline(): Statement;
|
|
37
|
+
newline(ignore?: boolean): Statement;
|
|
34
38
|
identifier(name: string): Statement;
|
|
35
39
|
addIdentifier(name: string): Statement;
|
|
36
40
|
value(value: any): Statement;
|
package/dist/lib/Statement.js
CHANGED
|
@@ -148,3 +148,9 @@ export type SqliteFunctions = {
|
|
|
148
148
|
julianday(timeValue: EV<any>, ...rest: Array<EV<string>>): Expr<string>;
|
|
149
149
|
strftime(format: EV<string>, timeValue: EV<any>, ...rest: Array<EV<string>>): Expr<string>;
|
|
150
150
|
};
|
|
151
|
+
export declare const match: (table: Table<any>, searchTerm: EV<string>) => Expr<boolean>, cast: {
|
|
152
|
+
(x: EV<any>, type: 'text'): Expr<string>;
|
|
153
|
+
(x: EV<any>, type: 'real'): Expr<number>;
|
|
154
|
+
(x: EV<any>, type: 'integer'): Expr<number>;
|
|
155
|
+
(x: EV<any>, type: 'numeric'): Expr<number>;
|
|
156
|
+
}, abs: (x: EV<number>) => Expr<number>, changes: () => Expr<number>, char: (...arg: Array<EV<number>>) => Expr<string>, coalesce: (x: EV<any>, y: EV<any>, ...rest: EV<any>) => Expr<any>, ifnull: <T>(x: EV<T>, y: EV<T>) => Expr<T>, iif: <T>(x: EV<boolean>, y: EV<T>, z: EV<T>) => Expr<T>, instr: (x: EV<string>, y: EV<string>) => Expr<number>, last_insert_rowid: () => Expr<number>, length: (x: EV<string>) => Expr<number>, likelihood: (x: EV<boolean>, y: number) => Expr<boolean>, likely: (x: EV<boolean>) => Expr<boolean>, lower: (x: EV<string>) => Expr<string>, ltrim: (x: EV<string>, y?: EV<string>) => Expr<string>, max: <T>(x: EV<T>, y: EV<T>, ...rest: EV<T>[]) => Expr<T>, min: <T>(x: EV<T>, y: EV<T>, ...rest: EV<T>[]) => Expr<T>, nullif: <T>(x: EV<T>, y: EV<T>) => Expr<T | null>, prnumberf: (format: string, ...rest: Array<Expr<any>>) => Expr<string>, quote: (x: EV<string>) => Expr<string>, random: () => Expr<number>, replace: (x: EV<string>, y: EV<string>, z: EV<string>) => Expr<string>, round: (x: EV<number>, y?: EV<number>) => Expr<number>, rtrim: (x: EV<string>, y?: EV<string>) => Expr<string>, sign: (x: EV<number>) => Expr<number>, soundex: (x: EV<string>) => Expr<string>, sqlite_version: () => Expr<string>, substr: (x: EV<string>, y: EV<number>, z?: EV<number>) => Expr<string>, total_changes: () => Expr<number>, trim: (x: EV<string>, Y: EV<string>) => Expr<string>, unicode: (x: EV<string>) => Expr<number>, unlikely: (x: EV<boolean>) => Expr<boolean>, upper: (x: EV<string>) => Expr<string>, avg: (x: Expr<number>) => Expr<number>, count: (x?: Expr<any>) => Expr<number>, group_concat: (x: EV<string>, y: EV<string>) => Expr<string>, sum: (x: EV<number>) => Expr<number>, acos: (x: EV<number>) => Expr<number>, acosh: (x: EV<number>) => Expr<number>, asin: (x: EV<number>) => Expr<number>, asinh: (x: EV<number>) => Expr<number>, atan: (x: EV<number>) => Expr<number>, atan2: (x: EV<number>, y: EV<number>) => Expr<number>, atanh: (x: EV<number>) => Expr<number>, ceil: (x: EV<number>) => Expr<number>, cos: (x: EV<number>) => Expr<number>, cosh: (x: EV<number>) => Expr<number>, degrees: (x: EV<number>) => Expr<number>, exp: (x: EV<number>) => Expr<number>, floor: (x: EV<number>) => Expr<number>, ln: (x: EV<number>) => Expr<number>, log: (x: EV<number>, y?: EV<number>) => Expr<number>, log2: (x: EV<number>) => Expr<number>, mod: (x: EV<number>, y: EV<number>) => Expr<number>, pi: (x: EV<number>) => Expr<number>, pow: (x: EV<number>, y: EV<number>) => Expr<number>, radians: (x: EV<number>) => Expr<number>, sin: (x: EV<number>) => Expr<number>, sinh: (x: EV<number>) => Expr<number>, sqrt: (x: EV<number>) => Expr<number>, tan: (x: EV<number>) => Expr<number>, tanh: (x: EV<number>) => Expr<number>, trunc: (x: EV<number>) => Expr<number>, date: (timeValue: EV<any>, ...rest: Array<EV<string>>) => Expr<string>, time: (timeValue: EV<any>, ...rest: Array<EV<string>>) => Expr<string>, datetime: (timeValue: EV<any>, ...rest: Array<EV<string>>) => Expr<string>, julianday: (timeValue: EV<any>, ...rest: Array<EV<string>>) => Expr<string>, strftime: (format: EV<string>, timeValue: EV<any>, ...rest: Array<EV<string>>) => Expr<string>;
|
|
@@ -1,6 +1,144 @@
|
|
|
1
1
|
// src/sqlite/SqliteFunctions.ts
|
|
2
2
|
import { Functions } from "../lib/Functions.js";
|
|
3
3
|
var SqliteFunctions = Functions;
|
|
4
|
+
var {
|
|
5
|
+
match,
|
|
6
|
+
cast,
|
|
7
|
+
abs,
|
|
8
|
+
changes,
|
|
9
|
+
char,
|
|
10
|
+
coalesce,
|
|
11
|
+
ifnull,
|
|
12
|
+
iif,
|
|
13
|
+
instr,
|
|
14
|
+
last_insert_rowid,
|
|
15
|
+
length,
|
|
16
|
+
likelihood,
|
|
17
|
+
likely,
|
|
18
|
+
lower,
|
|
19
|
+
ltrim,
|
|
20
|
+
max,
|
|
21
|
+
min,
|
|
22
|
+
nullif,
|
|
23
|
+
prnumberf,
|
|
24
|
+
quote,
|
|
25
|
+
random,
|
|
26
|
+
replace,
|
|
27
|
+
round,
|
|
28
|
+
rtrim,
|
|
29
|
+
sign,
|
|
30
|
+
soundex,
|
|
31
|
+
sqlite_version,
|
|
32
|
+
substr,
|
|
33
|
+
total_changes,
|
|
34
|
+
trim,
|
|
35
|
+
unicode,
|
|
36
|
+
unlikely,
|
|
37
|
+
upper,
|
|
38
|
+
avg,
|
|
39
|
+
count,
|
|
40
|
+
group_concat,
|
|
41
|
+
sum,
|
|
42
|
+
acos,
|
|
43
|
+
acosh,
|
|
44
|
+
asin,
|
|
45
|
+
asinh,
|
|
46
|
+
atan,
|
|
47
|
+
atan2,
|
|
48
|
+
atanh,
|
|
49
|
+
ceil,
|
|
50
|
+
cos,
|
|
51
|
+
cosh,
|
|
52
|
+
degrees,
|
|
53
|
+
exp,
|
|
54
|
+
floor,
|
|
55
|
+
ln,
|
|
56
|
+
log,
|
|
57
|
+
log2,
|
|
58
|
+
mod,
|
|
59
|
+
pi,
|
|
60
|
+
pow,
|
|
61
|
+
radians,
|
|
62
|
+
sin,
|
|
63
|
+
sinh,
|
|
64
|
+
sqrt,
|
|
65
|
+
tan,
|
|
66
|
+
tanh,
|
|
67
|
+
trunc,
|
|
68
|
+
date,
|
|
69
|
+
time,
|
|
70
|
+
datetime,
|
|
71
|
+
julianday,
|
|
72
|
+
strftime
|
|
73
|
+
} = SqliteFunctions;
|
|
4
74
|
export {
|
|
5
|
-
SqliteFunctions
|
|
75
|
+
SqliteFunctions,
|
|
76
|
+
abs,
|
|
77
|
+
acos,
|
|
78
|
+
acosh,
|
|
79
|
+
asin,
|
|
80
|
+
asinh,
|
|
81
|
+
atan,
|
|
82
|
+
atan2,
|
|
83
|
+
atanh,
|
|
84
|
+
avg,
|
|
85
|
+
cast,
|
|
86
|
+
ceil,
|
|
87
|
+
changes,
|
|
88
|
+
char,
|
|
89
|
+
coalesce,
|
|
90
|
+
cos,
|
|
91
|
+
cosh,
|
|
92
|
+
count,
|
|
93
|
+
date,
|
|
94
|
+
datetime,
|
|
95
|
+
degrees,
|
|
96
|
+
exp,
|
|
97
|
+
floor,
|
|
98
|
+
group_concat,
|
|
99
|
+
ifnull,
|
|
100
|
+
iif,
|
|
101
|
+
instr,
|
|
102
|
+
julianday,
|
|
103
|
+
last_insert_rowid,
|
|
104
|
+
length,
|
|
105
|
+
likelihood,
|
|
106
|
+
likely,
|
|
107
|
+
ln,
|
|
108
|
+
log,
|
|
109
|
+
log2,
|
|
110
|
+
lower,
|
|
111
|
+
ltrim,
|
|
112
|
+
match,
|
|
113
|
+
max,
|
|
114
|
+
min,
|
|
115
|
+
mod,
|
|
116
|
+
nullif,
|
|
117
|
+
pi,
|
|
118
|
+
pow,
|
|
119
|
+
prnumberf,
|
|
120
|
+
quote,
|
|
121
|
+
radians,
|
|
122
|
+
random,
|
|
123
|
+
replace,
|
|
124
|
+
round,
|
|
125
|
+
rtrim,
|
|
126
|
+
sign,
|
|
127
|
+
sin,
|
|
128
|
+
sinh,
|
|
129
|
+
soundex,
|
|
130
|
+
sqlite_version,
|
|
131
|
+
sqrt,
|
|
132
|
+
strftime,
|
|
133
|
+
substr,
|
|
134
|
+
sum,
|
|
135
|
+
tan,
|
|
136
|
+
tanh,
|
|
137
|
+
time,
|
|
138
|
+
total_changes,
|
|
139
|
+
trim,
|
|
140
|
+
trunc,
|
|
141
|
+
unicode,
|
|
142
|
+
unlikely,
|
|
143
|
+
upper
|
|
6
144
|
};
|
|
@@ -28,7 +28,7 @@ var SqliteSchema;
|
|
|
28
28
|
column.name,
|
|
29
29
|
identifier(column.name).add(column.type).addIf(column.pk === 1, "PRIMARY KEY").addIf(column.notnull === 1, "NOT NULL").addIf(
|
|
30
30
|
column.dflt_value !== null,
|
|
31
|
-
raw("DEFAULT").
|
|
31
|
+
raw("DEFAULT").addParenthesis(column.dflt_value)
|
|
32
32
|
).compile(formatter)[0]
|
|
33
33
|
];
|
|
34
34
|
}
|