drizzle-orm 0.12.0-beta.20 → 0.12.0-beta.21

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.
Files changed (84) hide show
  1. package/README.md +30 -0
  2. package/{dist/alias.d.ts → alias.d.ts} +0 -0
  3. package/{dist/alias.js → alias.js} +0 -0
  4. package/{dist/alias.js.map → alias.js.map} +0 -0
  5. package/{dist/branded-types.d.ts → branded-types.d.ts} +0 -0
  6. package/{dist/branded-types.js → branded-types.js} +0 -0
  7. package/{dist/branded-types.js.map → branded-types.js.map} +0 -0
  8. package/brands/column.d.ts +0 -0
  9. package/brands/column.js +5 -0
  10. package/brands/column.js.map +1 -0
  11. package/brands/common.d.ts +0 -0
  12. package/brands/common.js +15 -0
  13. package/brands/common.js.map +1 -0
  14. package/brands/index.d.ts +0 -0
  15. package/brands/index.js +5 -0
  16. package/brands/index.js.map +1 -0
  17. package/brands/table.d.ts +0 -0
  18. package/brands/table.js +8 -0
  19. package/brands/table.js.map +1 -0
  20. package/{dist/column-builder.d.ts → column-builder.d.ts} +0 -0
  21. package/{dist/column-builder.js → column-builder.js} +0 -0
  22. package/{dist/column-builder.js.map → column-builder.js.map} +0 -0
  23. package/{dist/column.d.ts → column.d.ts} +0 -0
  24. package/{dist/column.js → column.js} +0 -0
  25. package/{dist/column.js.map → column.js.map} +0 -0
  26. package/{dist/connection.d.ts → connection.d.ts} +0 -0
  27. package/{dist/connection.js → connection.js} +0 -0
  28. package/{dist/connection.js.map → connection.js.map} +0 -0
  29. package/{dist/expressions.d.ts → expressions.d.ts} +0 -0
  30. package/{dist/expressions.js → expressions.js} +0 -0
  31. package/{dist/expressions.js.map → expressions.js.map} +0 -0
  32. package/{dist/index.d.ts → index.d.ts} +0 -0
  33. package/{dist/index.js → index.js} +0 -0
  34. package/{dist/index.js.map → index.js.map} +0 -0
  35. package/{dist/operations.d.ts → operations.d.ts} +0 -0
  36. package/{dist/operations.js → operations.js} +0 -0
  37. package/{dist/operations.js.map → operations.js.map} +0 -0
  38. package/package.json +1 -1
  39. package/{dist/query-promise.d.ts → query-promise.d.ts} +0 -0
  40. package/{dist/query-promise.js → query-promise.js} +0 -0
  41. package/{dist/query-promise.js.map → query-promise.js.map} +0 -0
  42. package/{dist/sql → sql}/expressions/conditions.d.ts +0 -0
  43. package/{dist/sql → sql}/expressions/conditions.js +0 -0
  44. package/{dist/sql → sql}/expressions/conditions.js.map +0 -0
  45. package/{dist/sql → sql}/expressions/index.d.ts +0 -0
  46. package/{dist/sql → sql}/expressions/index.js +0 -0
  47. package/{dist/sql → sql}/expressions/index.js.map +0 -0
  48. package/{dist/sql → sql}/expressions/select.d.ts +0 -0
  49. package/{dist/sql → sql}/expressions/select.js +0 -0
  50. package/{dist/sql → sql}/expressions/select.js.map +0 -0
  51. package/{dist/sql → sql}/index.d.ts +0 -0
  52. package/{dist/sql → sql}/index.js +0 -0
  53. package/{dist/sql → sql}/index.js.map +0 -0
  54. package/{dist/table.d.ts → table.d.ts} +0 -0
  55. package/{dist/table.js → table.js} +0 -0
  56. package/{dist/table.js.map → table.js.map} +0 -0
  57. package/{dist/utils.d.ts → utils.d.ts} +0 -0
  58. package/{dist/utils.js → utils.js} +0 -0
  59. package/{dist/utils.js.map → utils.js.map} +0 -0
  60. package/.turbo/turbo-build:int.log +0 -13
  61. package/.turbo/turbo-test:types.log +0 -5
  62. package/dist/package.json +0 -58
  63. package/dist/readme.md +0 -30
  64. package/drizzle-orm-0.12.0-beta.19.tgz +0 -0
  65. package/drizzle-orm-0.12.0-beta.20.tgz +0 -0
  66. package/package.tgz +0 -0
  67. package/src/alias.ts +0 -47
  68. package/src/column-builder.ts +0 -69
  69. package/src/column.ts +0 -86
  70. package/src/connection.ts +0 -99
  71. package/src/expressions.ts +0 -1
  72. package/src/index.ts +0 -4
  73. package/src/operations.ts +0 -22
  74. package/src/query-promise.ts +0 -31
  75. package/src/sql/expressions/conditions.ts +0 -168
  76. package/src/sql/expressions/index.ts +0 -2
  77. package/src/sql/expressions/select.ts +0 -10
  78. package/src/sql/index.ts +0 -254
  79. package/src/table.ts +0 -45
  80. package/src/utils.ts +0 -140
  81. package/tsconfig.build.json +0 -8
  82. package/tsconfig.build.tsbuildinfo +0 -1
  83. package/tsconfig.json +0 -7
  84. package/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -0,0 +1,30 @@
