drizzle-orm 0.12.0-beta.16 → 0.12.0-beta.18
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/.turbo/turbo-build:int.log +13 -0
- package/.turbo/turbo-test:types.log +5 -0
- package/README.md +0 -30
- package/{alias.d.ts → dist/alias.d.ts} +0 -0
- package/{alias.js → dist/alias.js} +0 -0
- package/{alias.js.map → dist/alias.js.map} +0 -0
- package/{branded-types.d.ts → dist/branded-types.d.ts} +0 -0
- package/{branded-types.js → dist/branded-types.js} +0 -0
- package/{branded-types.js.map → dist/branded-types.js.map} +0 -0
- package/{column-builder.d.ts → dist/column-builder.d.ts} +0 -0
- package/{column-builder.js → dist/column-builder.js} +0 -0
- package/{column-builder.js.map → dist/column-builder.js.map} +0 -0
- package/{column.d.ts → dist/column.d.ts} +0 -0
- package/{column.js → dist/column.js} +0 -0
- package/{column.js.map → dist/column.js.map} +0 -0
- package/{connection.d.ts → dist/connection.d.ts} +0 -0
- package/{connection.js → dist/connection.js} +5 -28
- package/dist/connection.js.map +1 -0
- package/{expressions.d.ts → dist/expressions.d.ts} +0 -0
- package/{expressions.js → dist/expressions.js} +0 -0
- package/{expressions.js.map → dist/expressions.js.map} +0 -0
- package/{index.d.ts → dist/index.d.ts} +0 -0
- package/{index.js → dist/index.js} +0 -0
- package/{index.js.map → dist/index.js.map} +0 -0
- package/{operations.d.ts → dist/operations.d.ts} +0 -0
- package/{operations.js → dist/operations.js} +0 -0
- package/{operations.js.map → dist/operations.js.map} +0 -0
- package/dist/package.json +58 -0
- package/dist/query-promise.d.ts +7 -0
- package/dist/query-promise.js +27 -0
- package/dist/query-promise.js.map +1 -0
- package/dist/readme.md +30 -0
- package/{sql → dist/sql}/expressions/conditions.d.ts +0 -0
- package/{sql → dist/sql}/expressions/conditions.js +0 -0
- package/{sql → dist/sql}/expressions/conditions.js.map +0 -0
- package/{sql → dist/sql}/expressions/index.d.ts +0 -0
- package/{sql → dist/sql}/expressions/index.js +0 -0
- package/{sql → dist/sql}/expressions/index.js.map +0 -0
- package/{sql → dist/sql}/expressions/select.d.ts +0 -0
- package/{sql → dist/sql}/expressions/select.js +0 -0
- package/{sql → dist/sql}/expressions/select.js.map +0 -0
- package/{sql → dist/sql}/index.d.ts +0 -0
- package/{sql → dist/sql}/index.js +0 -0
- package/{sql → dist/sql}/index.js.map +0 -0
- package/{table.d.ts → dist/table.d.ts} +0 -0
- package/{table.js → dist/table.js} +0 -0
- package/{table.js.map → dist/table.js.map} +0 -0
- package/{utils.d.ts → dist/utils.d.ts} +0 -0
- package/{utils.js → dist/utils.js} +0 -0
- package/{utils.js.map → dist/utils.js.map} +0 -0
- package/package.json +6 -3
- package/package.tgz +0 -0
- package/src/alias.ts +47 -0
- package/src/column-builder.ts +69 -0
- package/src/column.ts +86 -0
- package/src/connection.ts +99 -0
- package/src/expressions.ts +1 -0
- package/src/index.ts +4 -0
- package/src/operations.ts +22 -0
- package/src/query-promise.ts +31 -0
- package/src/sql/expressions/conditions.ts +168 -0
- package/src/sql/expressions/index.ts +2 -0
- package/src/sql/expressions/select.ts +10 -0
- package/src/sql/index.ts +254 -0
- package/src/table.ts +45 -0
- package/src/utils.ts +140 -0
- package/tsconfig.build.json +8 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +7 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/connection.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
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
|
package/README.md
CHANGED
|
@@ -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
|
-
```
|
|
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,32 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.readMigrationFiles = exports.NoopLogger = exports.DefaultLogger = exports.ConsoleLogWriter = void 0;
|
|
27
|
-
const crypto = __importStar(require("crypto"));
|
|
28
|
-
const fs = __importStar(require("fs"));
|
|
29
|
-
const path = __importStar(require("path"));
|
|
30
4
|
class ConsoleLogWriter {
|
|
31
5
|
write(message) {
|
|
32
6
|
console.log(message);
|
|
@@ -56,6 +30,9 @@ class NoopLogger {
|
|
|
56
30
|
}
|
|
57
31
|
exports.NoopLogger = NoopLogger;
|
|
58
32
|
function readMigrationFiles(config) {
|
|
33
|
+
const fs = require('fs');
|
|
34
|
+
const crypto = require('crypto');
|
|
35
|
+
const path = require('path');
|
|
59
36
|
let migrationFolderTo;
|
|
60
37
|
if (typeof config === 'string') {
|
|
61
38
|
const configAsString = fs.readFileSync(path.resolve('.', config), 'utf8');
|
|
@@ -68,9 +45,9 @@ function readMigrationFiles(config) {
|
|
|
68
45
|
if (!migrationFolderTo) {
|
|
69
46
|
throw Error('no migration folder defined');
|
|
70
47
|
}
|
|
71
|
-
const
|
|
48
|
+
const files = fs.readdirSync(migrationFolderTo);
|
|
72
49
|
const migrationQueries = [];
|
|
73
|
-
for (const migrationFolder of
|
|
50
|
+
for (const migrationFolder of files) {
|
|
74
51
|
if (migrationFolder === '.DS_Store') {
|
|
75
52
|
continue;
|
|
76
53
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
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
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare abstract class QueryPromise<T> implements Promise<T> {
|
|
2
|
+
[Symbol.toStringTag]: string;
|
|
3
|
+
catch<TResult = never>(onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<T | TResult>;
|
|
4
|
+
finally(onFinally?: (() => void) | null | undefined): Promise<T>;
|
|
5
|
+
then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
|
|
6
|
+
protected abstract execute(): Promise<T>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.QueryPromise = void 0;
|
|
5
|
+
class QueryPromise {
|
|
6
|
+
constructor() {
|
|
7
|
+
this[_a] = 'QueryPromise';
|
|
8
|
+
}
|
|
9
|
+
catch(onRejected) {
|
|
10
|
+
return this.then(undefined, onRejected);
|
|
11
|
+
}
|
|
12
|
+
finally(onFinally) {
|
|
13
|
+
return this.then((value) => {
|
|
14
|
+
onFinally === null || onFinally === void 0 ? void 0 : onFinally();
|
|
15
|
+
return value;
|
|
16
|
+
}, (reason) => {
|
|
17
|
+
onFinally === null || onFinally === void 0 ? void 0 : onFinally();
|
|
18
|
+
return Promise.reject(reason);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
then(onFulfilled, onRejected) {
|
|
22
|
+
return this.execute().then(onFulfilled, onRejected);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.QueryPromise = QueryPromise;
|
|
26
|
+
_a = Symbol.toStringTag;
|
|
27
|
+
//# sourceMappingURL=query-promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-promise.js","sourceRoot":"","sources":["../src/query-promise.ts"],"names":[],"mappings":";;;;AAAA,MAAsB,YAAY;IAAlC;QACC,QAAoB,GAAG,cAAc,CAAC;IA6BvC,CAAC;IA3BA,KAAK,CACJ,UAAiF;QAEjF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,SAA2C;QAClD,OAAO,IAAI,CAAC,IAAI,CACf,CAAC,KAAK,EAAE,EAAE;YACT,SAAS,aAAT,SAAS,uBAAT,SAAS,EAAI,CAAC;YACd,OAAO,KAAK,CAAC;QACd,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACV,SAAS,aAAT,SAAS,uBAAT,SAAS,EAAI,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CACD,CAAC;IACH,CAAC;IAED,IAAI,CACH,WAAiF,EACjF,UAAmF;QAEnF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;CAGD;AA9BD,oCA8BC;KA7BC,MAAM,CAAC,WAAW"}
|
package/dist/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
|
+
```
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "0.12.0-beta.
|
|
3
|
+
"version": "0.12.0-beta.18",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -43,9 +43,12 @@
|
|
|
43
43
|
"optional": true
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^18.11.9"
|
|
48
|
+
},
|
|
46
49
|
"scripts": {
|
|
47
|
-
"build": "
|
|
48
|
-
"test": "echo WARN: No tests defined!",
|
|
50
|
+
"build": "tsc -p tsconfig.build.json",
|
|
51
|
+
"test:types": "echo WARN: No tests defined!",
|
|
49
52
|
"pack": "cp ../README.md package.json dist/ && (cd dist && pnpm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
|
|
50
53
|
"publish:beta": "npm publish package.tgz --tag beta",
|
|
51
54
|
"release:beta": "pnpm build && pnpm version prerelease && pnpm run pack && pnpm publish:beta",
|
package/package.tgz
ADDED
|
Binary file
|
package/src/alias.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
};
|