durcno 1.0.0-alpha.0
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/LICENSE +201 -0
- package/README.md +56 -0
- package/dist/bin.cjs +13522 -0
- package/dist/src/_virtual/_rolldown/runtime.mjs +28 -0
- package/dist/src/cli/helpers.mjs +16 -0
- package/dist/src/columns/bigint.d.mts +19 -0
- package/dist/src/columns/bigint.mjs +32 -0
- package/dist/src/columns/bigserial.d.mts +24 -0
- package/dist/src/columns/bigserial.mjs +35 -0
- package/dist/src/columns/boolean.d.mts +19 -0
- package/dist/src/columns/boolean.mjs +31 -0
- package/dist/src/columns/bytea.d.mts +19 -0
- package/dist/src/columns/bytea.mjs +33 -0
- package/dist/src/columns/char.d.mts +32 -0
- package/dist/src/columns/char.mjs +44 -0
- package/dist/src/columns/cidr.d.mts +19 -0
- package/dist/src/columns/cidr.mjs +31 -0
- package/dist/src/columns/common.d.mts +233 -0
- package/dist/src/columns/common.mjs +276 -0
- package/dist/src/columns/date.d.mts +19 -0
- package/dist/src/columns/date.mjs +32 -0
- package/dist/src/columns/enum.d.mts +21 -0
- package/dist/src/columns/enum.mjs +35 -0
- package/dist/src/columns/inet.d.mts +19 -0
- package/dist/src/columns/inet.mjs +36 -0
- package/dist/src/columns/integer.d.mts +19 -0
- package/dist/src/columns/integer.mjs +32 -0
- package/dist/src/columns/json.d.mts +52 -0
- package/dist/src/columns/json.mjs +67 -0
- package/dist/src/columns/jsonb.d.mts +53 -0
- package/dist/src/columns/jsonb.mjs +68 -0
- package/dist/src/columns/macaddr.d.mts +19 -0
- package/dist/src/columns/macaddr.mjs +31 -0
- package/dist/src/columns/numeric.d.mts +42 -0
- package/dist/src/columns/numeric.mjs +57 -0
- package/dist/src/columns/postgis/geography/index.d.mts +18 -0
- package/dist/src/columns/postgis/geography/index.mjs +17 -0
- package/dist/src/columns/postgis/geography/linestring.d.mts +38 -0
- package/dist/src/columns/postgis/geography/linestring.mjs +70 -0
- package/dist/src/columns/postgis/geography/multilinestring.d.mts +39 -0
- package/dist/src/columns/postgis/geography/multilinestring.mjs +70 -0
- package/dist/src/columns/postgis/geography/multipoint.d.mts +38 -0
- package/dist/src/columns/postgis/geography/multipoint.mjs +70 -0
- package/dist/src/columns/postgis/geography/multipolygon.d.mts +40 -0
- package/dist/src/columns/postgis/geography/multipolygon.mjs +70 -0
- package/dist/src/columns/postgis/geography/point.d.mts +36 -0
- package/dist/src/columns/postgis/geography/point.mjs +69 -0
- package/dist/src/columns/postgis/geography/polygon.d.mts +39 -0
- package/dist/src/columns/postgis/geography/polygon.mjs +70 -0
- package/dist/src/columns/serial.d.mts +24 -0
- package/dist/src/columns/serial.mjs +35 -0
- package/dist/src/columns/smallint.d.mts +19 -0
- package/dist/src/columns/smallint.mjs +32 -0
- package/dist/src/columns/smallserial.d.mts +24 -0
- package/dist/src/columns/smallserial.mjs +35 -0
- package/dist/src/columns/text.d.mts +19 -0
- package/dist/src/columns/text.mjs +30 -0
- package/dist/src/columns/time.d.mts +44 -0
- package/dist/src/columns/time.mjs +47 -0
- package/dist/src/columns/timestamp.d.mts +44 -0
- package/dist/src/columns/timestamp.mjs +47 -0
- package/dist/src/columns/uuid.d.mts +33 -0
- package/dist/src/columns/uuid.mjs +44 -0
- package/dist/src/columns/varchar.d.mts +32 -0
- package/dist/src/columns/varchar.mjs +44 -0
- package/dist/src/connectors/bun.d.mts +18 -0
- package/dist/src/connectors/bun.mjs +97 -0
- package/dist/src/connectors/common.d.mts +148 -0
- package/dist/src/connectors/common.mjs +65 -0
- package/dist/src/connectors/pg.d.mts +18 -0
- package/dist/src/connectors/pg.mjs +103 -0
- package/dist/src/connectors/pglite.d.mts +19 -0
- package/dist/src/connectors/pglite.mjs +94 -0
- package/dist/src/connectors/postgres.d.mts +18 -0
- package/dist/src/connectors/postgres.mjs +93 -0
- package/dist/src/constraints/check.d.mts +88 -0
- package/dist/src/constraints/check.mjs +307 -0
- package/dist/src/constraints/primary-key.d.mts +28 -0
- package/dist/src/constraints/primary-key.mjs +36 -0
- package/dist/src/constraints/unique.d.mts +28 -0
- package/dist/src/constraints/unique.mjs +36 -0
- package/dist/src/db.d.mts +180 -0
- package/dist/src/db.mjs +191 -0
- package/dist/src/entity.mjs +23 -0
- package/dist/src/enumtype.d.mts +27 -0
- package/dist/src/enumtype.mjs +42 -0
- package/dist/src/filters/array.d.mts +97 -0
- package/dist/src/filters/array.mjs +150 -0
- package/dist/src/filters/custom.d.mts +12 -0
- package/dist/src/filters/custom.mjs +7 -0
- package/dist/src/filters/index.d.mts +155 -0
- package/dist/src/filters/index.mjs +318 -0
- package/dist/src/functions/index.d.mts +24 -0
- package/dist/src/functions/index.mjs +29 -0
- package/dist/src/index.d.mts +129 -0
- package/dist/src/index.mjs +78 -0
- package/dist/src/indexes.d.mts +31 -0
- package/dist/src/indexes.mjs +43 -0
- package/dist/src/migration/consts.d.mts +8 -0
- package/dist/src/migration/consts.mjs +8 -0
- package/dist/src/migration/ddl.d.mts +747 -0
- package/dist/src/migration/ddl.mjs +1084 -0
- package/dist/src/migration/index.d.mts +15 -0
- package/dist/src/migration/index.mjs +5 -0
- package/dist/src/migration/snapshot.d.mts +169 -0
- package/dist/src/migration/snapshot.mjs +123 -0
- package/dist/src/migration/statement.d.mts +89 -0
- package/dist/src/migration/statement.mjs +61 -0
- package/dist/src/models.d.mts +34 -0
- package/dist/src/models.mjs +27 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.mjs +126 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.mjs +29 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.mjs +165 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.mjs +92 -0
- package/dist/src/query-builders/aggregates.d.mts +20 -0
- package/dist/src/query-builders/aggregates.mjs +43 -0
- package/dist/src/query-builders/count.d.mts +19 -0
- package/dist/src/query-builders/count.mjs +36 -0
- package/dist/src/query-builders/delete.d.mts +19 -0
- package/dist/src/query-builders/delete.mjs +57 -0
- package/dist/src/query-builders/distinct.d.mts +19 -0
- package/dist/src/query-builders/distinct.mjs +42 -0
- package/dist/src/query-builders/exists.d.mts +19 -0
- package/dist/src/query-builders/exists.mjs +37 -0
- package/dist/src/query-builders/first.d.mts +17 -0
- package/dist/src/query-builders/first.mjs +46 -0
- package/dist/src/query-builders/insert-returning.d.mts +16 -0
- package/dist/src/query-builders/insert-returning.mjs +63 -0
- package/dist/src/query-builders/insert.d.mts +22 -0
- package/dist/src/query-builders/insert.mjs +93 -0
- package/dist/src/query-builders/orderby-clause.d.mts +14 -0
- package/dist/src/query-builders/orderby-clause.mjs +20 -0
- package/dist/src/query-builders/pre.d.mts +36 -0
- package/dist/src/query-builders/pre.mjs +60 -0
- package/dist/src/query-builders/query-promise.d.mts +14 -0
- package/dist/src/query-builders/query-promise.mjs +21 -0
- package/dist/src/query-builders/query.d.mts +14 -0
- package/dist/src/query-builders/query.mjs +17 -0
- package/dist/src/query-builders/raw.d.mts +14 -0
- package/dist/src/query-builders/raw.mjs +26 -0
- package/dist/src/query-builders/rq.d.mts +36 -0
- package/dist/src/query-builders/rq.mjs +231 -0
- package/dist/src/query-builders/select.d.mts +48 -0
- package/dist/src/query-builders/select.mjs +118 -0
- package/dist/src/query-builders/update.d.mts +24 -0
- package/dist/src/query-builders/update.mjs +99 -0
- package/dist/src/sequence.d.mts +48 -0
- package/dist/src/sequence.mjs +53 -0
- package/dist/src/sql.d.mts +15 -0
- package/dist/src/sql.mjs +36 -0
- package/dist/src/symbols.d.mts +4 -0
- package/dist/src/symbols.mjs +4 -0
- package/dist/src/table.d.mts +144 -0
- package/dist/src/table.mjs +134 -0
- package/dist/src/types.d.mts +4 -0
- package/dist/src/utils.mjs +10 -0
- package/dist/src/validators/zod.d.mts +23 -0
- package/dist/src/validators/zod.mjs +27 -0
- package/dist/src/wkx/binaryreader.mjs +56 -0
- package/dist/src/wkx/binarywriter.mjs +110 -0
- package/dist/src/wkx/geometry.mjs +101 -0
- package/dist/src/wkx/geometrycollection.mjs +113 -0
- package/dist/src/wkx/index.mjs +18 -0
- package/dist/src/wkx/linestring.mjs +124 -0
- package/dist/src/wkx/multilinestring.mjs +133 -0
- package/dist/src/wkx/multipoint.mjs +120 -0
- package/dist/src/wkx/multipolygon.mjs +155 -0
- package/dist/src/wkx/parser.mjs +183 -0
- package/dist/src/wkx/point.mjs +159 -0
- package/dist/src/wkx/polygon.mjs +189 -0
- package/dist/src/wkx/types.mjs +37 -0
- package/dist/src/wkx/wktparser.mjs +109 -0
- package/dist/src/wkx/zigzag.mjs +18 -0
- package/package.json +100 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
7
|
+
var __exportAll = (all, no_symbols) => {
|
|
8
|
+
let target = {};
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
14
|
+
return target;
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
18
|
+
key = keys[i];
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
20
|
+
get: ((k) => from[k]).bind(null, key),
|
|
21
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
//#endregion
|
|
28
|
+
export { __esmMin, __exportAll, __toCommonJS };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/cli/helpers.ts
|
|
2
|
+
function getUrlFromDbCredentials(dbCredentials) {
|
|
3
|
+
if ("url" in dbCredentials) return dbCredentials.url;
|
|
4
|
+
const { host, port, user, password, database, ssl } = dbCredentials;
|
|
5
|
+
const url = `postgresql://${encodeURIComponent(user) + (password ? `:${encodeURIComponent(password)}` : "")}@${port !== void 0 ? `${host}:${port}` : host}/${encodeURIComponent(database)}`;
|
|
6
|
+
const params = {};
|
|
7
|
+
if (ssl !== void 0) {
|
|
8
|
+
if (typeof ssl === "boolean") {
|
|
9
|
+
if (ssl) params.ssl = "true";
|
|
10
|
+
} else if (typeof ssl === "string") params.sslmode = ssl;
|
|
11
|
+
else if (typeof ssl === "object") throw new Error("Cannot convert 'ssl' ConnectionOptions object into a URL. Provide dbCredentials.url or use a boolean/string ssl value (e.g. 'require').");
|
|
12
|
+
}
|
|
13
|
+
return `${url}${Object.keys(params).length ? `?${Object.entries(params).map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join("&")}` : ""}`;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { getUrlFromDbCredentials };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/bigint.d.ts
|
|
6
|
+
type BigintValType = number;
|
|
7
|
+
type BigintConfig = ColumnConfig;
|
|
8
|
+
declare class BigintColumn<TConfig extends BigintConfig> extends Column<TConfig, BigintValType> {
|
|
9
|
+
static readonly id = "Column.Bigint";
|
|
10
|
+
get sqlTypeScalar(): string;
|
|
11
|
+
get zodTypeScaler(): z.ZodCoercedNumber<unknown>;
|
|
12
|
+
toDriverScalar(value: BigintValType | Sql | null): string | number | null;
|
|
13
|
+
toSQLScalar(value: number | Sql | null): string;
|
|
14
|
+
fromDriverScalar(value: number | string | null): BigintValType | null;
|
|
15
|
+
}
|
|
16
|
+
/** Creates a `bigint` column. PostgreSQL 64-bit signed integer, maps to `number`. */
|
|
17
|
+
declare function bigint<TConfig extends BigintConfig>(config: TConfig): BigintColumn<TConfig>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { BigintColumn, bigint };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/bigint.ts
|
|
5
|
+
var BigintColumn = class extends Column {
|
|
6
|
+
static id = "Column.Bigint";
|
|
7
|
+
get sqlTypeScalar() {
|
|
8
|
+
return "bigint";
|
|
9
|
+
}
|
|
10
|
+
get zodTypeScaler() {
|
|
11
|
+
return z.coerce.number();
|
|
12
|
+
}
|
|
13
|
+
toDriverScalar(value) {
|
|
14
|
+
if (value === null) return null;
|
|
15
|
+
return value instanceof Sql ? value.string : value;
|
|
16
|
+
}
|
|
17
|
+
toSQLScalar(value) {
|
|
18
|
+
if (value === null) return "NULL";
|
|
19
|
+
if (value instanceof Sql) return value.string;
|
|
20
|
+
return value.toString();
|
|
21
|
+
}
|
|
22
|
+
fromDriverScalar(value) {
|
|
23
|
+
if (value === null) return null;
|
|
24
|
+
return typeof value === "string" ? parseInt(value, 10) : value;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/** Creates a `bigint` column. PostgreSQL 64-bit signed integer, maps to `number`. */
|
|
28
|
+
function bigint(config) {
|
|
29
|
+
return new BigintColumn(config);
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { bigint };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/bigserial.d.ts
|
|
6
|
+
type BigserialValType = number;
|
|
7
|
+
type BigserialConfig = Pick<ColumnConfig, "primaryKey" | "unique">;
|
|
8
|
+
type BigserialInternalConfig<TConfig extends BigserialConfig> = TConfig & {
|
|
9
|
+
generated: "BY DEFAULT";
|
|
10
|
+
notNull: true;
|
|
11
|
+
};
|
|
12
|
+
declare class BigserialColumn<TConfig extends BigserialConfig> extends Column<BigserialInternalConfig<TConfig>, BigserialValType> {
|
|
13
|
+
static readonly id = "Column.Bigserial";
|
|
14
|
+
constructor(config: TConfig);
|
|
15
|
+
get sqlTypeScalar(): string;
|
|
16
|
+
get zodTypeScaler(): z.ZodCoercedNumber<unknown>;
|
|
17
|
+
toDriverScalar(value: BigserialValType | Sql | null): string | number | null;
|
|
18
|
+
toSQLScalar(value: number | Sql | null): string;
|
|
19
|
+
fromDriverScalar(value: number | string | null): BigserialValType | null;
|
|
20
|
+
}
|
|
21
|
+
/** Creates a `bigserial` column. Auto-incrementing 64-bit integer, implicitly `NOT NULL`. Maps to `number`. */
|
|
22
|
+
declare function bigserial<TConfig extends BigserialConfig>(config: TConfig): BigserialColumn<TConfig>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { bigserial };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/bigserial.ts
|
|
5
|
+
var BigserialColumn = class extends Column {
|
|
6
|
+
static id = "Column.Bigserial";
|
|
7
|
+
constructor(config) {
|
|
8
|
+
super(config);
|
|
9
|
+
}
|
|
10
|
+
get sqlTypeScalar() {
|
|
11
|
+
return "bigserial";
|
|
12
|
+
}
|
|
13
|
+
get zodTypeScaler() {
|
|
14
|
+
return z.coerce.number();
|
|
15
|
+
}
|
|
16
|
+
toDriverScalar(value) {
|
|
17
|
+
if (value === null) return null;
|
|
18
|
+
return value instanceof Sql ? value.string : value;
|
|
19
|
+
}
|
|
20
|
+
toSQLScalar(value) {
|
|
21
|
+
if (value === null) return "NULL";
|
|
22
|
+
if (value instanceof Sql) return value.string;
|
|
23
|
+
return value.toString();
|
|
24
|
+
}
|
|
25
|
+
fromDriverScalar(value) {
|
|
26
|
+
if (value === null) return null;
|
|
27
|
+
return typeof value === "string" ? parseInt(value, 10) : value;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
/** Creates a `bigserial` column. Auto-incrementing 64-bit integer, implicitly `NOT NULL`. Maps to `number`. */
|
|
31
|
+
function bigserial(config) {
|
|
32
|
+
return new BigserialColumn(config);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { bigserial };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/boolean.d.ts
|
|
6
|
+
type BooleanValType = boolean;
|
|
7
|
+
type BooleanConfig = ColumnConfig;
|
|
8
|
+
declare class BooleanColumn<TConfig extends BooleanConfig> extends Column<TConfig, BooleanValType> {
|
|
9
|
+
static readonly id = "Column.Boolean";
|
|
10
|
+
get sqlTypeScalar(): string;
|
|
11
|
+
get zodTypeScaler(): z.ZodBoolean;
|
|
12
|
+
toDriverScalar(value: BooleanValType | Sql | null): string | null;
|
|
13
|
+
toSQLScalar(value: boolean | Sql | null): string;
|
|
14
|
+
fromDriverScalar(value: boolean): BooleanValType | null;
|
|
15
|
+
}
|
|
16
|
+
/** Creates a `boolean` column. PostgreSQL true/false type, maps to `boolean`. */
|
|
17
|
+
declare function boolean<TConfig extends BooleanConfig>(config: TConfig): BooleanColumn<TConfig>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { boolean };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/boolean.ts
|
|
5
|
+
var BooleanColumn = class extends Column {
|
|
6
|
+
static id = "Column.Boolean";
|
|
7
|
+
get sqlTypeScalar() {
|
|
8
|
+
return "boolean";
|
|
9
|
+
}
|
|
10
|
+
get zodTypeScaler() {
|
|
11
|
+
return z.boolean();
|
|
12
|
+
}
|
|
13
|
+
toDriverScalar(value) {
|
|
14
|
+
if (value === null) return null;
|
|
15
|
+
return value instanceof Sql ? value.string : `${value ? "1" : "0"}`;
|
|
16
|
+
}
|
|
17
|
+
toSQLScalar(value) {
|
|
18
|
+
if (value === null) return "NULL";
|
|
19
|
+
return value instanceof Sql ? value.string : `${value ? "'1'" : "'0'"}`;
|
|
20
|
+
}
|
|
21
|
+
fromDriverScalar(value) {
|
|
22
|
+
if (value === null) return null;
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
/** Creates a `boolean` column. PostgreSQL true/false type, maps to `boolean`. */
|
|
27
|
+
function boolean(config) {
|
|
28
|
+
return new BooleanColumn(config);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { boolean };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/bytea.d.ts
|
|
6
|
+
type ByteaValType = Buffer;
|
|
7
|
+
type ByteaConfig = ColumnConfig;
|
|
8
|
+
declare class ByteaColumn<TConfig extends ByteaConfig> extends Column<TConfig, ByteaValType> {
|
|
9
|
+
static readonly id = "Column.Bytea";
|
|
10
|
+
get sqlTypeScalar(): string;
|
|
11
|
+
get zodTypeScaler(): z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>;
|
|
12
|
+
toDriverScalar(value: ByteaValType | Sql | null): string | null;
|
|
13
|
+
toSQLScalar(value: ByteaValType | Sql | null): string;
|
|
14
|
+
fromDriverScalar(value: Buffer | null): ByteaValType | null;
|
|
15
|
+
}
|
|
16
|
+
/** Creates a `bytea` column. PostgreSQL binary data type, maps to `Buffer`. */
|
|
17
|
+
declare function bytea<TConfig extends ByteaConfig>(config: TConfig): ByteaColumn<TConfig>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { bytea };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/bytea.ts
|
|
5
|
+
var ByteaColumn = class extends Column {
|
|
6
|
+
static id = "Column.Bytea";
|
|
7
|
+
get sqlTypeScalar() {
|
|
8
|
+
return "bytea";
|
|
9
|
+
}
|
|
10
|
+
get zodTypeScaler() {
|
|
11
|
+
return z.instanceof(Buffer);
|
|
12
|
+
}
|
|
13
|
+
toDriverScalar(value) {
|
|
14
|
+
if (value === null) return null;
|
|
15
|
+
if (value instanceof Sql) return value.string;
|
|
16
|
+
return `\\x${value.toString("hex")}`;
|
|
17
|
+
}
|
|
18
|
+
toSQLScalar(value) {
|
|
19
|
+
if (value === null) return "NULL";
|
|
20
|
+
if (value instanceof Sql) return value.string;
|
|
21
|
+
return `'\\x${value.toString("hex")}'`;
|
|
22
|
+
}
|
|
23
|
+
fromDriverScalar(value) {
|
|
24
|
+
if (value === null) return null;
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
/** Creates a `bytea` column. PostgreSQL binary data type, maps to `Buffer`. */
|
|
29
|
+
function bytea(config) {
|
|
30
|
+
return new ByteaColumn(config);
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { bytea };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/char.d.ts
|
|
6
|
+
type CharValType = string;
|
|
7
|
+
type CharConfig = ColumnConfig & {
|
|
8
|
+
/** Fixed character length (default: 1) */length?: number;
|
|
9
|
+
};
|
|
10
|
+
declare class CharColumn<TConfig extends CharConfig> extends Column<TConfig, CharValType> {
|
|
11
|
+
#private;
|
|
12
|
+
static readonly id = "Column.Char";
|
|
13
|
+
constructor(config: TConfig);
|
|
14
|
+
get sqlTypeScalar(): string;
|
|
15
|
+
get zodTypeScaler(): z.ZodString;
|
|
16
|
+
toDriverScalar(value: CharValType | Sql | null): string | null;
|
|
17
|
+
toSQLScalar(value: string | Sql | null): string;
|
|
18
|
+
fromDriverScalar(value: string | null): CharValType | null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates a `char` column. Fixed-length, blank-padded string. Maps to `string`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* char({ length: 2, notNull }) // char(2) NOT NULL
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @param config.length - Fixed character length (default: 1)
|
|
29
|
+
*/
|
|
30
|
+
declare function char<TConfig extends CharConfig>(config: TConfig): CharColumn<TConfig>;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { char };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/char.ts
|
|
5
|
+
var CharColumn = class extends Column {
|
|
6
|
+
static id = "Column.Char";
|
|
7
|
+
#length;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super(config);
|
|
10
|
+
this.#length = config.length ?? 1;
|
|
11
|
+
}
|
|
12
|
+
get sqlTypeScalar() {
|
|
13
|
+
return `char(${this.#length})`;
|
|
14
|
+
}
|
|
15
|
+
get zodTypeScaler() {
|
|
16
|
+
return z.string().length(this.#length);
|
|
17
|
+
}
|
|
18
|
+
toDriverScalar(value) {
|
|
19
|
+
if (value === null) return null;
|
|
20
|
+
return value instanceof Sql ? value.string : value;
|
|
21
|
+
}
|
|
22
|
+
toSQLScalar(value) {
|
|
23
|
+
if (value === null) return "NULL";
|
|
24
|
+
return value instanceof Sql ? value.string : `'${value.replace(/'/g, "''")}'`;
|
|
25
|
+
}
|
|
26
|
+
fromDriverScalar(value) {
|
|
27
|
+
return value === null ? null : value.trimEnd();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates a `char` column. Fixed-length, blank-padded string. Maps to `string`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* char({ length: 2, notNull }) // char(2) NOT NULL
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param config.length - Fixed character length (default: 1)
|
|
39
|
+
*/
|
|
40
|
+
function char(config) {
|
|
41
|
+
return new CharColumn(config);
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { char };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { Column, ColumnConfig } from "./common.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/columns/cidr.d.ts
|
|
6
|
+
type CidrValType = string;
|
|
7
|
+
type CidrConfig = ColumnConfig;
|
|
8
|
+
declare class CidrColumn<TConfig extends CidrConfig> extends Column<TConfig, CidrValType> {
|
|
9
|
+
static readonly id = "Column.Cidr";
|
|
10
|
+
get sqlTypeScalar(): string;
|
|
11
|
+
get zodTypeScaler(): z.ZodUnion<readonly [z.ZodCIDRv4, z.ZodCIDRv6]>;
|
|
12
|
+
toDriverScalar(value: CidrValType | Sql | null): string | null;
|
|
13
|
+
toSQLScalar(value: string | Sql | null): string;
|
|
14
|
+
fromDriverScalar(value: string | null): CidrValType | null;
|
|
15
|
+
}
|
|
16
|
+
/** Creates a `cidr` column. PostgreSQL IPv4/IPv6 network address type, maps to `string`. */
|
|
17
|
+
declare function cidr<TConfig extends CidrConfig>(config: TConfig): CidrColumn<TConfig>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { cidr };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Column } from "./common.mjs";
|
|
2
|
+
import { Sql } from "../sql.mjs";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
//#region src/columns/cidr.ts
|
|
5
|
+
var CidrColumn = class extends Column {
|
|
6
|
+
static id = "Column.Cidr";
|
|
7
|
+
get sqlTypeScalar() {
|
|
8
|
+
return "cidr";
|
|
9
|
+
}
|
|
10
|
+
get zodTypeScaler() {
|
|
11
|
+
return z.union([z.cidrv4(), z.cidrv6()]);
|
|
12
|
+
}
|
|
13
|
+
toDriverScalar(value) {
|
|
14
|
+
if (value === null) return null;
|
|
15
|
+
return value instanceof Sql ? value.string : value;
|
|
16
|
+
}
|
|
17
|
+
toSQLScalar(value) {
|
|
18
|
+
if (value === null) return "NULL";
|
|
19
|
+
if (value instanceof Sql) return value.string;
|
|
20
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
21
|
+
}
|
|
22
|
+
fromDriverScalar(value) {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
/** Creates a `cidr` column. PostgreSQL IPv4/IPv6 network address type, maps to `string`. */
|
|
27
|
+
function cidr(config) {
|
|
28
|
+
return new CidrColumn(config);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { cidr };
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
import { entityType } from "../symbols.mjs";
|
|
3
|
+
import { Arg } from "../query-builders/pre.mjs";
|
|
4
|
+
import { StdTableColumn, TableColumn } from "../table.mjs";
|
|
5
|
+
import * as z from "zod";
|
|
6
|
+
|
|
7
|
+
//#region src/columns/common.d.ts
|
|
8
|
+
declare const notNull: true;
|
|
9
|
+
declare const unique: true;
|
|
10
|
+
declare const primaryKey: true;
|
|
11
|
+
type Tuple<T, L extends number, Acc extends T[] = []> = Acc["length"] extends L ? Acc : Tuple<T, L, [...Acc, T]>;
|
|
12
|
+
type MultiDimValueArray<T, D extends readonly (number | null)[]> = D extends readonly [infer First, ...infer Rest] ? First extends number ? Rest extends readonly (number | null)[] ? MultiDimValueArray<Tuple<T, First>, Rest> : never : First extends null ? Rest extends readonly (number | null)[] ? MultiDimValueArray<T[], Rest> : never : never : T;
|
|
13
|
+
type GetValueArray<T, TConfig> = TConfig extends {
|
|
14
|
+
dimension: infer D;
|
|
15
|
+
} ? D extends readonly (number | null)[] ? MultiDimValueArray<T, D> : T : T;
|
|
16
|
+
type MultiDimZodTypeArray<T extends z.ZodType, D extends readonly (number | null)[]> = D extends readonly [infer First, ...infer Rest] ? First extends number ? Rest extends readonly (number | null)[] ? MultiDimZodTypeArray<z.ZodTuple<Tuple<T, First>, null>, Rest> : never : First extends null ? Rest extends readonly (number | null)[] ? MultiDimZodTypeArray<z.ZodArray<T>, Rest> : never : never : T;
|
|
17
|
+
type GetZodTypeArray<T extends z.ZodType, TConfig> = TConfig extends {
|
|
18
|
+
dimension: infer D;
|
|
19
|
+
} ? D extends readonly (number | null)[] ? MultiDimZodTypeArray<T, D> : T : T;
|
|
20
|
+
interface TableLike {
|
|
21
|
+
_: {
|
|
22
|
+
schema: string;
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
type OnDeleteAction = "CASCADE" | "SET NULL" | "SET DEFAULT" | "RESTRICT" | "NO ACTION";
|
|
27
|
+
type ColumnConfig = {
|
|
28
|
+
/**
|
|
29
|
+
* SQL equivalent: `GENERATED <ALWAYS|BY DEFAULT> AS ...`
|
|
30
|
+
*/
|
|
31
|
+
generated?: "ALWAYS" | "BY DEFAULT";
|
|
32
|
+
/**
|
|
33
|
+
* SQL equivalent: the value following `AS`, e.g. `IDENTITY` or `(START WITH 1)`
|
|
34
|
+
*/
|
|
35
|
+
as?: "IDENTITY" | `(${string})`;
|
|
36
|
+
/**
|
|
37
|
+
* The dimension of the array column.
|
|
38
|
+
*/
|
|
39
|
+
dimension?: Readonly<[number | null, ...(number | null)[]]>;
|
|
40
|
+
/**
|
|
41
|
+
* SQL equivalent: `PRIMARY KEY`
|
|
42
|
+
*/
|
|
43
|
+
primaryKey?: true;
|
|
44
|
+
/**
|
|
45
|
+
* SQL equivalent: `UNIQUE`
|
|
46
|
+
*/
|
|
47
|
+
unique?: true;
|
|
48
|
+
/**
|
|
49
|
+
* SQL equivalent: `NOT NULL`
|
|
50
|
+
*/
|
|
51
|
+
notNull?: true;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Type that augments C with a `hasDefault` property set to true.
|
|
55
|
+
* Used as the return type of `default()` method.
|
|
56
|
+
*/
|
|
57
|
+
type HasDefault<C> = C & {
|
|
58
|
+
hasDefault: true;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Type that augments C with a `hasInsertFn` property set to true.
|
|
62
|
+
* Used as the return type of `$insertFn()` method.
|
|
63
|
+
*/
|
|
64
|
+
type HasInsertFn<C> = C & {
|
|
65
|
+
hasInsertFn: true;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Type that augments C with a `hasUpdateFn` property set to true.
|
|
69
|
+
* Used as the return type of `$updateFn()` method.
|
|
70
|
+
*/
|
|
71
|
+
type HasUpdateFn<C> = C & {
|
|
72
|
+
hasUpdateFn: true;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Describes a foreign key reference target for `references()`.
|
|
76
|
+
* Supports either a direct column resolver function or an object with
|
|
77
|
+
* a resolver and optional `onDelete` action.
|
|
78
|
+
*/
|
|
79
|
+
type BuildRef<ValType> = (() => TableColumn<string, string, Key, Column<any, ValType>>) | {
|
|
80
|
+
column: () => TableColumn<string, string, Key, Column<any, ValType>>;
|
|
81
|
+
onDelete?: OnDeleteAction;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Type that augments C with a `hasReferences` property set to true.
|
|
85
|
+
* Used for columns that have foreign key references.
|
|
86
|
+
*/
|
|
87
|
+
type HasReferences<C> = C & {
|
|
88
|
+
hasReferences: true;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Type that augments C with a `ValTypeOverriden` property set to true and a `ValTypeOverride` property set to U.
|
|
92
|
+
*/
|
|
93
|
+
type SetValueType<C, U> = C & {
|
|
94
|
+
$: {
|
|
95
|
+
HasValTypeOverridde: true;
|
|
96
|
+
ValTypeOverride: U;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
declare abstract class Column<TConfig extends ColumnConfig, TColVal> {
|
|
100
|
+
#private;
|
|
101
|
+
static readonly [entityType] = "Column";
|
|
102
|
+
readonly config: TConfig;
|
|
103
|
+
readonly $: {
|
|
104
|
+
ColValType: TColVal;
|
|
105
|
+
ValTypeBase: GetValueArray<TColVal, TConfig>;
|
|
106
|
+
HasValTypeOverridde: {};
|
|
107
|
+
ValTypeOverride: {};
|
|
108
|
+
};
|
|
109
|
+
readonly ValType: this["$"]["HasValTypeOverridde"] extends true ? this["$"]["ValTypeOverride"] : this["$"]["ValTypeBase"];
|
|
110
|
+
readonly ValTypeInsert: TConfig extends {
|
|
111
|
+
generated: "ALWAYS";
|
|
112
|
+
} ? never : TConfig extends {
|
|
113
|
+
generated: "BY DEFAULT";
|
|
114
|
+
} ? this["ValType"] | undefined : this extends {
|
|
115
|
+
hasDefault: true;
|
|
116
|
+
} ? this["ValType"] | Sql | null | undefined : this extends {
|
|
117
|
+
hasInsertFn: true;
|
|
118
|
+
} ? this["ValType"] | Sql | null | undefined : TConfig extends {
|
|
119
|
+
notNull: true;
|
|
120
|
+
} ? this["ValType"] | Sql : this["ValType"] | Sql | null | undefined;
|
|
121
|
+
readonly ValTypeUpdate: TConfig extends {
|
|
122
|
+
primaryKey: true;
|
|
123
|
+
} ? never : TConfig extends {
|
|
124
|
+
notNull: true;
|
|
125
|
+
} ? this["ValType"] : this["ValType"] | null;
|
|
126
|
+
readonly ValTypeSelect: TConfig extends {
|
|
127
|
+
generated: string;
|
|
128
|
+
} ? this["ValType"] : TConfig extends {
|
|
129
|
+
primaryKey: true;
|
|
130
|
+
} ? this["ValType"] : TConfig extends {
|
|
131
|
+
notNull: true;
|
|
132
|
+
} ? this["ValType"] : this["ValType"] | null;
|
|
133
|
+
constructor(config: TConfig);
|
|
134
|
+
_: {
|
|
135
|
+
setName: (name: string) => void;
|
|
136
|
+
setTable: (table: TableLike) => void;
|
|
137
|
+
};
|
|
138
|
+
get name(): string | undefined;
|
|
139
|
+
get nameSnake(): string | undefined;
|
|
140
|
+
get table(): TableLike | undefined;
|
|
141
|
+
get generated(): TConfig extends {
|
|
142
|
+
generated: string;
|
|
143
|
+
} ? TConfig["generated"] : undefined;
|
|
144
|
+
get as(): TConfig extends {
|
|
145
|
+
as: string;
|
|
146
|
+
} ? TConfig["as"] : undefined;
|
|
147
|
+
get isPrimaryKey(): TConfig extends {
|
|
148
|
+
primaryKey: true;
|
|
149
|
+
} ? true : false;
|
|
150
|
+
get isGenerated(): TConfig extends {
|
|
151
|
+
generated: string;
|
|
152
|
+
} ? true : false;
|
|
153
|
+
get isUnique(): TConfig extends {
|
|
154
|
+
unique: true;
|
|
155
|
+
} ? true : false;
|
|
156
|
+
get isNotNull(): TConfig extends {
|
|
157
|
+
notNull: true;
|
|
158
|
+
} ? true : false;
|
|
159
|
+
abstract get sqlTypeScalar(): string;
|
|
160
|
+
get sqlType(): string;
|
|
161
|
+
abstract get zodTypeScaler(): z.ZodType;
|
|
162
|
+
get zodType(): GetZodTypeArray<this["zodTypeScaler"], this["config"]>;
|
|
163
|
+
/**
|
|
164
|
+
* Returns the fully-qualified, double-quoted column identifier separated by a dot.
|
|
165
|
+
* @returns string `"table"."column"`
|
|
166
|
+
*/
|
|
167
|
+
get fullName(): string;
|
|
168
|
+
abstract toDriverScalar(value: TColVal | Sql | null): string | number | null;
|
|
169
|
+
abstract toSQLScalar(value: TColVal | Sql | null): string;
|
|
170
|
+
abstract fromDriverScalar(value: unknown): TColVal | null;
|
|
171
|
+
/**
|
|
172
|
+
* Converts a JavaScript value to the PostgreSQL driver format.
|
|
173
|
+
* Handles array dimensions if configured, otherwise delegates to scalar implementation.
|
|
174
|
+
*/
|
|
175
|
+
toDriver(value: this["ValType"] | Sql | null): string | number | null;
|
|
176
|
+
/**
|
|
177
|
+
* Converts a JavaScript value to SQL string literal.
|
|
178
|
+
* Handles array dimensions with ARRAY[...] syntax if configured.
|
|
179
|
+
*/
|
|
180
|
+
toSQL(value: this["ValType"] | Sql | null): string;
|
|
181
|
+
/**
|
|
182
|
+
* Converts a PostgreSQL result back to JavaScript value.
|
|
183
|
+
* Handles array dimensions if configured, otherwise delegates to scalar implementation.
|
|
184
|
+
*/
|
|
185
|
+
fromDriver(value: unknown): this["ValType"] | null;
|
|
186
|
+
/**
|
|
187
|
+
* Sets a default value for this column.
|
|
188
|
+
* SQL equivalent: `DEFAULT <value>`
|
|
189
|
+
* @param value - The default value or SQL expression
|
|
190
|
+
* @returns this column instance
|
|
191
|
+
*/
|
|
192
|
+
default(value: this["ValType"] | Sql): HasDefault<this>;
|
|
193
|
+
get hasDefault(): boolean;
|
|
194
|
+
defaultToSQL(): string | undefined;
|
|
195
|
+
/**
|
|
196
|
+
* Sets a foreign key reference for this column.
|
|
197
|
+
* SQL equivalent: `REFERENCES <table>(<column>) [ON DELETE <action>]`
|
|
198
|
+
* @param ref - A function returning the referenced column, or an object with column and onDelete
|
|
199
|
+
* @returns this column instance
|
|
200
|
+
*/
|
|
201
|
+
references(ref: BuildRef<this["ValType"]>): HasReferences<this>;
|
|
202
|
+
get hasReferences(): boolean;
|
|
203
|
+
get referencesCol(): StdTableColumn | null;
|
|
204
|
+
get referencesOnDelete(): OnDeleteAction | null;
|
|
205
|
+
/**
|
|
206
|
+
* Sets a function to be called during INSERT queries to generate a value.
|
|
207
|
+
* @param fn - A function that returns the value to insert
|
|
208
|
+
* @returns HasInsertFn<this>
|
|
209
|
+
*/
|
|
210
|
+
$insertFn(fn: () => this["ValType"]): HasInsertFn<this>;
|
|
211
|
+
get hasInsertFn(): boolean;
|
|
212
|
+
getInsertFnVal(): this["ValType"] | null;
|
|
213
|
+
/**
|
|
214
|
+
* Sets a function to be called during UPDATE queries to generate a value.
|
|
215
|
+
* @param fn - A function that returns the value to use in updates
|
|
216
|
+
* @returns HasUpdateFn<this>
|
|
217
|
+
*/
|
|
218
|
+
$updateFn(fn: () => this["ValType"]): HasUpdateFn<this>;
|
|
219
|
+
get hasUpdateFn(): boolean;
|
|
220
|
+
getUpdateFnVal(): this["ValType"] | null;
|
|
221
|
+
/**
|
|
222
|
+
* Specifies the TypeScript type for this column's value.
|
|
223
|
+
* This is a compile-time only operation and does not affect runtime behavior.
|
|
224
|
+
* @returns this column with the specified value type
|
|
225
|
+
*/
|
|
226
|
+
$type<T>(): SetValueType<this, T>;
|
|
227
|
+
/** Creates an `Arg` instance for this column, to be used in prepared queries.
|
|
228
|
+
* @returns an `Arg` instance with the type of this column
|
|
229
|
+
*/
|
|
230
|
+
arg(): Arg<this["ValType"]>;
|
|
231
|
+
}
|
|
232
|
+
//#endregion
|
|
233
|
+
export { Column, ColumnConfig, OnDeleteAction, notNull, primaryKey, unique };
|