drizzle-orm 0.9.2 → 0.9.6
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/columns/column.d.ts +11 -9
- package/columns/column.js +12 -8
- package/package.json +1 -1
- package/serializer/serializer.d.ts +3 -1
- package/serializer/serializer.js +4 -2
package/columns/column.d.ts
CHANGED
|
@@ -2,21 +2,21 @@ import DB from '../db/db';
|
|
|
2
2
|
import { AbstractTable } from '../tables';
|
|
3
3
|
import ColumnType from './types/columnType';
|
|
4
4
|
declare type ExtractColumnType<T extends ColumnType> = T extends ColumnType<infer TCodeType> ? TCodeType : never;
|
|
5
|
-
declare type OnConstraint = OnDelete | OnUpdate;
|
|
6
5
|
export declare enum OnDelete {
|
|
7
|
-
RESTRICT =
|
|
8
|
-
CASCADE =
|
|
6
|
+
RESTRICT = "ON DELETE RESTRICT",
|
|
7
|
+
CASCADE = "ON DELETE CASCADE"
|
|
9
8
|
}
|
|
10
9
|
export declare enum OnUpdate {
|
|
11
|
-
RESTRICT =
|
|
12
|
-
CASCADE =
|
|
10
|
+
RESTRICT = "ON UPDATE RESTRICT",
|
|
11
|
+
CASCADE = "ON UPDATE RESTRICT"
|
|
13
12
|
}
|
|
14
13
|
export declare abstract class AbstractColumn<T extends ColumnType, TNullable extends boolean = true, TAutoIncrement extends boolean = false> {
|
|
15
14
|
isNullableFlag: TNullable;
|
|
16
15
|
autoIncrementType: TAutoIncrement;
|
|
17
16
|
primaryKeyName?: string;
|
|
18
17
|
uniqueKeyName?: string;
|
|
19
|
-
protected
|
|
18
|
+
protected onDelete?: string;
|
|
19
|
+
protected onUpdate?: string;
|
|
20
20
|
protected parent: AbstractTable<any>;
|
|
21
21
|
protected parentTableName: string;
|
|
22
22
|
protected columnType: T;
|
|
@@ -25,12 +25,14 @@ export declare abstract class AbstractColumn<T extends ColumnType, TNullable ext
|
|
|
25
25
|
protected defaultParam: any;
|
|
26
26
|
protected referenced: AbstractColumn<T, boolean, boolean>;
|
|
27
27
|
constructor(parent: AbstractTable<any>, columnName: string, columnType: T, nullable: TNullable);
|
|
28
|
+
getOnDelete: () => string | undefined;
|
|
29
|
+
getOnUpdate: () => string | undefined;
|
|
28
30
|
getAlias: () => string;
|
|
29
31
|
getParent: () => AbstractTable<any>;
|
|
30
32
|
getParentName: () => string;
|
|
31
33
|
abstract foreignKey<ITable extends AbstractTable<ITable>>(table: {
|
|
32
34
|
new (db: DB): ITable;
|
|
33
|
-
}, callback: (table: ITable) => AbstractColumn<T, boolean, boolean>,
|
|
35
|
+
}, callback: (table: ITable) => AbstractColumn<T, boolean, boolean>, onDelete?: OnDelete, onUpdate?: OnUpdate): AbstractColumn<T, TNullable, TAutoIncrement>;
|
|
34
36
|
defaultValue: (value: ExtractColumnType<T>) => this;
|
|
35
37
|
abstract autoIncrement(): AbstractColumn<T, boolean, boolean>;
|
|
36
38
|
abstract primaryKey(): AbstractColumn<T, boolean, boolean>;
|
|
@@ -46,14 +48,14 @@ export declare class Column<T extends ColumnType, TNullable extends boolean = tr
|
|
|
46
48
|
constructor(parent: AbstractTable<any>, columnName: string, columnType: T, nullable: TNullable);
|
|
47
49
|
serial(): Column<T, false, true>;
|
|
48
50
|
primaryKey(): Column<T, TAutoIncrement extends true ? true : false, TAutoIncrement>;
|
|
49
|
-
foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => Column<T, boolean, boolean>,
|
|
51
|
+
foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => Column<T, boolean, boolean>, onDelete?: OnDelete, onUpdate?: OnUpdate): Column<T, TNullable, TAutoIncrement>;
|
|
50
52
|
autoIncrement(): IndexedColumn<T, true, true>;
|
|
51
53
|
}
|
|
52
54
|
export declare class IndexedColumn<T extends ColumnType, TNullable extends boolean = true, TAutoIncrement extends boolean = false> extends AbstractColumn<T, TNullable, TAutoIncrement> {
|
|
53
55
|
constructor(parent: AbstractTable<any>, columnName: string, columnType: T, nullable: TNullable);
|
|
54
56
|
serial(): IndexedColumn<T, false, true>;
|
|
55
57
|
primaryKey(): IndexedColumn<T, TAutoIncrement extends true ? true : false, TAutoIncrement>;
|
|
56
|
-
foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => IndexedColumn<T, boolean, boolean>,
|
|
58
|
+
foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => IndexedColumn<T, boolean, boolean>, onDelete?: OnDelete, onUpdate?: OnUpdate): IndexedColumn<T, TNullable, TAutoIncrement>;
|
|
57
59
|
autoIncrement(): IndexedColumn<T, true, true>;
|
|
58
60
|
}
|
|
59
61
|
export {};
|
package/columns/column.js
CHANGED
|
@@ -3,19 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.IndexedColumn = exports.Column = exports.AbstractColumn = exports.OnUpdate = exports.OnDelete = void 0;
|
|
4
4
|
var OnDelete;
|
|
5
5
|
(function (OnDelete) {
|
|
6
|
-
OnDelete[
|
|
7
|
-
OnDelete[
|
|
6
|
+
OnDelete["RESTRICT"] = "ON DELETE RESTRICT";
|
|
7
|
+
OnDelete["CASCADE"] = "ON DELETE CASCADE";
|
|
8
8
|
})(OnDelete = exports.OnDelete || (exports.OnDelete = {}));
|
|
9
9
|
var OnUpdate;
|
|
10
10
|
(function (OnUpdate) {
|
|
11
|
-
OnUpdate[
|
|
12
|
-
OnUpdate[
|
|
11
|
+
OnUpdate["RESTRICT"] = "ON UPDATE RESTRICT";
|
|
12
|
+
OnUpdate["CASCADE"] = "ON UPDATE RESTRICT";
|
|
13
13
|
})(OnUpdate = exports.OnUpdate || (exports.OnUpdate = {}));
|
|
14
14
|
// eslint-disable-next-line max-len
|
|
15
15
|
class AbstractColumn {
|
|
16
16
|
constructor(parent, columnName, columnType, nullable) {
|
|
17
17
|
this.autoIncrementFlag = false;
|
|
18
18
|
this.defaultParam = null;
|
|
19
|
+
this.getOnDelete = () => this.onDelete;
|
|
20
|
+
this.getOnUpdate = () => this.onUpdate;
|
|
19
21
|
this.getAlias = () => `${this.parentTableName.replace('.', '_')}_${this.columnName}`;
|
|
20
22
|
this.getParent = () => this.parent;
|
|
21
23
|
this.getParentName = () => this.parentTableName;
|
|
@@ -54,10 +56,11 @@ class Column extends AbstractColumn {
|
|
|
54
56
|
// eslint-disable-next-line max-len
|
|
55
57
|
return this;
|
|
56
58
|
}
|
|
57
|
-
foreignKey(table, callback,
|
|
59
|
+
foreignKey(table, callback, onDelete, onUpdate) {
|
|
58
60
|
const tableInstance = this.getParent().db.create(table);
|
|
59
61
|
this.referenced = callback(tableInstance);
|
|
60
|
-
this.
|
|
62
|
+
this.onDelete = onDelete;
|
|
63
|
+
this.onUpdate = onUpdate;
|
|
61
64
|
return this;
|
|
62
65
|
}
|
|
63
66
|
autoIncrement() {
|
|
@@ -80,10 +83,11 @@ class IndexedColumn extends AbstractColumn {
|
|
|
80
83
|
// eslint-disable-next-line max-len
|
|
81
84
|
return this;
|
|
82
85
|
}
|
|
83
|
-
foreignKey(table, callback,
|
|
86
|
+
foreignKey(table, callback, onDelete, onUpdate) {
|
|
84
87
|
// eslint-disable-next-line new-cap
|
|
85
88
|
this.referenced = callback(this.getParent().db.create(table));
|
|
86
|
-
this.
|
|
89
|
+
this.onDelete = onDelete;
|
|
90
|
+
this.onUpdate = onUpdate;
|
|
87
91
|
return this;
|
|
88
92
|
}
|
|
89
93
|
autoIncrement() {
|
package/package.json
CHANGED
|
@@ -5,11 +5,13 @@ interface ColumnAsObject {
|
|
|
5
5
|
name?: string;
|
|
6
6
|
type?: string;
|
|
7
7
|
primaryKey?: boolean;
|
|
8
|
-
autoincrement?: boolean;
|
|
9
8
|
unique?: boolean;
|
|
10
9
|
default?: any;
|
|
11
10
|
notNull?: boolean;
|
|
12
11
|
references?: {
|
|
12
|
+
foreignKeyName: string;
|
|
13
|
+
onDelete?: string;
|
|
14
|
+
onUpdate?: string;
|
|
13
15
|
table: string;
|
|
14
16
|
column: string;
|
|
15
17
|
};
|
package/serializer/serializer.js
CHANGED
|
@@ -35,9 +35,8 @@ class MigrationSerializer {
|
|
|
35
35
|
if (value instanceof columns_1.Column) {
|
|
36
36
|
columnToReturn[key] = {
|
|
37
37
|
name: value.getColumnName(),
|
|
38
|
-
type: value.getColumnType().getDbName(),
|
|
38
|
+
type: value.isAutoIncrement() ? 'serial' : value.getColumnType().getDbName(),
|
|
39
39
|
primaryKey: !!value.primaryKeyName,
|
|
40
|
-
autoincrement: value.isAutoIncrement(),
|
|
41
40
|
unique: !!value.uniqueKeyName,
|
|
42
41
|
default: value.getDefaultValue() === null ? undefined : value.getDefaultValue(),
|
|
43
42
|
notNull: !value.isNullableFlag,
|
|
@@ -45,8 +44,11 @@ class MigrationSerializer {
|
|
|
45
44
|
const referenced = value.getReferenced();
|
|
46
45
|
if (referenced) {
|
|
47
46
|
columnToReturn[key].references = {
|
|
47
|
+
foreignKeyName: `${value.getParent().tableName()}_${value.getColumnName()}_fk`,
|
|
48
48
|
table: referenced.getParentName(),
|
|
49
49
|
column: referenced.getColumnName(),
|
|
50
|
+
onDelete: value.getOnDelete(),
|
|
51
|
+
onUpdate: value.getOnUpdate(),
|
|
50
52
|
};
|
|
51
53
|
}
|
|
52
54
|
}
|