@ignisia/sql 0.2.0 → 0.2.2
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/cjs/column/constants.js +101 -0
- package/dist/cjs/column/index.d.cts +42 -0
- package/dist/cjs/column/index.js +107 -0
- package/dist/cjs/column/types.d.cts +43 -0
- package/dist/cjs/column/types.js +4 -0
- package/dist/cjs/database/alter.d.cts +52 -0
- package/dist/cjs/database/alter.js +93 -0
- package/dist/cjs/database/column.d.cts +24 -0
- package/dist/cjs/database/column.js +37 -0
- package/dist/cjs/database/contract.d.cts +8 -0
- package/dist/cjs/database/contract.js +2 -0
- package/dist/cjs/database/index.d.cts +8 -0
- package/dist/cjs/database/index.js +94 -0
- package/dist/cjs/database/table.d.cts +21 -0
- package/dist/cjs/database/table.js +41 -0
- package/dist/cjs/database/types.d.cts +7 -0
- package/dist/cjs/database/types.js +2 -0
- package/dist/cjs/database/wrapper.d.cts +36 -0
- package/dist/cjs/database/wrapper.js +95 -0
- package/dist/cjs/index---zaMa69.d.cts +103 -0
- package/dist/cjs/index-CwiFQh0I.d.cts +358 -0
- package/dist/cjs/index.d.cts +10 -0
- package/dist/cjs/index.js +30 -0
- package/dist/cjs/migration/index.d.cts +30 -0
- package/dist/cjs/migration/index.js +50 -0
- package/dist/cjs/migration/runner.js +58 -0
- package/dist/cjs/migration/type.d.cts +19 -0
- package/dist/cjs/migration/type.js +2 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/query/builder.d.cts +14 -0
- package/dist/cjs/query/builder.js +71 -0
- package/dist/cjs/query/condition.d.cts +7 -0
- package/dist/cjs/query/condition.js +106 -0
- package/dist/cjs/query/constants.js +64 -0
- package/dist/cjs/query/contract.d.cts +7 -0
- package/dist/cjs/query/contract.js +2 -0
- package/dist/cjs/query/helper.d.cts +7 -0
- package/dist/cjs/query/helper.js +36 -0
- package/dist/cjs/query/index.d.cts +7 -0
- package/dist/cjs/query/index.js +197 -0
- package/dist/cjs/query/join.d.cts +16 -0
- package/dist/cjs/query/join.js +18 -0
- package/dist/cjs/query/sql.d.cts +17 -0
- package/dist/cjs/query/sql.js +104 -0
- package/dist/cjs/query/types.d.cts +7 -0
- package/dist/cjs/query/types.js +2 -0
- package/dist/cjs/query/utilities.d.cts +34 -0
- package/dist/cjs/query/utilities.js +184 -0
- package/dist/cjs/table/constants.js +8 -0
- package/dist/cjs/table/index.d.cts +7 -0
- package/dist/cjs/table/index.js +54 -0
- package/dist/cjs/table/types.d.cts +7 -0
- package/dist/cjs/table/types.js +2 -0
- package/dist/cjs/table/utilities.d.cts +7 -0
- package/dist/cjs/table/utilities.js +55 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utilities.js +21 -0
- package/dist/esm/column/constants.d.ts +97 -0
- package/dist/{chunk-G3LSCLIQ.js → esm/column/constants.js} +2 -7
- package/dist/{chunk-GY7R637S.js → esm/column/index.js} +3 -10
- package/dist/esm/column/types.js +1 -0
- package/dist/{chunk-V4OMHVJN.js → esm/database/alter.js} +2 -10
- package/dist/{chunk-JF7OSNH4.js → esm/database/column.js} +2 -8
- package/dist/esm/database/contract.js +1 -0
- package/dist/{chunk-UI7U54OT.js → esm/database/index.js} +7 -26
- package/dist/{chunk-OYM2PNYZ.js → esm/database/table.js} +2 -8
- package/dist/esm/database/types.js +1 -0
- package/dist/{chunk-HKTHKQLK.js → esm/database/wrapper.js} +6 -11
- package/dist/esm/index.js +5 -0
- package/dist/{chunk-CIWX3UCZ.js → esm/migration/index.js} +1 -3
- package/dist/esm/migration/runner.d.ts +3 -0
- package/dist/{migration → esm/migration}/runner.js +4 -16
- package/dist/esm/migration/type.js +1 -0
- package/dist/esm/query/builder.js +67 -0
- package/dist/esm/query/condition.js +98 -0
- package/dist/esm/query/constants.d.ts +63 -0
- package/dist/{chunk-62FKD35V.js → esm/query/constants.js} +1 -10
- package/dist/esm/query/contract.js +1 -0
- package/dist/esm/query/helper.js +31 -0
- package/dist/esm/query/index.js +196 -0
- package/dist/{chunk-FYSNJAGD.js → esm/query/join.js} +1 -3
- package/dist/esm/query/sql.js +100 -0
- package/dist/esm/query/types.js +1 -0
- package/dist/esm/query/utilities.js +176 -0
- package/dist/esm/table/constants.d.ts +7 -0
- package/dist/{chunk-GLOHF5CP.js → esm/table/constants.js} +1 -3
- package/dist/{chunk-KVCIOW7L.js → esm/table/index.js} +3 -9
- package/dist/esm/table/types.js +1 -0
- package/dist/{chunk-WVJGTZFI.js → esm/table/utilities.js} +2 -11
- package/dist/esm/types.d.ts +3 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utilities.d.ts +4 -0
- package/dist/{chunk-Y7FSRHH3.js → esm/utilities.js} +1 -4
- package/package.json +62 -4
- package/dist/chunk-EIUC7HJS.js +0 -686
- package/dist/column/constants.js +0 -9
- package/dist/column/index.js +0 -8
- package/dist/column/types.js +0 -2
- package/dist/database/alter.js +0 -15
- package/dist/database/column.js +0 -11
- package/dist/database/contract.js +0 -0
- package/dist/database/index.js +0 -19
- package/dist/database/table.js +0 -19
- package/dist/database/types.js +0 -0
- package/dist/database/wrapper.js +0 -9
- package/dist/index.js +0 -32
- package/dist/migration/index.js +0 -6
- package/dist/migration/type.js +0 -0
- package/dist/query/builder.js +0 -16
- package/dist/query/condition.js +0 -24
- package/dist/query/constants.js +0 -20
- package/dist/query/contract.js +0 -0
- package/dist/query/helper.js +0 -18
- package/dist/query/index.js +0 -10
- package/dist/query/join.js +0 -6
- package/dist/query/sql.js +0 -16
- package/dist/query/types.js +0 -0
- package/dist/query/utilities.js +0 -24
- package/dist/table/constants.js +0 -6
- package/dist/table/index.js +0 -14
- package/dist/table/types.js +0 -0
- package/dist/table/utilities.js +0 -15
- package/dist/types.js +0 -0
- package/dist/utilities.js +0 -8
- /package/dist/{column/constants.d.ts → cjs/column/constants.d.cts} +0 -0
- /package/dist/{migration/runner.d.ts → cjs/migration/runner.d.cts} +0 -0
- /package/dist/{query/constants.d.ts → cjs/query/constants.d.cts} +0 -0
- /package/dist/{table/constants.d.ts → cjs/table/constants.d.cts} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.cts} +0 -0
- /package/dist/{utilities.d.ts → cjs/utilities.d.cts} +0 -0
- /package/dist/{column → esm/column}/index.d.ts +0 -0
- /package/dist/{column → esm/column}/types.d.ts +0 -0
- /package/dist/{database → esm/database}/alter.d.ts +0 -0
- /package/dist/{database → esm/database}/column.d.ts +0 -0
- /package/dist/{database → esm/database}/contract.d.ts +0 -0
- /package/dist/{database → esm/database}/index.d.ts +0 -0
- /package/dist/{database → esm/database}/table.d.ts +0 -0
- /package/dist/{database → esm/database}/types.d.ts +0 -0
- /package/dist/{database → esm/database}/wrapper.d.ts +0 -0
- /package/dist/{index-DFrpzXEn.d.ts → esm/index-DFrpzXEn.d.ts} +0 -0
- /package/dist/{index-FMT0YEO7.d.ts → esm/index-FMT0YEO7.d.ts} +0 -0
- /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
- /package/dist/{migration → esm/migration}/index.d.ts +0 -0
- /package/dist/{migration → esm/migration}/type.d.ts +0 -0
- /package/dist/{query → esm/query}/builder.d.ts +0 -0
- /package/dist/{query → esm/query}/condition.d.ts +0 -0
- /package/dist/{query → esm/query}/contract.d.ts +0 -0
- /package/dist/{query → esm/query}/helper.d.ts +0 -0
- /package/dist/{query → esm/query}/index.d.ts +0 -0
- /package/dist/{query → esm/query}/join.d.ts +0 -0
- /package/dist/{query → esm/query}/sql.d.ts +0 -0
- /package/dist/{query → esm/query}/types.d.ts +0 -0
- /package/dist/{query → esm/query}/utilities.d.ts +0 -0
- /package/dist/{table → esm/table}/index.d.ts +0 -0
- /package/dist/{table → esm/table}/types.d.ts +0 -0
- /package/dist/{table → esm/table}/utilities.d.ts +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants = require('../table/constants');
|
|
4
|
+
|
|
5
|
+
const AcceptedColumnTypes = {
|
|
6
|
+
INTEGER: "INTEGER",
|
|
7
|
+
STRING: "STRING",
|
|
8
|
+
BOOLEAN: "BOOLEAN",
|
|
9
|
+
DATE: "DATE",
|
|
10
|
+
FLOAT: "FLOAT",
|
|
11
|
+
DECIMAL: "DECIMAL",
|
|
12
|
+
BIGINT: "BIGINT",
|
|
13
|
+
TEXT: "TEXT",
|
|
14
|
+
BLOB: "BLOB",
|
|
15
|
+
JSON: "JSON",
|
|
16
|
+
VARCHAR: "VARCHAR",
|
|
17
|
+
TIME: "TIME",
|
|
18
|
+
TIMESTAMP: "TIMESTAMP",
|
|
19
|
+
DOUBLE: "DOUBLE",
|
|
20
|
+
DATETIME: "DATETIME",
|
|
21
|
+
DATEONLY: "DATEONLY",
|
|
22
|
+
ENUM: "ENUM",
|
|
23
|
+
SERIAL: "SERIAL"
|
|
24
|
+
};
|
|
25
|
+
const ColumnTypeMapping = {
|
|
26
|
+
[AcceptedColumnTypes.INTEGER]: {
|
|
27
|
+
[constants.Dialect.SQLITE]: "INTEGER",
|
|
28
|
+
[constants.Dialect.POSTGRES]: "INTEGER"
|
|
29
|
+
},
|
|
30
|
+
[AcceptedColumnTypes.STRING]: {
|
|
31
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
32
|
+
[constants.Dialect.POSTGRES]: "VARCHAR"
|
|
33
|
+
},
|
|
34
|
+
[AcceptedColumnTypes.BOOLEAN]: {
|
|
35
|
+
[constants.Dialect.SQLITE]: "INTEGER",
|
|
36
|
+
[constants.Dialect.POSTGRES]: "BOOLEAN"
|
|
37
|
+
},
|
|
38
|
+
[AcceptedColumnTypes.DATE]: {
|
|
39
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
40
|
+
[constants.Dialect.POSTGRES]: "DATE"
|
|
41
|
+
},
|
|
42
|
+
[AcceptedColumnTypes.FLOAT]: {
|
|
43
|
+
[constants.Dialect.SQLITE]: "REAL",
|
|
44
|
+
[constants.Dialect.POSTGRES]: "FLOAT"
|
|
45
|
+
},
|
|
46
|
+
[AcceptedColumnTypes.DECIMAL]: {
|
|
47
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
48
|
+
[constants.Dialect.POSTGRES]: "DECIMAL"
|
|
49
|
+
},
|
|
50
|
+
[AcceptedColumnTypes.BIGINT]: {
|
|
51
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
52
|
+
[constants.Dialect.POSTGRES]: "BIGINT"
|
|
53
|
+
},
|
|
54
|
+
[AcceptedColumnTypes.TEXT]: {
|
|
55
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
56
|
+
[constants.Dialect.POSTGRES]: "TEXT"
|
|
57
|
+
},
|
|
58
|
+
[AcceptedColumnTypes.BLOB]: {
|
|
59
|
+
[constants.Dialect.SQLITE]: "BLOB",
|
|
60
|
+
[constants.Dialect.POSTGRES]: "BYTEA"
|
|
61
|
+
},
|
|
62
|
+
[AcceptedColumnTypes.JSON]: {
|
|
63
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
64
|
+
[constants.Dialect.POSTGRES]: "JSONB"
|
|
65
|
+
},
|
|
66
|
+
[AcceptedColumnTypes.VARCHAR]: {
|
|
67
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
68
|
+
[constants.Dialect.POSTGRES]: "VARCHAR"
|
|
69
|
+
},
|
|
70
|
+
[AcceptedColumnTypes.TIME]: {
|
|
71
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
72
|
+
[constants.Dialect.POSTGRES]: "TIME"
|
|
73
|
+
},
|
|
74
|
+
[AcceptedColumnTypes.TIMESTAMP]: {
|
|
75
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
76
|
+
[constants.Dialect.POSTGRES]: "TIMESTAMP"
|
|
77
|
+
},
|
|
78
|
+
[AcceptedColumnTypes.DOUBLE]: {
|
|
79
|
+
[constants.Dialect.SQLITE]: "REAL",
|
|
80
|
+
[constants.Dialect.POSTGRES]: "DOUBLE PRECISION"
|
|
81
|
+
},
|
|
82
|
+
[AcceptedColumnTypes.DATETIME]: {
|
|
83
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
84
|
+
[constants.Dialect.POSTGRES]: "TIMESTAMP"
|
|
85
|
+
},
|
|
86
|
+
[AcceptedColumnTypes.DATEONLY]: {
|
|
87
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
88
|
+
[constants.Dialect.POSTGRES]: "DATE"
|
|
89
|
+
},
|
|
90
|
+
[AcceptedColumnTypes.ENUM]: {
|
|
91
|
+
[constants.Dialect.SQLITE]: "TEXT",
|
|
92
|
+
[constants.Dialect.POSTGRES]: "TEXT"
|
|
93
|
+
},
|
|
94
|
+
[AcceptedColumnTypes.SERIAL]: {
|
|
95
|
+
[constants.Dialect.SQLITE]: "INTEGER AUTOINCREMENT",
|
|
96
|
+
[constants.Dialect.POSTGRES]: "SERIAL"
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
exports.AcceptedColumnTypes = AcceptedColumnTypes;
|
|
101
|
+
exports.ColumnTypeMapping = ColumnTypeMapping;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Dialect } from '../table/constants.cjs';
|
|
2
|
+
import { AcceptedColumnTypes } from './constants.cjs';
|
|
3
|
+
import { ColumnOptions, AcceptedColumnTypeMap, EnumOptions, ColumnDefinition, ValueSelector } from './types.cjs';
|
|
4
|
+
|
|
5
|
+
declare class Column<Type extends AcceptedColumnTypes = AcceptedColumnTypes, Values extends number | readonly string[] = Type extends typeof AcceptedColumnTypes.ENUM ? readonly string[] : number, Options extends ColumnOptions<Type, Values> = ColumnOptions<Type, Values>, ColumnValue extends AcceptedColumnTypeMap[Options['type']] = AcceptedColumnTypeMap[Options['type']], Value extends Options extends EnumOptions<infer Value> ? Value[number] : ColumnValue = ColumnValue, Definition extends Partial<ColumnDefinition<Value, Dialect>> = NonNullable<unknown>> {
|
|
6
|
+
readonly definition: Definition;
|
|
7
|
+
readonly type: Options['type'];
|
|
8
|
+
readonly length: number | null;
|
|
9
|
+
readonly enums: readonly Value[];
|
|
10
|
+
readonly _output: ValueSelector<Definition, Value>;
|
|
11
|
+
protected constructor(options: Options);
|
|
12
|
+
static define<Type extends AcceptedColumnTypes = AcceptedColumnTypes, Values extends number | readonly string[] = number | readonly string[], Options extends ColumnOptions<Type, Values> = ColumnOptions<Type, Values>>(options: Options): Column<AcceptedColumnTypes, number | readonly string[], Options, AcceptedColumnTypeMap[Options["type"]], Options extends EnumOptions<infer Value extends readonly string[]> ? Value[number] : AcceptedColumnTypeMap[Options["type"]], {}>;
|
|
13
|
+
autoIncrement(): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
14
|
+
autoIncrement: true;
|
|
15
|
+
}>;
|
|
16
|
+
primaryKey(): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
17
|
+
primaryKey: true;
|
|
18
|
+
}>;
|
|
19
|
+
notNull(): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
20
|
+
notNull: true;
|
|
21
|
+
}>;
|
|
22
|
+
unique(): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
23
|
+
unique: true;
|
|
24
|
+
}>;
|
|
25
|
+
comment<Comment extends string | null>(value: Comment): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
26
|
+
comment: Comment;
|
|
27
|
+
}>;
|
|
28
|
+
default<FinalValue extends ValueSelector<Definition, Value>>(value: FinalValue): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
29
|
+
default: FinalValue;
|
|
30
|
+
}>;
|
|
31
|
+
dialect<DbDialect extends Dialect>(dialect: DbDialect): Column<Type, Values, Options, ColumnValue, Value, Definition & {
|
|
32
|
+
dialect: DbDialect;
|
|
33
|
+
}>;
|
|
34
|
+
toQuery(): {
|
|
35
|
+
query: string;
|
|
36
|
+
params: never[];
|
|
37
|
+
};
|
|
38
|
+
toString(): string;
|
|
39
|
+
infer(): this['_output'];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { Column };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants$1 = require('../table/constants');
|
|
4
|
+
var constants = require('./constants');
|
|
5
|
+
|
|
6
|
+
class Column {
|
|
7
|
+
definition;
|
|
8
|
+
type;
|
|
9
|
+
length;
|
|
10
|
+
enums;
|
|
11
|
+
_output;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.type = options.type;
|
|
14
|
+
this.enums = [];
|
|
15
|
+
this.length = null;
|
|
16
|
+
if ("length" in options) {
|
|
17
|
+
this.length = options.length;
|
|
18
|
+
}
|
|
19
|
+
if ("values" in options) {
|
|
20
|
+
this.enums = options.values;
|
|
21
|
+
}
|
|
22
|
+
this.definition = {
|
|
23
|
+
autoIncrement: false,
|
|
24
|
+
primaryKey: false,
|
|
25
|
+
notNull: false,
|
|
26
|
+
unique: false,
|
|
27
|
+
comment: null,
|
|
28
|
+
default: void 0
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static define(options) {
|
|
32
|
+
return new Column(options);
|
|
33
|
+
}
|
|
34
|
+
autoIncrement() {
|
|
35
|
+
this.definition.autoIncrement = true;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
primaryKey() {
|
|
39
|
+
this.definition.primaryKey = true;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
notNull() {
|
|
43
|
+
this.definition.notNull = true;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
unique() {
|
|
47
|
+
this.definition.unique = true;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
comment(value) {
|
|
51
|
+
this.definition.comment = value;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
default(value) {
|
|
55
|
+
this.definition.default = value;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
dialect(dialect) {
|
|
59
|
+
this.definition.dialect = dialect;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
toQuery() {
|
|
63
|
+
if (!this.definition.dialect) {
|
|
64
|
+
throw new Error("No DB Dialect defined");
|
|
65
|
+
}
|
|
66
|
+
const correctType = constants.ColumnTypeMapping[this.type][this.definition.dialect];
|
|
67
|
+
let sql = correctType + (this.length ? `(${this.length})` : "");
|
|
68
|
+
if (this.definition.primaryKey) {
|
|
69
|
+
sql += " PRIMARY KEY";
|
|
70
|
+
}
|
|
71
|
+
if (this.definition.autoIncrement || this.type === constants.AcceptedColumnTypes.SERIAL) {
|
|
72
|
+
const isPrimaryKey = !!this.definition.primaryKey;
|
|
73
|
+
if (this.definition.dialect === constants$1.Dialect.POSTGRES) {
|
|
74
|
+
sql = `SERIAL${isPrimaryKey ? " PRIMARY KEY" : ""}`;
|
|
75
|
+
} else {
|
|
76
|
+
if (this.type !== constants.AcceptedColumnTypes.SERIAL) {
|
|
77
|
+
sql += " AUTOINCREMENT";
|
|
78
|
+
} else {
|
|
79
|
+
const sqls = ["INTEGER", "PRIMARY KEY", "AUTOINCREMENT"];
|
|
80
|
+
if (!isPrimaryKey) sqls.splice(1, 1);
|
|
81
|
+
sql = sqls.join(" ");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (this.definition.notNull) {
|
|
86
|
+
sql += " NOT NULL";
|
|
87
|
+
}
|
|
88
|
+
if (this.definition.unique) {
|
|
89
|
+
sql += " UNIQUE";
|
|
90
|
+
}
|
|
91
|
+
if (this.definition.default !== void 0) {
|
|
92
|
+
const value = this.definition.default;
|
|
93
|
+
const isString = typeof this.definition.default === "string";
|
|
94
|
+
const finalValue = isString ? `'${value}'` : value;
|
|
95
|
+
sql += ` DEFAULT ${finalValue}`;
|
|
96
|
+
}
|
|
97
|
+
return { query: sql, params: [] };
|
|
98
|
+
}
|
|
99
|
+
toString() {
|
|
100
|
+
return this.toQuery().query;
|
|
101
|
+
}
|
|
102
|
+
infer() {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
exports.Column = Column;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Dialect } from '../table/constants.cjs';
|
|
2
|
+
import { AcceptedColumnTypes } from './constants.cjs';
|
|
3
|
+
|
|
4
|
+
interface ColumnDefinition<T, U extends Dialect | null = null> {
|
|
5
|
+
primaryKey: boolean;
|
|
6
|
+
autoIncrement: boolean;
|
|
7
|
+
notNull: boolean;
|
|
8
|
+
unique: boolean;
|
|
9
|
+
comment: string | null;
|
|
10
|
+
default: T | undefined;
|
|
11
|
+
dialect: U | null;
|
|
12
|
+
}
|
|
13
|
+
type ValueSelector<Definition extends Partial<ColumnDefinition<Value, Dialect>> | ColumnDefinition<Value, Dialect>, Value> = Definition['notNull'] extends true ? Value | (string & {}) : Value | (string & {}) | null;
|
|
14
|
+
type AcceptedColumnTypeMap<T = any> = {
|
|
15
|
+
[K in AcceptedColumnTypes]: K extends typeof AcceptedColumnTypes.INTEGER | typeof AcceptedColumnTypes.BIGINT | typeof AcceptedColumnTypes.FLOAT | typeof AcceptedColumnTypes.DOUBLE | typeof AcceptedColumnTypes.DECIMAL | typeof AcceptedColumnTypes.SERIAL ? number : K extends typeof AcceptedColumnTypes.STRING | typeof AcceptedColumnTypes.TEXT | typeof AcceptedColumnTypes.VARCHAR ? string : K extends typeof AcceptedColumnTypes.BOOLEAN ? boolean : K extends typeof AcceptedColumnTypes.DATE | typeof AcceptedColumnTypes.TIME | typeof AcceptedColumnTypes.TIMESTAMP | typeof AcceptedColumnTypes.DATETIME | typeof AcceptedColumnTypes.DATEONLY ? Date : K extends typeof AcceptedColumnTypes.JSON ? object : K extends typeof AcceptedColumnTypes.BLOB ? Buffer : K extends typeof AcceptedColumnTypes.ENUM ? T[number][] : never;
|
|
16
|
+
};
|
|
17
|
+
type DateOptions = {
|
|
18
|
+
type: typeof AcceptedColumnTypes.DATE | typeof AcceptedColumnTypes.TIME | typeof AcceptedColumnTypes.TIMESTAMP | typeof AcceptedColumnTypes.DATETIME | typeof AcceptedColumnTypes.DATEONLY;
|
|
19
|
+
};
|
|
20
|
+
type NumberOptions<Length extends number = number> = {
|
|
21
|
+
type: typeof AcceptedColumnTypes.INTEGER | typeof AcceptedColumnTypes.BIGINT | typeof AcceptedColumnTypes.FLOAT | typeof AcceptedColumnTypes.DECIMAL | typeof AcceptedColumnTypes.DOUBLE | typeof AcceptedColumnTypes.SERIAL;
|
|
22
|
+
length?: Length;
|
|
23
|
+
};
|
|
24
|
+
type StringOptions<Length extends number = number> = {
|
|
25
|
+
type: typeof AcceptedColumnTypes.STRING | typeof AcceptedColumnTypes.VARCHAR | typeof AcceptedColumnTypes.TEXT;
|
|
26
|
+
length?: Length;
|
|
27
|
+
};
|
|
28
|
+
type EnumOptions<Values extends readonly string[]> = {
|
|
29
|
+
type: typeof AcceptedColumnTypes.ENUM;
|
|
30
|
+
values: Values;
|
|
31
|
+
};
|
|
32
|
+
type BooleanOptions = {
|
|
33
|
+
type: typeof AcceptedColumnTypes.BOOLEAN;
|
|
34
|
+
};
|
|
35
|
+
type JsonOptions = {
|
|
36
|
+
type: typeof AcceptedColumnTypes.JSON;
|
|
37
|
+
};
|
|
38
|
+
type BlobOptions = {
|
|
39
|
+
type: typeof AcceptedColumnTypes.BLOB;
|
|
40
|
+
};
|
|
41
|
+
type ColumnOptions<Type extends AcceptedColumnTypes, U extends number | readonly string[]> = Type extends typeof AcceptedColumnTypes.BLOB ? BlobOptions : Type extends typeof AcceptedColumnTypes.JSON ? JsonOptions : Type extends typeof AcceptedColumnTypes.BOOLEAN ? BooleanOptions : Type extends typeof AcceptedColumnTypes.DATE | typeof AcceptedColumnTypes.TIME | typeof AcceptedColumnTypes.TIMESTAMP | typeof AcceptedColumnTypes.DATETIME | typeof AcceptedColumnTypes.DATEONLY ? DateOptions : Type extends typeof AcceptedColumnTypes.STRING | typeof AcceptedColumnTypes.VARCHAR | typeof AcceptedColumnTypes.TEXT ? U extends number ? StringOptions<U> : StringOptions : Type extends typeof AcceptedColumnTypes.INTEGER | typeof AcceptedColumnTypes.BIGINT | typeof AcceptedColumnTypes.FLOAT | typeof AcceptedColumnTypes.DECIMAL | typeof AcceptedColumnTypes.DOUBLE | typeof AcceptedColumnTypes.SERIAL ? U extends number ? NumberOptions<U> : NumberOptions : Type extends typeof AcceptedColumnTypes.ENUM ? U extends readonly string[] ? EnumOptions<U> : never : never;
|
|
42
|
+
|
|
43
|
+
export type { AcceptedColumnTypeMap, BlobOptions, BooleanOptions, ColumnDefinition, ColumnOptions, DateOptions, EnumOptions, JsonOptions, NumberOptions, StringOptions, ValueSelector };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { D as Database } from '../index---zaMa69.cjs';
|
|
2
|
+
import { Column } from '../column/index.cjs';
|
|
3
|
+
import { AcceptedColumnTypes } from '../column/constants.cjs';
|
|
4
|
+
import { T as Table, D as DatabaseDefinition } from '../index-CwiFQh0I.cjs';
|
|
5
|
+
import { Dialect } from '../table/constants.cjs';
|
|
6
|
+
import '../query/constants.cjs';
|
|
7
|
+
import '../column/types.cjs';
|
|
8
|
+
import '../types.cjs';
|
|
9
|
+
|
|
10
|
+
declare function alterColumnType<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), Type extends Omit<AcceptedColumnTypes, typeof AcceptedColumnTypes.ENUM>, NewTables extends Omit<Tables, TableName> & {
|
|
11
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
|
|
12
|
+
[K in ColName]: Tables[TableName]['columns'][ColName] & {
|
|
13
|
+
type: Type;
|
|
14
|
+
};
|
|
15
|
+
}>;
|
|
16
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, newType: Type): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
17
|
+
declare function setColumnDefault<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), DefaultValue extends string | number | boolean | null, NewTables extends Omit<Tables, TableName> & {
|
|
18
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
|
|
19
|
+
[K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
|
|
20
|
+
definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'default'> & {
|
|
21
|
+
default: DefaultValue;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, value: DefaultValue): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
26
|
+
declare function dropColumnDefault<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
27
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
|
|
28
|
+
[K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
|
|
29
|
+
definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'default'> & {
|
|
30
|
+
default: undefined;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
35
|
+
declare function setColumnNotNull<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
36
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
|
|
37
|
+
[K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
|
|
38
|
+
definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'notNull'> & {
|
|
39
|
+
notNull: true;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}>;
|
|
43
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
44
|
+
declare function dropColumnNotNull<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
45
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
|
|
46
|
+
[K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
|
|
47
|
+
definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'notNull'>;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
51
|
+
|
|
52
|
+
export { alterColumnType, dropColumnDefault, dropColumnNotNull, setColumnDefault, setColumnNotNull };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants = require('../table/constants');
|
|
4
|
+
|
|
5
|
+
async function alterColumnType(tableName, columnName, newType) {
|
|
6
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
7
|
+
throw new Error("SQLite does not support ALTER COLUMN TYPE directly.");
|
|
8
|
+
}
|
|
9
|
+
await this.client.exec(
|
|
10
|
+
`ALTER TABLE ${tableName} ALTER COLUMN ${columnName} TYPE ${newType}`
|
|
11
|
+
);
|
|
12
|
+
if (!this.tables[tableName]) return this;
|
|
13
|
+
this.tables[tableName].columns[columnName].type = newType;
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
async function setColumnDefault(tableName, columnName, value) {
|
|
17
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
18
|
+
throw new Error("SQLite does not support ALTER COLUMN DEFAULT directly.");
|
|
19
|
+
}
|
|
20
|
+
await this.client.exec(
|
|
21
|
+
`ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DEFAULT ${value}`
|
|
22
|
+
);
|
|
23
|
+
if (!this.tables[tableName]) return this;
|
|
24
|
+
if (
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
!this.tables[tableName].columns[columnName].definition
|
|
27
|
+
) {
|
|
28
|
+
this.tables[tableName].columns[columnName].definition = {};
|
|
29
|
+
}
|
|
30
|
+
this.tables[tableName].columns[columnName].definition.default = value;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
async function dropColumnDefault(tableName, columnName) {
|
|
34
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
35
|
+
throw new Error("SQLite does not support DROP DEFAULT directly.");
|
|
36
|
+
}
|
|
37
|
+
await this.client.exec(
|
|
38
|
+
`ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP DEFAULT`
|
|
39
|
+
);
|
|
40
|
+
if (!this.tables[tableName]) return this;
|
|
41
|
+
if (
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
!this.tables[tableName].columns[columnName].definition
|
|
44
|
+
) {
|
|
45
|
+
this.tables[tableName].columns[columnName].definition = {};
|
|
46
|
+
}
|
|
47
|
+
delete this.tables[tableName].columns[columnName].definition.default;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
async function setColumnNotNull(tableName, columnName) {
|
|
51
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
"SQLite does not support SET NOT NULL (requires table rebuild)"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
await this.client.exec(
|
|
57
|
+
`ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET NOT NULL`
|
|
58
|
+
);
|
|
59
|
+
if (!this.tables[tableName]) return this;
|
|
60
|
+
if (
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
!this.tables[tableName].columns[columnName].definition
|
|
63
|
+
) {
|
|
64
|
+
this.tables[tableName].columns[columnName].definition = {};
|
|
65
|
+
}
|
|
66
|
+
this.tables[tableName].columns[columnName].definition.notNull = true;
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
async function dropColumnNotNull(tableName, columnName) {
|
|
70
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
"SQLite does not support DROP NOT NULL (requires table rebuild)"
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
await this.client.exec(
|
|
76
|
+
`ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP NOT NULL`
|
|
77
|
+
);
|
|
78
|
+
if (!this.tables[tableName]) return this;
|
|
79
|
+
if (
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
|
+
!this.tables[tableName].columns[columnName].definition
|
|
82
|
+
) {
|
|
83
|
+
this.tables[tableName].columns[columnName].definition = {};
|
|
84
|
+
}
|
|
85
|
+
this.tables[tableName].columns[columnName].definition.notNull = null;
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
exports.alterColumnType = alterColumnType;
|
|
90
|
+
exports.dropColumnDefault = dropColumnDefault;
|
|
91
|
+
exports.dropColumnNotNull = dropColumnNotNull;
|
|
92
|
+
exports.setColumnDefault = setColumnDefault;
|
|
93
|
+
exports.setColumnNotNull = setColumnNotNull;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { D as Database } from '../index---zaMa69.cjs';
|
|
2
|
+
import { Column } from '../column/index.cjs';
|
|
3
|
+
import { T as Table, D as DatabaseDefinition } from '../index-CwiFQh0I.cjs';
|
|
4
|
+
import { Dialect } from '../table/constants.cjs';
|
|
5
|
+
import '../query/constants.cjs';
|
|
6
|
+
import '../column/constants.cjs';
|
|
7
|
+
import '../column/types.cjs';
|
|
8
|
+
import '../types.cjs';
|
|
9
|
+
|
|
10
|
+
declare function addColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
11
|
+
[K in TableName]: Table<TableName, Tables[TableName]['columns'] & {
|
|
12
|
+
[K in ColName]: Column;
|
|
13
|
+
}>;
|
|
14
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, column: Column): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
15
|
+
declare function renameColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), OldName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
16
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], OldName> & {
|
|
17
|
+
[K in NewName]: Tables[TableName]['columns'][OldName];
|
|
18
|
+
}>;
|
|
19
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, oldName: OldName, newName: NewName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
20
|
+
declare function dropColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
|
|
21
|
+
[K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName>>;
|
|
22
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
|
|
23
|
+
|
|
24
|
+
export { addColumn, dropColumn, renameColumn };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants = require('../table/constants');
|
|
4
|
+
|
|
5
|
+
async function addColumn(tableName, columnName, column) {
|
|
6
|
+
await this.client.exec(
|
|
7
|
+
`ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${column.toString()};`
|
|
8
|
+
);
|
|
9
|
+
if (!this.tables[tableName]) return this;
|
|
10
|
+
this.tables[tableName].columns[columnName] = column;
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
async function renameColumn(tableName, oldName, newName) {
|
|
14
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
15
|
+
throw new Error("SQLite does not support RENAME COLUMN natively.");
|
|
16
|
+
}
|
|
17
|
+
await this.client.exec(
|
|
18
|
+
`ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName};`
|
|
19
|
+
);
|
|
20
|
+
if (!this.tables[tableName]) return this;
|
|
21
|
+
this.tables[tableName].columns[newName] = this.tables[tableName].columns[oldName];
|
|
22
|
+
delete this.tables[tableName].columns[oldName];
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
async function dropColumn(tableName, columnName) {
|
|
26
|
+
if (this.dialect === constants.Dialect.SQLITE) {
|
|
27
|
+
throw new Error("SQLite does not support DROP COLUMN natively.");
|
|
28
|
+
}
|
|
29
|
+
await this.client.exec(`ALTER TABLE ${tableName} DROP COLUMN ${columnName};`);
|
|
30
|
+
if (!this.tables[tableName]) return this;
|
|
31
|
+
delete this.tables[tableName].columns[columnName];
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exports.addColumn = addColumn;
|
|
36
|
+
exports.dropColumn = dropColumn;
|
|
37
|
+
exports.renameColumn = renameColumn;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index---zaMa69.cjs';
|
|
2
|
+
import '../column/index.cjs';
|
|
3
|
+
import '../column/constants.cjs';
|
|
4
|
+
import '../index-CwiFQh0I.cjs';
|
|
5
|
+
import '../table/constants.cjs';
|
|
6
|
+
import '../query/constants.cjs';
|
|
7
|
+
import '../column/types.cjs';
|
|
8
|
+
import '../types.cjs';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '../column/index.cjs';
|
|
2
|
+
import '../index-CwiFQh0I.cjs';
|
|
3
|
+
import '../query/constants.cjs';
|
|
4
|
+
import '../table/constants.cjs';
|
|
5
|
+
export { D as Database } from '../index---zaMa69.cjs';
|
|
6
|
+
import '../column/constants.cjs';
|
|
7
|
+
import '../column/types.cjs';
|
|
8
|
+
import '../types.cjs';
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('../table');
|
|
4
|
+
var constants = require('../table/constants');
|
|
5
|
+
var alter = require('./alter');
|
|
6
|
+
var column = require('./column');
|
|
7
|
+
var table = require('./table');
|
|
8
|
+
var wrapper = require('./wrapper');
|
|
9
|
+
|
|
10
|
+
class Database {
|
|
11
|
+
hooks;
|
|
12
|
+
dialect;
|
|
13
|
+
defintion;
|
|
14
|
+
tables;
|
|
15
|
+
client;
|
|
16
|
+
createTable;
|
|
17
|
+
renameTable;
|
|
18
|
+
dropTable;
|
|
19
|
+
addColumn;
|
|
20
|
+
renameColumn;
|
|
21
|
+
dropColumn;
|
|
22
|
+
alterColumnType;
|
|
23
|
+
setColumnDefault;
|
|
24
|
+
dropColumnDefault;
|
|
25
|
+
setColumnNotNull;
|
|
26
|
+
dropColumnNotNull;
|
|
27
|
+
constructor(options) {
|
|
28
|
+
this.hooks = {};
|
|
29
|
+
this.dialect = options.dialect;
|
|
30
|
+
this.tables = options.tables ?? {};
|
|
31
|
+
this.defintion = {
|
|
32
|
+
dialect: options.dialect,
|
|
33
|
+
config: options.config
|
|
34
|
+
};
|
|
35
|
+
this.client = options.dialect === constants.Dialect.POSTGRES ? new wrapper.DatabasePsql(options.config) : new wrapper.DatabaseSqlite(options.config);
|
|
36
|
+
if (options.tables) {
|
|
37
|
+
for (const tableName in options.tables) {
|
|
38
|
+
options.tables[tableName].client = this.client;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
this.createTable = table.createTable.bind(this);
|
|
42
|
+
this.renameTable = table.renameTable.bind(this);
|
|
43
|
+
this.dropTable = table.dropTable.bind(this);
|
|
44
|
+
this.addColumn = column.addColumn.bind(this);
|
|
45
|
+
this.renameColumn = column.renameColumn.bind(this);
|
|
46
|
+
this.dropColumn = column.dropColumn.bind(this);
|
|
47
|
+
this.alterColumnType = alter.alterColumnType.bind(
|
|
48
|
+
this
|
|
49
|
+
);
|
|
50
|
+
this.setColumnDefault = alter.setColumnDefault.bind(
|
|
51
|
+
this
|
|
52
|
+
);
|
|
53
|
+
this.dropColumnDefault = alter.dropColumnDefault.bind(
|
|
54
|
+
this
|
|
55
|
+
);
|
|
56
|
+
this.setColumnNotNull = alter.setColumnDefault.bind(
|
|
57
|
+
this
|
|
58
|
+
);
|
|
59
|
+
this.dropColumnNotNull = alter.dropColumnNotNull.bind(
|
|
60
|
+
this
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
table(tableName) {
|
|
64
|
+
if (!this.tables[tableName]) {
|
|
65
|
+
throw new Error(`Table ${tableName} does not exist`);
|
|
66
|
+
}
|
|
67
|
+
const table = this.tables[tableName];
|
|
68
|
+
const query = table.query();
|
|
69
|
+
query.hooks.before = this.hooks.before;
|
|
70
|
+
query.hooks.after = this.hooks.after;
|
|
71
|
+
return query;
|
|
72
|
+
}
|
|
73
|
+
addHook(type, fn) {
|
|
74
|
+
if (!this.hooks[type]) {
|
|
75
|
+
this.hooks[type] = /* @__PURE__ */ new Set();
|
|
76
|
+
}
|
|
77
|
+
this.hooks[type].add(fn);
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
removeHook(type, fn) {
|
|
81
|
+
if (this.hooks[type]) {
|
|
82
|
+
this.hooks[type].delete(fn);
|
|
83
|
+
}
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
async transaction(fn) {
|
|
87
|
+
return this.client.transaction(fn);
|
|
88
|
+
}
|
|
89
|
+
static define(options) {
|
|
90
|
+
return new Database(options);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
exports.Database = Database;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { D as Database } from '../index---zaMa69.cjs';
|
|
2
|
+
import { Column } from '../column/index.cjs';
|
|
3
|
+
import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid } from '../index-CwiFQh0I.cjs';
|
|
4
|
+
import { Dialect } from '../table/constants.cjs';
|
|
5
|
+
import '../query/constants.cjs';
|
|
6
|
+
import '../column/constants.cjs';
|
|
7
|
+
import '../column/types.cjs';
|
|
8
|
+
import '../types.cjs';
|
|
9
|
+
|
|
10
|
+
declare function createTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends string, Columns extends Record<string, Column>, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean, FinalColumns extends MergeTimestampParanoid<Columns, CreatedAt, UpdatedAt, Timestamp, Paranoid>, NewTables extends Tables & {
|
|
11
|
+
[K in TableName]: Table<TableName, FinalColumns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>;
|
|
12
|
+
}>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columns: Columns, options?: {
|
|
13
|
+
paranoid?: Paranoid;
|
|
14
|
+
timestamp?: Timestamp;
|
|
15
|
+
}): Promise<Database<DbDialect, NewTables, Definition>>;
|
|
16
|
+
declare function renameTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, OldName extends (keyof Tables & string) | (string & {}), NewName extends string, NewTables extends Omit<Tables, OldName> & {
|
|
17
|
+
[K in NewName]: Tables[OldName];
|
|
18
|
+
}>(this: Database<DbDialect, Tables, Definition>, oldName: OldName, newName: NewName): Promise<Database<DbDialect, NewTables, Definition>>;
|
|
19
|
+
declare function dropTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {})>(this: Database<DbDialect, Tables, Definition>, tableName: TableName): Promise<Database<DbDialect, Omit<Tables, TableName>, Definition>>;
|
|
20
|
+
|
|
21
|
+
export { createTable, dropTable, renameTable };
|