drizzle-orm 0.12.0-beta.0 → 0.12.0-beta.10
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/alias.d.ts +12 -0
- package/alias.js +45 -0
- package/alias.js.map +1 -0
- package/column-builder.d.ts +31 -11
- package/column-builder.js +10 -6
- package/column-builder.js.map +1 -1
- package/column.d.ts +36 -30
- package/column.js +20 -32
- package/column.js.map +1 -1
- package/connection.d.ts +7 -14
- package/connection.js +50 -59
- package/connection.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +6 -4
- package/index.js.map +1 -1
- package/operations.d.ts +12 -7
- package/package.json +11 -6
- package/readme.md +30 -0
- package/sql/expressions/conditions.d.ts +31 -31
- package/sql/expressions/conditions.js +3 -3
- package/sql/expressions/conditions.js.map +1 -1
- package/sql/expressions/select.d.ts +2 -3
- package/sql/expressions/select.js.map +1 -1
- package/sql/index.d.ts +50 -67
- package/sql/index.js +44 -50
- package/sql/index.js.map +1 -1
- package/table.d.ts +4 -8
- package/table.js +18 -28
- package/table.js.map +1 -1
- package/utils.d.ts +4 -6
- package/utils.js +38 -14
- package/utils.js.map +1 -1
package/alias.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AnyColumn } from './column';
|
|
2
|
+
import { Table } from './table';
|
|
3
|
+
export declare class ColumnAliasProxyHandler<TColumn extends AnyColumn> implements ProxyHandler<TColumn> {
|
|
4
|
+
private table;
|
|
5
|
+
constructor(table: Table);
|
|
6
|
+
get(columnObj: TColumn, prop: string | symbol, receiver: any): any;
|
|
7
|
+
}
|
|
8
|
+
export declare class TableAliasProxyHandler implements ProxyHandler<Table> {
|
|
9
|
+
private alias;
|
|
10
|
+
constructor(alias: string);
|
|
11
|
+
get(tableObj: Table, prop: string | symbol, receiver: any): any;
|
|
12
|
+
}
|
package/alias.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableAliasProxyHandler = exports.ColumnAliasProxyHandler = void 0;
|
|
4
|
+
const column_1 = require("./column");
|
|
5
|
+
const table_1 = require("./table");
|
|
6
|
+
class ColumnAliasProxyHandler {
|
|
7
|
+
constructor(table) {
|
|
8
|
+
this.table = table;
|
|
9
|
+
}
|
|
10
|
+
get(columnObj, prop, receiver) {
|
|
11
|
+
if (prop === 'table') {
|
|
12
|
+
return this.table;
|
|
13
|
+
}
|
|
14
|
+
return columnObj[prop];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ColumnAliasProxyHandler = ColumnAliasProxyHandler;
|
|
18
|
+
class TableAliasProxyHandler {
|
|
19
|
+
constructor(alias) {
|
|
20
|
+
this.alias = alias;
|
|
21
|
+
}
|
|
22
|
+
get(tableObj, prop, receiver) {
|
|
23
|
+
if (prop === table_1.Table.Symbol.Name) {
|
|
24
|
+
return this.alias;
|
|
25
|
+
}
|
|
26
|
+
if (prop === table_1.Table.Symbol.Columns) {
|
|
27
|
+
const columns = tableObj[table_1.Table.Symbol.Columns];
|
|
28
|
+
if (!columns) {
|
|
29
|
+
return columns;
|
|
30
|
+
}
|
|
31
|
+
const proxiedColumns = {};
|
|
32
|
+
Object.keys(columns).map((key) => {
|
|
33
|
+
proxiedColumns[key] = new Proxy(columns[key], new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
|
|
34
|
+
});
|
|
35
|
+
return proxiedColumns;
|
|
36
|
+
}
|
|
37
|
+
const value = tableObj[prop];
|
|
38
|
+
if (value instanceof column_1.Column) {
|
|
39
|
+
return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.TableAliasProxyHandler = TableAliasProxyHandler;
|
|
45
|
+
//# sourceMappingURL=alias.js.map
|
package/alias.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias.js","sourceRoot":"","sources":["../src/alias.ts"],"names":[],"mappings":";;;AAAA,qCAA6C;AAC7C,mCAAgC;AAEhC,MAAa,uBAAuB;IACnC,YAA2B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,GAAG,CAAC,SAAkB,EAAE,IAAqB,EAAE,QAAa;QAClE,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,OAAO,SAAS,CAAC,IAAqB,CAAC,CAAC;IACzC,CAAC;CACD;AATD,0DASC;AAED,MAAa,sBAAsB;IAClC,YAA2B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAErC,GAAG,CAAC,QAAe,EAAE,IAAqB,EAAE,QAAa;QAC/D,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,IAAI,IAAI,KAAK,aAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE;gBACb,OAAO,OAAO,CAAC;aACf;YAED,MAAM,cAAc,GAA2B,EAAE,CAAC;YAElD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAC9B,OAAO,CAAC,GAAG,CAAE,EACb,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;SACtB;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,eAAM,EAAE;YAC5B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,uBAAuB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAhCD,wDAgCC"}
|
package/column-builder.d.ts
CHANGED
|
@@ -1,14 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { SQL } from './sql';
|
|
2
|
+
import { Update } from './utils';
|
|
3
|
+
export interface ColumnBuilderBaseConfig {
|
|
4
|
+
data: unknown;
|
|
5
|
+
driverParam: unknown;
|
|
6
|
+
notNull: boolean;
|
|
7
|
+
hasDefault: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare type ColumnBuilderConfig<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = Update<ColumnBuilderBaseConfig & {
|
|
10
|
+
notNull: false;
|
|
11
|
+
hasDefault: false;
|
|
12
|
+
}, TPartial>;
|
|
13
|
+
export declare abstract class ColumnBuilder<T extends Partial<ColumnBuilderBaseConfig>> {
|
|
14
|
+
protected $brand: {
|
|
15
|
+
type: 'ColumnBuilder';
|
|
16
|
+
subtype: string;
|
|
9
17
|
};
|
|
18
|
+
protected $config: T;
|
|
19
|
+
protected $data: T['data'];
|
|
20
|
+
protected $driverParam: T['driverParam'];
|
|
21
|
+
protected $notNull: T['notNull'];
|
|
22
|
+
protected $hasDefault: T['hasDefault'];
|
|
10
23
|
constructor(name: string);
|
|
11
|
-
notNull(): ColumnBuilder<
|
|
12
|
-
|
|
13
|
-
|
|
24
|
+
notNull(): ColumnBuilder<UpdateCBConfig<T, {
|
|
25
|
+
notNull: true;
|
|
26
|
+
}>>;
|
|
27
|
+
default(value: T['data'] | SQL): ColumnBuilder<UpdateCBConfig<T, {
|
|
28
|
+
hasDefault: true;
|
|
29
|
+
}>>;
|
|
30
|
+
primaryKey(): ColumnBuilder<UpdateCBConfig<T, {
|
|
31
|
+
notNull: true;
|
|
32
|
+
}>>;
|
|
14
33
|
}
|
|
34
|
+
export declare type UpdateCBConfig<T extends Partial<ColumnBuilderBaseConfig>, TUpdate extends Partial<ColumnBuilderBaseConfig>> = Update<T, TUpdate>;
|
package/column-builder.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ColumnBuilder = void 0;
|
|
4
|
+
// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.
|
|
4
5
|
class ColumnBuilder {
|
|
5
6
|
constructor(name) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
this.config = {
|
|
8
|
+
name,
|
|
9
|
+
notNull: false,
|
|
10
|
+
default: undefined,
|
|
11
|
+
primaryKey: false,
|
|
12
|
+
};
|
|
9
13
|
}
|
|
10
14
|
notNull() {
|
|
11
|
-
this.
|
|
15
|
+
this.config.notNull = true;
|
|
12
16
|
return this;
|
|
13
17
|
}
|
|
14
18
|
default(value) {
|
|
15
|
-
this.
|
|
19
|
+
this.config.default = value;
|
|
16
20
|
return this;
|
|
17
21
|
}
|
|
18
22
|
primaryKey() {
|
|
19
|
-
this.
|
|
23
|
+
this.config.primaryKey = true;
|
|
20
24
|
return this;
|
|
21
25
|
}
|
|
22
26
|
}
|
package/column-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../src/column-builder.ts"],"names":[],"mappings":";;;AAkBA,+GAA+G;AAC/G,MAAsB,aAAa;IAmBlC,YAAY,IAAY;QACvB,IAAI,CAAC,MAAM,GAAG;YACb,IAAI;YACJ,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,OAAO,CACN,KAAsB;QAEtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAmC,CAAC;IAC5C,CAAC;IAED,UAAU;QACT,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAsC,CAAC;IAC/C,CAAC;CACD;AA5CD,sCA4CC"}
|
package/column.d.ts
CHANGED
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { ColumnBuilder, ColumnBuilderBaseConfig, ColumnBuilderConfig } from './column-builder';
|
|
2
|
+
import { DriverValueMapper, SQL } from './sql';
|
|
3
|
+
import { Table } from './table';
|
|
4
|
+
import { Update } from './utils';
|
|
5
|
+
export interface ColumnBaseConfig extends ColumnBuilderBaseConfig {
|
|
6
|
+
tableName: string;
|
|
7
|
+
}
|
|
8
|
+
export declare type ColumnConfig<TPartial extends Partial<ColumnBaseConfig> = {}> = Update<ColumnBuilderConfig & {
|
|
9
|
+
tableName: string;
|
|
10
|
+
}, TPartial>;
|
|
11
|
+
export declare abstract class Column<T extends Partial<ColumnBaseConfig>> implements DriverValueMapper<T['data'], T['driverParam']> {
|
|
12
|
+
readonly table: Table<T['tableName']>;
|
|
13
|
+
protected $brand: 'Column';
|
|
14
|
+
protected $config: T;
|
|
15
|
+
protected $data: T['data'];
|
|
16
|
+
protected $driverParam: T['driverParam'];
|
|
17
|
+
protected $notNull: T['notNull'];
|
|
18
|
+
protected $hasDefault: T['hasDefault'];
|
|
15
19
|
readonly name: string;
|
|
16
20
|
readonly primary: boolean;
|
|
17
|
-
readonly notNull:
|
|
18
|
-
readonly default:
|
|
19
|
-
constructor(table:
|
|
20
|
-
mapFromDriverValue: (value: any) => any;
|
|
21
|
-
mapToDriverValue: (value: any) => any;
|
|
21
|
+
readonly notNull: boolean;
|
|
22
|
+
readonly default: T['data'] | SQL | undefined;
|
|
23
|
+
constructor(table: Table<T['tableName']>, builder: ColumnBuilder<Omit<T, 'tableName'>>);
|
|
22
24
|
abstract getSQLType(): string;
|
|
25
|
+
mapFromDriverValue(value: T['driverParam']): T['data'];
|
|
26
|
+
mapToDriverValue(value: T['data']): T['driverParam'];
|
|
23
27
|
}
|
|
24
|
-
export declare
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
export declare type UpdateColConfig<T extends Partial<ColumnBaseConfig>, TUpdate extends Partial<ColumnBaseConfig>> = Update<T, TUpdate>;
|
|
29
|
+
export declare type AnyColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = Column<Update<ColumnBaseConfig, TPartial>>;
|
|
30
|
+
export declare type GetColumnData<TColumn extends AnyColumn, TInferMode extends 'query' | 'raw' = 'query'> = TColumn extends AnyColumn<{
|
|
31
|
+
data: infer TData;
|
|
32
|
+
notNull: infer TNotNull extends boolean;
|
|
33
|
+
}> ? TInferMode extends 'raw' ? TData : TNotNull extends true ? TData : TData | null : never;
|
|
34
|
+
/**
|
|
35
|
+
`GetColumnConfig` can be used to infer either the full config of the column or a single parameter.
|
|
36
|
+
@example
|
|
37
|
+
type TConfig = GetColumnConfig<typeof column>;
|
|
38
|
+
type TNotNull = GetColumnConfig<typeof column, 'notNull'>;
|
|
39
|
+
*/
|
|
40
|
+
export declare type GetColumnConfig<TColumn extends AnyColumn, TParam extends keyof ColumnBaseConfig | undefined = undefined> = TColumn extends Column<infer TConfig> ? TParam extends keyof ColumnBaseConfig ? TConfig[TParam] : TConfig : never;
|
|
33
41
|
export declare type InferColumnsDataTypes<TColumns extends Record<string, AnyColumn>> = {
|
|
34
42
|
[Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;
|
|
35
43
|
};
|
|
36
|
-
export declare type InferColumnTable<T extends AnyColumn> = T extends AnyColumn<infer TTable> ? TTable : never;
|
|
37
|
-
export declare type ChangeColumnTable<TColumn extends AnyColumn, TTableName extends TableName> = TColumn extends Column<any, infer TType, infer TDriverType, infer TNotNull, infer THasDefault> ? ColumnWithMapper<TTableName, TType, TDriverType, TNotNull, THasDefault> : never;
|
package/column.js
CHANGED
|
@@ -1,41 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.Column = void 0;
|
|
4
|
+
// export type UpdateColumnConfig<
|
|
5
|
+
// T extends ColumnBaseConfig,
|
|
6
|
+
// TUpdate extends Partial<ColumnBaseConfig>,
|
|
7
|
+
// > = Update<T, TUpdate, keyof ColumnBaseConfig>;
|
|
8
|
+
/*
|
|
9
|
+
`Column` only accepts a full `ColumnConfig` as its generic.
|
|
10
|
+
To infer parts of the config, use `AnyColumn` that accepts a partial config.
|
|
11
|
+
See `GetColumnData` for example usage of inferring.
|
|
12
|
+
*/
|
|
5
13
|
class Column {
|
|
6
14
|
constructor(table, builder) {
|
|
7
15
|
this.table = table;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.mapFromDriverValue = (value) => {
|
|
13
|
-
return value;
|
|
14
|
-
};
|
|
15
|
-
this.mapToDriverValue = (value) => {
|
|
16
|
-
return value;
|
|
17
|
-
};
|
|
18
|
-
this.name = builder.name;
|
|
19
|
-
this.notNull = builder._notNull;
|
|
20
|
-
this.default = builder._default;
|
|
21
|
-
this.primary = builder._primaryKey;
|
|
16
|
+
this.name = builder.config.name;
|
|
17
|
+
this.notNull = builder.config.notNull;
|
|
18
|
+
this.default = builder.config.default;
|
|
19
|
+
this.primary = builder.config.primaryKey;
|
|
22
20
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.mapFromDriverValue = (value) => {
|
|
29
|
-
return value;
|
|
30
|
-
};
|
|
31
|
-
this.mapToDriverValue = (value) => {
|
|
32
|
-
return value;
|
|
33
|
-
};
|
|
21
|
+
mapFromDriverValue(value) {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
mapToDriverValue(value) {
|
|
25
|
+
return value;
|
|
34
26
|
}
|
|
35
27
|
}
|
|
36
|
-
exports.
|
|
37
|
-
function param(column, value) {
|
|
38
|
-
return new sql_1.BoundParamValue(value, column);
|
|
39
|
-
}
|
|
40
|
-
exports.param = param;
|
|
28
|
+
exports.Column = Column;
|
|
41
29
|
//# sourceMappingURL=column.js.map
|
package/column.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"column.js","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":";;;AAeA,kCAAkC;AAClC,+BAA+B;AAC/B,8CAA8C;AAC9C,kDAAkD;AAElD;;;;EAIE;AACF,MAAsB,MAAM;IAe3B,YAAqB,KAA4B,EAAE,OAA4C;QAA1E,UAAK,GAAL,KAAK,CAAuB;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC1C,CAAC;IAID,kBAAkB,CAAC,KAAuB;QACzC,OAAO,KAAY,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,KAAgB;QAChC,OAAO,KAAY,CAAC;IACrB,CAAC;CACD;AA/BD,wBA+BC"}
|
package/connection.d.ts
CHANGED
|
@@ -3,21 +3,15 @@ export declare type MigrationMeta = {
|
|
|
3
3
|
folderMillis: number;
|
|
4
4
|
hash: string;
|
|
5
5
|
};
|
|
6
|
-
export interface
|
|
7
|
-
|
|
6
|
+
export interface Logger {
|
|
7
|
+
logQuery(query: string, params: unknown[]): void;
|
|
8
8
|
}
|
|
9
|
-
export
|
|
10
|
-
|
|
9
|
+
export declare class DefaultLogger implements Logger {
|
|
10
|
+
logQuery(query: string, params: unknown[]): void;
|
|
11
11
|
}
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
migrate(migrations: MigrationMeta[], session: TSession): Promise<void>;
|
|
12
|
+
export declare class NoopLogger implements Logger {
|
|
13
|
+
logQuery(): void;
|
|
15
14
|
}
|
|
16
|
-
export interface Connector<TSession, TOperations> {
|
|
17
|
-
dialect: Dialect<TSession, TOperations>;
|
|
18
|
-
driver: Driver<TSession>;
|
|
19
|
-
}
|
|
20
|
-
export declare function connect<TSession, TDatabase>(connector: Connector<TSession, TDatabase>): Promise<TDatabase>;
|
|
21
15
|
export interface KitConfig {
|
|
22
16
|
out: string;
|
|
23
17
|
schema: string;
|
|
@@ -25,5 +19,4 @@ export interface KitConfig {
|
|
|
25
19
|
export interface MigrationConfig {
|
|
26
20
|
migrationsFolder: string;
|
|
27
21
|
}
|
|
28
|
-
export declare function
|
|
29
|
-
export declare function migrate<TSession, TDatabase>(connector: Connector<TSession, TDatabase>, config: MigrationConfig): Promise<void>;
|
|
22
|
+
export declare function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[];
|
package/connection.js
CHANGED
|
@@ -22,70 +22,61 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
26
|
+
exports.readMigrationFiles = exports.NoopLogger = exports.DefaultLogger = void 0;
|
|
36
27
|
const crypto = __importStar(require("crypto"));
|
|
37
28
|
const fs = __importStar(require("fs"));
|
|
38
29
|
const path = __importStar(require("path"));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
30
|
+
class DefaultLogger {
|
|
31
|
+
logQuery(query, params) {
|
|
32
|
+
console.log(`Executing query:\n${query}\nParams:\n${JSON.stringify(params, null, 2)}\n`);
|
|
33
|
+
}
|
|
44
34
|
}
|
|
45
|
-
exports.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const query = fs
|
|
69
|
-
.readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
|
|
70
|
-
.toString();
|
|
71
|
-
const year = Number(migrationFolder.slice(0, 4));
|
|
72
|
-
// second param for Date() is month index, that started from 0, so we need
|
|
73
|
-
// to decrement a value for month
|
|
74
|
-
const month = Number(migrationFolder.slice(4, 6)) - 1;
|
|
75
|
-
const day = Number(migrationFolder.slice(6, 8));
|
|
76
|
-
const hour = Number(migrationFolder.slice(8, 10));
|
|
77
|
-
const min = Number(migrationFolder.slice(10, 12));
|
|
78
|
-
const sec = Number(migrationFolder.slice(12, 14));
|
|
79
|
-
const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
|
|
80
|
-
migrationQueries.push({
|
|
81
|
-
sql: query,
|
|
82
|
-
folderMillis: folderAsMillis,
|
|
83
|
-
hash: crypto.createHash('sha256').update(query).digest('hex'),
|
|
84
|
-
});
|
|
35
|
+
exports.DefaultLogger = DefaultLogger;
|
|
36
|
+
class NoopLogger {
|
|
37
|
+
logQuery() { }
|
|
38
|
+
}
|
|
39
|
+
exports.NoopLogger = NoopLogger;
|
|
40
|
+
function readMigrationFiles(config) {
|
|
41
|
+
let migrationFolderTo;
|
|
42
|
+
if (typeof config === 'string') {
|
|
43
|
+
const configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');
|
|
44
|
+
const jsonConfig = JSON.parse(configAsString);
|
|
45
|
+
migrationFolderTo = jsonConfig.out;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
migrationFolderTo = config.migrationsFolder;
|
|
49
|
+
}
|
|
50
|
+
if (!migrationFolderTo) {
|
|
51
|
+
throw Error('no migration folder defined');
|
|
52
|
+
}
|
|
53
|
+
const files1 = fs.readdirSync(migrationFolderTo);
|
|
54
|
+
const migrationQueries = [];
|
|
55
|
+
for (const migrationFolder of files1) {
|
|
56
|
+
if (migrationFolder === '.DS_Store') {
|
|
57
|
+
continue;
|
|
85
58
|
}
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
59
|
+
const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
|
|
60
|
+
const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
|
|
61
|
+
const query = fs
|
|
62
|
+
.readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
|
|
63
|
+
.toString();
|
|
64
|
+
const year = Number(migrationFolder.slice(0, 4));
|
|
65
|
+
// second param for Date() is month index, that started from 0, so we need
|
|
66
|
+
// to decrement a value for month
|
|
67
|
+
const month = Number(migrationFolder.slice(4, 6)) - 1;
|
|
68
|
+
const day = Number(migrationFolder.slice(6, 8));
|
|
69
|
+
const hour = Number(migrationFolder.slice(8, 10));
|
|
70
|
+
const min = Number(migrationFolder.slice(10, 12));
|
|
71
|
+
const sec = Number(migrationFolder.slice(12, 14));
|
|
72
|
+
const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
|
|
73
|
+
migrationQueries.push({
|
|
74
|
+
sql: query,
|
|
75
|
+
folderMillis: folderAsMillis,
|
|
76
|
+
hash: crypto.createHash('sha256').update(query).digest('hex'),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return migrationQueries;
|
|
89
80
|
}
|
|
90
|
-
exports.
|
|
81
|
+
exports.readMigrationFiles = readMigrationFiles;
|
|
91
82
|
//# sourceMappingURL=connection.js.map
|
package/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -14,10 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.sql = void 0;
|
|
18
|
-
var sql_1 = require("./sql");
|
|
19
|
-
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return sql_1.sql; } });
|
|
20
|
-
__exportStar(require("./table"), exports);
|
|
17
|
+
exports.Table = exports.sql = exports.param = void 0;
|
|
21
18
|
__exportStar(require("./column"), exports);
|
|
22
19
|
__exportStar(require("./connection"), exports);
|
|
20
|
+
var sql_1 = require("./sql");
|
|
21
|
+
Object.defineProperty(exports, "param", { enumerable: true, get: function () { return sql_1.param; } });
|
|
22
|
+
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return sql_1.sql; } });
|
|
23
|
+
var table_1 = require("./table");
|
|
24
|
+
Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return table_1.Table; } });
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,6BAAmC;AAA1B,4FAAA,KAAK,OAAA;AAAE,0FAAA,GAAG,OAAA;AACnB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
package/operations.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { AnyColumn } from './column';
|
|
2
|
+
import { SQL, SQLResponse } from './sql';
|
|
3
|
+
export declare type RequiredKeyOnly<TKey extends string, T extends AnyColumn> = T extends AnyColumn<{
|
|
4
|
+
notNull: true;
|
|
5
|
+
hasDefault: false;
|
|
6
|
+
}> ? TKey : never;
|
|
5
7
|
export declare type OptionalKeyOnly<TKey extends string, T extends AnyColumn> = TKey extends RequiredKeyOnly<TKey, T> ? never : TKey;
|
|
6
|
-
export declare type SelectFields<TTableName extends
|
|
7
|
-
[key: string]: SQLResponse
|
|
8
|
+
export declare type SelectFields<TTableName extends string, TColumnDriverParam> = {
|
|
9
|
+
[key: string]: SQL | SQLResponse | AnyColumn<{
|
|
10
|
+
tableName: TTableName;
|
|
11
|
+
driverParam: TColumnDriverParam;
|
|
12
|
+
}>;
|
|
8
13
|
};
|
|
9
14
|
export declare type SelectFieldsOrdered = {
|
|
10
15
|
name: string;
|
|
11
16
|
resultTableName: string;
|
|
12
|
-
|
|
17
|
+
field: AnyColumn | SQL | SQLResponse;
|
|
13
18
|
}[];
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "0.12.0-beta.
|
|
3
|
+
"version": "0.12.0-beta.10",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
7
10
|
"repository": {
|
|
8
11
|
"type": "git",
|
|
9
12
|
"url": "git+https://github.com/drizzle-team/drizzle-orm.git"
|
|
@@ -25,8 +28,8 @@
|
|
|
25
28
|
},
|
|
26
29
|
"homepage": "https://github.com/drizzle-team/drizzle-orm#readme",
|
|
27
30
|
"peerDependencies": {
|
|
28
|
-
"drizzle-orm-mysql": ">=0.12.0-beta.0",
|
|
29
|
-
"drizzle-orm-pg": ">=0.12.0",
|
|
31
|
+
"drizzle-orm-mysql": ">=0.12.0 <0.13.0 || >=0.12.0-beta.0 <0.13.0-beta.0",
|
|
32
|
+
"drizzle-orm-pg": ">=0.12.0 <0.13.0 || >=0.12.0-beta.0 <0.13.0-beta.0",
|
|
30
33
|
"mysql2": ">=2 <3",
|
|
31
34
|
"pg": ">=8 <9",
|
|
32
35
|
"sqlite3": ">=5 <6"
|
|
@@ -49,6 +52,7 @@
|
|
|
49
52
|
}
|
|
50
53
|
},
|
|
51
54
|
"devDependencies": {
|
|
55
|
+
"@types/node": "*",
|
|
52
56
|
"@types/pg": "^8.6.1",
|
|
53
57
|
"@types/sqlite3": "^3.1.8",
|
|
54
58
|
"mysql2": "^2.3.3",
|
|
@@ -56,7 +60,7 @@
|
|
|
56
60
|
"resolve-tspaths": "^0.7.0",
|
|
57
61
|
"sqlite3": "^5.0.8",
|
|
58
62
|
"ts-node": "^10.8.2",
|
|
59
|
-
"typescript": "4.8.
|
|
63
|
+
"typescript": "^4.8.4",
|
|
60
64
|
"uvu": "^0.5.6"
|
|
61
65
|
},
|
|
62
66
|
"dependencies": {
|
|
@@ -64,8 +68,9 @@
|
|
|
64
68
|
},
|
|
65
69
|
"scripts": {
|
|
66
70
|
"build": "tsc",
|
|
67
|
-
"pack": "cp package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
|
|
68
|
-
"publish:beta": "pnpm publish package.tgz --tag beta --
|
|
71
|
+
"pack": "cp ../readme.md dist/ && cp package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
|
|
72
|
+
"publish:beta": "pnpm publish package.tgz --tag beta --git-checks false",
|
|
73
|
+
"release:beta": "pnpm build && pnpm version prerelease && pnpm run pack && pnpm publish:beta",
|
|
69
74
|
"build:int": "pnpm build && pnpm run pack"
|
|
70
75
|
}
|
|
71
76
|
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## DrizzleORM
|
|
2
|
+
DrizzleORM is a TypeScript ORM library with a [drizzle-kit](#migrations) CLI companion for automatic SQL migrations generation.
|
|
3
|
+
It's meant to be a library, not a framework, stay as an opt-in solution all the time at any levels.
|
|
4
|
+
We try to follow SQL-like syntax whenever possible, be strongly typed ground top and fail in compile time, not in runtime.
|
|
5
|
+
We implemented best in class `joins` and second to none `migrations generation`.
|
|
6
|
+
Library has almost zero dependencies and being battle tested on production projects by multiple teams 🚀
|
|
7
|
+
|
|
8
|
+
| database | support | |
|
|
9
|
+
|:-- | :---: | :-- |
|
|
10
|
+
| PostgreSQL | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-pg)|
|
|
11
|
+
| MySQL | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-mysql)| |
|
|
12
|
+
| SQLite | ⏳ | |
|
|
13
|
+
| DynamoDB | ⏳ | |
|
|
14
|
+
| MS SQL | ⏳ | |
|
|
15
|
+
| CockroachDB | ⏳ | |
|
|
16
|
+
|
|
17
|
+
### Installation
|
|
18
|
+
```bash
|
|
19
|
+
// postgresql
|
|
20
|
+
npm install drizzle-orm drizzle-orm-pg
|
|
21
|
+
npm install -D drizzle-kit
|
|
22
|
+
|
|
23
|
+
// mysql
|
|
24
|
+
npm install drizzle-orm drizzle-orm-mysql
|
|
25
|
+
npm install -D drizzle-kit
|
|
26
|
+
|
|
27
|
+
// sqlite
|
|
28
|
+
npm install drizzle-orm drizzle-orm-sqlite
|
|
29
|
+
npm install -D drizzle-kit
|
|
30
|
+
```
|