1
+ ## Drizzle ORM
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 | ✅ |[Docs](https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-orm-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
+ ```
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // import { Brand } from './common';
3
+ // export class ColumnData<T = unknown> extends Brand<'ColumnData', T> {}
4
+ // export class ColumnDriverParam<T = unknown> extends Brand<'ColumnDriverParam', T> {}
5
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/brands/column.ts"],"names":[],"mappings":";AAAA,oCAAoC;AAEpC,yEAAyE;AAEzE,uFAAuF"}
File without changes
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // export abstract class Brand<T extends string, TValue> {
3
+ // declare $brand: T;
4
+ // declare value: TValue;
5
+ // constructor(value?: TValue) {
6
+ // if (value !== undefined) {
7
+ // this.value = value;
8
+ // }
9
+ // }
10
+ // toString(): string {
11
+ // return `${this.value}`;
12
+ // }
13
+ // }
14
+ // export type Unwrap<T extends Brand<any, any>> = T['value'];
15
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/brands/common.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,sBAAsB;AACtB,0BAA0B;AAE1B,iCAAiC;AACjC,+BAA+B;AAC/B,yBAAyB;AACzB,MAAM;AACN,KAAK;AAEL,wBAAwB;AACxB,4BAA4B;AAC5B,KAAK;AACL,IAAI;AAEJ,8DAA8D"}
File without changes
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // export * from './common';
3
+ // export * from './table';
4
+ // export * from './column';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/brands/index.ts"],"names":[],"mappings":";AAAA,4BAA4B;AAC5B,2BAA2B;AAC3B,4BAA4B"}
File without changes
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ // import { Brand } from './common';
3
+ // export class TableName<T extends string = string> extends Brand<'TableName', T> {
4
+ // constructor(readonly name: T) {
5
+ // super(name);
6
+ // }
7
+ // }
8
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/brands/table.ts"],"names":[],"mappings":";AAAA,oCAAoC;AAEpC,oFAAoF;AACpF,mCAAmC;AACnC,iBAAiB;AACjB,KAAK;AACL,IAAI"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.12.0-beta.20",
3
+ "version": "0.12.0-beta.21",
4
4
  "description": "Drizzle ORM package for SQL databases",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,13 +0,0 @@
1
-
2
- > drizzle-orm@0.12.0-beta.17 build:int /Users/alexblokh/Development/drizzle-orm-new/drizzle-orm
3
- > pnpm build && pnpm run pack
4
-
5
-
6
- > drizzle-orm@0.12.0-beta.17 build /Users/alexblokh/Development/drizzle-orm-new/drizzle-orm
7
- > tsc -p tsconfig.build.json
8
-
9
-
10
- > drizzle-orm@0.12.0-beta.17 pack /Users/alexblokh/Development/drizzle-orm-new/drizzle-orm
11
- > cp ../README.md package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz
12
-
13
- drizzle-orm-0.12.0-beta.17.tgz
@@ -1,5 +0,0 @@
1
-
2
- > drizzle-orm@0.12.0-beta.17 test:types /Users/alexblokh/Development/drizzle-orm-new/drizzle-orm
3
- > echo WARN: No tests defined!
4
-
5
- WARN: No tests defined!
package/dist/package.json DELETED
@@ -1,58 +0,0 @@
1
- {
2
- "name": "drizzle-orm",
3
- "version": "0.12.0-beta.17",
4
- "description": "Drizzle ORM package for SQL databases",
5
- "main": "index.js",
6
- "types": "index.d.ts",
7
- "scripts": {
8
- "build": "tsc -p tsconfig.build.json",
9
- "test:types": "echo WARN: No tests defined!",
10
- "pack": "cp ../README.md package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
11
- "publish": "npm publish package.tgz",
12
- "publish:beta": "npm publish package.tgz --tag beta",
13
- "release:beta": "pnpm build && pnpm version prerelease && pnpm run pack && pnpm publish:beta",
14
- "build:int": "pnpm build && pnpm run pack"
15
- },
16
- "publishConfig": {
17
- "access": "public"
18
- },
19
- "repository": {
20
- "type": "git",
21
- "url": "git+https://github.com/drizzle-team/drizzle-orm.git"
22
- },
23
- "keywords": [
24
- "orm",
25
- "pg",
26
- "mysql",
27
- "postgresql",
28
- "postgres",
29
- "database",
30
- "sql",
31
- "typescript"
32
- ],
33
- "author": "",
34
- "license": "Apache-2.0",
35
- "bugs": {
36
- "url": "https://github.com/drizzle-team/drizzle-orm/issues"
37
- },
38
- "homepage": "https://github.com/drizzle-team/drizzle-orm#readme",
39
- "peerDependencies": {
40
- "drizzle-orm-mysql": ">=0.12.0 <0.13.0 || >=0.12.0-beta.0 <0.13.0-beta.0",
41
- "drizzle-orm-pg": ">=0.12.0 <0.13.0 || >=0.12.0-beta.0 <0.13.0-beta.0",
42
- "drizzle-orm-sqlite": ">=0.12.0 <0.13.0 || >=0.12.0-beta.0 <0.13.0-beta.0"
43
- },
44
- "peerDependenciesMeta": {
45
- "drizzle-orm-mysql": {
46
- "optional": true
47
- },
48
- "drizzle-orm-pg": {
49
- "optional": true
50
- },
51
- "drizzle-orm-sqlite": {
52
- "optional": true
53
- }
54
- },
55
- "devDependencies": {
56
- "@types/node": "^18.11.9"
57
- }
58
- }
package/dist/readme.md DELETED
@@ -1,30 +0,0 @@
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
- ```
Binary file
Binary file
package/package.tgz DELETED
Binary file
package/src/alias.ts DELETED
@@ -1,47 +0,0 @@
1
- import { AnyColumn, Column } from './column';
2
- import { Table } from './table';
3
-
4
- export class ColumnAliasProxyHandler<TColumn extends AnyColumn> implements ProxyHandler<TColumn> {
5
- constructor(private table: Table) {}
6
-
7
- get(columnObj: TColumn, prop: string | symbol, receiver: any): any {
8
- if (prop === 'table') {
9
- return this.table;
10
- }
11
- return columnObj[prop as keyof TColumn];
12
- }
13
- }
14
-
15
- export class TableAliasProxyHandler implements ProxyHandler<Table> {
16
- constructor(private alias: string) {}
17
-
18
- get(tableObj: Table, prop: string | symbol, receiver: any): any {
19
- if (prop === Table.Symbol.Name) {
20
- return this.alias;
21
- }
22
- if (prop === Table.Symbol.Columns) {
23
- const columns = tableObj[Table.Symbol.Columns];
24
- if (!columns) {
25
- return columns;
26
- }
27
-
28
- const proxiedColumns: { [key: string]: any } = {};
29
-
30
- Object.keys(columns).map((key) => {
31
- proxiedColumns[key] = new Proxy(
32
- columns[key]!,
33
- new ColumnAliasProxyHandler(new Proxy(tableObj, this)),
34
- );
35
- });
36
-
37
- return proxiedColumns;
38
- }
39
-
40
- const value = tableObj[prop as keyof Table];
41
- if (value instanceof Column) {
42
- return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(tableObj, this)));
43
- }
44
-
45
- return value;
46
- }
47
- }
@@ -1,69 +0,0 @@
1
- import { SQL } from './sql';
2
- import { Update } from './utils';
3
-
4
- export interface ColumnBuilderBaseConfig {
5
- data: unknown;
6
- driverParam: unknown;
7
- notNull: boolean;
8
- hasDefault: boolean;
9
- }
10
-
11
- export type ColumnBuilderConfig<TPartial extends Partial<ColumnBuilderBaseConfig> = {}> = Update<
12
- ColumnBuilderBaseConfig & {
13
- notNull: false;
14
- hasDefault: false;
15
- },
16
- TPartial
17
- >;
18
-
19
- // To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.
20
- export abstract class ColumnBuilder<T extends Partial<ColumnBuilderBaseConfig>> {
21
- declare protected $brand: {
22
- type: 'ColumnBuilder';
23
- subtype: string;
24
- };
25
- declare protected $config: T;
26
- declare protected $data: T['data'];
27
- declare protected $driverParam: T['driverParam'];
28
- declare protected $notNull: T['notNull'];
29
- declare protected $hasDefault: T['hasDefault'];
30
-
31
- /** @internal */
32
- config: {
33
- name: string;
34
- notNull: boolean;
35
- default: T['data'] | SQL | undefined;
36
- primaryKey: boolean;
37
- };
38
-
39
- constructor(name: string) {
40
- this.config = {
41
- name,
42
- notNull: false,
43
- default: undefined,
44
- primaryKey: false,
45
- };
46
- }
47
-
48
- notNull(): ColumnBuilder<UpdateCBConfig<T, { notNull: true }>> {
49
- this.config.notNull = true;
50
- return this as ReturnType<this['notNull']>;
51
- }
52
-
53
- default(
54
- value: T['data'] | SQL,
55
- ): ColumnBuilder<UpdateCBConfig<T, { hasDefault: true }>> {
56
- this.config.default = value;
57
- return this as ReturnType<this['default']>;
58
- }
59
-
60
- primaryKey(): ColumnBuilder<UpdateCBConfig<T, { notNull: true }>> {
61
- this.config.primaryKey = true;
62
- return this as ReturnType<this['primaryKey']>;
63
- }
64
- }
65
-
66
- export type UpdateCBConfig<
67
- T extends Partial<ColumnBuilderBaseConfig>,
68
- TUpdate extends Partial<ColumnBuilderBaseConfig>,
69
- > = Update<T, TUpdate>;
package/src/column.ts DELETED
@@ -1,86 +0,0 @@
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
-
6
- export interface ColumnBaseConfig extends ColumnBuilderBaseConfig {
7
- tableName: string;
8
- }
9
-
10
- export type ColumnConfig<TPartial extends Partial<ColumnBaseConfig> = {}> = Update<
11
- ColumnBuilderConfig & { tableName: string },
12
- TPartial
13
- >;
14
-
15
- // export type UpdateColumnConfig<
16
- // T extends ColumnBaseConfig,
17
- // TUpdate extends Partial<ColumnBaseConfig>,
18
- // > = Update<T, TUpdate, keyof ColumnBaseConfig>;
19
-
20
- /*
21
- `Column` only accepts a full `ColumnConfig` as its generic.
22
- To infer parts of the config, use `AnyColumn` that accepts a partial config.
23
- See `GetColumnData` for example usage of inferring.
24
- */
25
- export abstract class Column<T extends Partial<ColumnBaseConfig>>
26
- implements DriverValueMapper<T['data'], T['driverParam']>
27
- {
28
- declare protected $brand: 'Column';
29
- declare protected $config: T;
30
- declare protected $data: T['data'];
31
- declare protected $driverParam: T['driverParam'];
32
- declare protected $notNull: T['notNull'];
33
- declare protected $hasDefault: T['hasDefault'];
34
-
35
- readonly name: string;
36
- readonly primary: boolean;
37
- readonly notNull: boolean;
38
- readonly default: T['data'] | SQL | undefined;
39
-
40
- constructor(readonly table: Table<T['tableName']>, builder: ColumnBuilder<Omit<T, 'tableName'>>) {
41
- this.name = builder.config.name;
42
- this.notNull = builder.config.notNull;
43
- this.default = builder.config.default;
44
- this.primary = builder.config.primaryKey;
45
- }
46
-
47
- abstract getSQLType(): string;
48
-
49
- mapFromDriverValue(value: T['driverParam']): T['data'] {
50
- return value as any;
51
- }
52
-
53
- mapToDriverValue(value: T['data']): T['driverParam'] {
54
- return value as any;
55
- }
56
- }
57
-
58
- export type UpdateColConfig<T extends Partial<ColumnBaseConfig>, TUpdate extends Partial<ColumnBaseConfig>> = Update<
59
- T,
60
- TUpdate
61
- >;
62
-
63
- export type AnyColumn<TPartial extends Partial<ColumnBaseConfig> = {}> = Column<Update<ColumnBaseConfig, TPartial>>;
64
-
65
- export type GetColumnData<TColumn extends AnyColumn, TInferMode extends 'query' | 'raw' = 'query'> =
66
- // dprint-ignore
67
- TColumn extends AnyColumn<{ data: infer TData; notNull: infer TNotNull extends boolean }>
68
- ? TInferMode extends 'raw' // Raw mode
69
- ? TData // Just return the underlying type
70
- : TNotNull extends true // Query mode
71
- ? TData // Query mode, not null
72
- : TData | null // Query mode, nullable
73
- : never;
74
-
75
- /**
76
- `GetColumnConfig` can be used to infer either the full config of the column or a single parameter.
77
- @example
78
- type TConfig = GetColumnConfig<typeof column>;
79
- type TNotNull = GetColumnConfig<typeof column, 'notNull'>;
80
- */
81
- export type GetColumnConfig<TColumn extends AnyColumn, TParam extends keyof ColumnBaseConfig | undefined = undefined> =
82
- TColumn extends Column<infer TConfig> ? TParam extends keyof ColumnBaseConfig ? TConfig[TParam] : TConfig : never;
83
-
84
- export type InferColumnsDataTypes<TColumns extends Record<string, AnyColumn>> = {
85
- [Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;
86
- };
package/src/connection.ts DELETED
@@ -1,99 +0,0 @@
1
- export type MigrationMeta = { sql: string; folderMillis: number; hash: string };
2
-
3
- export interface Logger {
4
- logQuery(query: string, params: unknown[]): void;
5
- }
6
-
7
- export interface LogWriter {
8
- write(message: string): void;
9
- }
10
-
11
- export class ConsoleLogWriter implements LogWriter {
12
- write(message: string) {
13
- console.log(message);
14
- }
15
- }
16
-
17
- export class DefaultLogger implements Logger {
18
- readonly writer: LogWriter;
19
-
20
- constructor(config: { writer: LogWriter } = { writer: new ConsoleLogWriter() }) {
21
- this.writer = config.writer;
22
- }
23
-
24
- logQuery(query: string, params: unknown[]): void {
25
- const stringifiedParams = params.map((p) => {
26
- try {
27
- return JSON.stringify(p);
28
- } catch (e) {
29
- return String(p);
30
- }
31
- });
32
- const paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(', ')}]` : '';
33
- this.writer.write(`Query: ${query}${paramsStr}`);
34
- }
35
- }
36
-
37
- export class NoopLogger implements Logger {
38
- logQuery(): void {}
39
- }
40
-
41
- export interface KitConfig {
42
- out: string;
43
- schema: string;
44
- }
45
-
46
- export interface MigrationConfig {
47
- migrationsFolder: string;
48
- }
49
-
50
- export function readMigrationFiles(config: string | MigrationConfig): MigrationMeta[] {
51
- const fs = require('fs') as typeof import('fs');
52
- const crypto = require('crypto') as typeof import('crypto');
53
- const path = require('path') as typeof import('path');
54
-
55
- let migrationFolderTo: string | undefined;
56
- if (typeof config === 'string') {
57
- const configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');
58
- const jsonConfig = JSON.parse(configAsString) as KitConfig;
59
- migrationFolderTo = jsonConfig.out;
60
- } else {
61
- migrationFolderTo = config.migrationsFolder;
62
- }
63
-
64
- if (!migrationFolderTo) {
65
- throw Error('no migration folder defined');
66
- }
67
-
68
- const files = fs.readdirSync(migrationFolderTo);
69
- const migrationQueries: MigrationMeta[] = [];
70
- for (const migrationFolder of files) {
71
- if (migrationFolder === '.DS_Store') {
72
- continue;
73
- }
74
- const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
75
- const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
76
-
77
- const query = fs
78
- .readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`)
79
- .toString();
80
-
81
- const year = Number(migrationFolder.slice(0, 4));
82
- // second param for Date() is month index, that started from 0, so we need
83
- // to decrement a value for month
84
- const month = Number(migrationFolder.slice(4, 6)) - 1;
85
- const day = Number(migrationFolder.slice(6, 8));
86
- const hour = Number(migrationFolder.slice(8, 10));
87
- const min = Number(migrationFolder.slice(10, 12));
88
- const sec = Number(migrationFolder.slice(12, 14));
89
-
90
- const folderAsMillis = Date.UTC(year, month, day, hour, min, sec);
91
- migrationQueries.push({
92
- sql: query,
93
- folderMillis: folderAsMillis,
94
- hash: crypto.createHash('sha256').update(query).digest('hex'),
95
- });
96
- }
97
-
98
- return migrationQueries;
99
- }
@@ -1 +0,0 @@
1
- export * from './sql/expressions';
package/src/index.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './column';
2
- export * from './connection';
3
- export { param, sql } from './sql';
4
- export { Table } from './table';