drizzle-orm 0.30.10 → 0.31.0-e64a96d
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/column-builder.cjs.map +1 -1
- package/column-builder.d.cts +5 -1
- package/column-builder.d.ts +5 -1
- package/column-builder.js.map +1 -1
- package/mysql-core/table.cjs +1 -0
- package/mysql-core/table.cjs.map +1 -1
- package/mysql-core/table.js +1 -0
- package/mysql-core/table.js.map +1 -1
- package/mysql-core/utils.d.cts +1 -1
- package/mysql-core/utils.d.ts +1 -1
- package/package.json +25 -1
- package/pg-core/columns/common.cjs +84 -0
- package/pg-core/columns/common.cjs.map +1 -1
- package/pg-core/columns/common.d.cts +53 -0
- package/pg-core/columns/common.d.ts +53 -0
- package/pg-core/columns/common.js +82 -0
- package/pg-core/columns/common.js.map +1 -1
- package/pg-core/columns/index.cjs +3 -1
- package/pg-core/columns/index.cjs.map +1 -1
- package/pg-core/columns/index.d.cts +1 -0
- package/pg-core/columns/index.d.ts +1 -0
- package/pg-core/columns/index.js +1 -0
- package/pg-core/columns/index.js.map +1 -1
- package/pg-core/columns/vector.cjs +55 -0
- package/pg-core/columns/vector.cjs.map +1 -0
- package/pg-core/columns/vector.d.cts +29 -0
- package/pg-core/columns/vector.d.ts +29 -0
- package/pg-core/columns/vector.js +29 -0
- package/pg-core/columns/vector.js.map +1 -0
- package/pg-core/dialect.cjs +3 -2
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.d.cts +1 -1
- package/pg-core/dialect.d.ts +1 -1
- package/pg-core/dialect.js +3 -2
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/indexes.cjs +63 -22
- package/pg-core/indexes.cjs.map +1 -1
- package/pg-core/indexes.d.cts +29 -22
- package/pg-core/indexes.d.ts +29 -22
- package/pg-core/indexes.js +64 -23
- package/pg-core/indexes.js.map +1 -1
- package/pg-core/table.cjs +8 -0
- package/pg-core/table.cjs.map +1 -1
- package/pg-core/table.d.cts +2 -2
- package/pg-core/table.d.ts +2 -2
- package/pg-core/table.js +8 -0
- package/pg-core/table.js.map +1 -1
- package/pg-core/utils.cjs +1 -1
- package/pg-core/utils.cjs.map +1 -1
- package/pg-core/utils.d.cts +1 -1
- package/pg-core/utils.d.ts +1 -1
- package/pg-core/utils.js +1 -1
- package/pg-core/utils.js.map +1 -1
- package/relations.cjs +1 -1
- package/relations.cjs.map +1 -1
- package/relations.js +1 -1
- package/relations.js.map +1 -1
- package/sql/functions/vector.cjs +45 -0
- package/sql/functions/vector.cjs.map +1 -0
- package/sql/functions/vector.d.cts +71 -0
- package/sql/functions/vector.d.ts +71 -0
- package/sql/functions/vector.js +19 -0
- package/sql/functions/vector.js.map +1 -0
- package/sql/sql.cjs +3 -0
- package/sql/sql.cjs.map +1 -1
- package/sql/sql.d.cts +1 -0
- package/sql/sql.d.ts +1 -0
- package/sql/sql.js +3 -0
- package/sql/sql.js.map +1 -1
- package/sqlite-core/table.cjs +1 -0
- package/sqlite-core/table.cjs.map +1 -1
- package/sqlite-core/table.js +1 -0
- package/sqlite-core/table.js.map +1 -1
- package/sqlite-core/utils.d.cts +1 -1
- package/sqlite-core/utils.d.ts +1 -1
- package/table.cjs +6 -0
- package/table.cjs.map +1 -1
- package/table.js +5 -0
- package/table.js.map +1 -1
- package/version.cjs +2 -2
- package/version.cjs.map +1 -1
- package/version.d.cts +2 -2
- package/version.d.ts +2 -2
- package/version.js +2 -2
- package/version.js.map +1 -1
|
@@ -43,6 +43,10 @@ class PgColumnBuilder extends ColumnBuilder {
|
|
|
43
43
|
);
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
+
/** @internal */
|
|
47
|
+
buildExtraConfigColumn(table) {
|
|
48
|
+
return new ExtraConfigColumn(table, this.config);
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
51
|
class PgColumn extends Column {
|
|
48
52
|
constructor(table, config) {
|
|
@@ -54,6 +58,82 @@ class PgColumn extends Column {
|
|
|
54
58
|
}
|
|
55
59
|
static [entityKind] = "PgColumn";
|
|
56
60
|
}
|
|
61
|
+
class ExtraConfigColumn extends PgColumn {
|
|
62
|
+
static [entityKind] = "ExtraConfigColumn";
|
|
63
|
+
getSQLType() {
|
|
64
|
+
return this.getSQLType();
|
|
65
|
+
}
|
|
66
|
+
indexConfig = {
|
|
67
|
+
order: this.config.order ?? "asc",
|
|
68
|
+
nulls: this.config.nulls ?? "last",
|
|
69
|
+
opClass: this.config.opClass
|
|
70
|
+
};
|
|
71
|
+
defaultConfig = {
|
|
72
|
+
order: "asc",
|
|
73
|
+
nulls: "last",
|
|
74
|
+
opClass: void 0
|
|
75
|
+
};
|
|
76
|
+
asc() {
|
|
77
|
+
this.indexConfig.order = "asc";
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
desc() {
|
|
81
|
+
this.indexConfig.order = "desc";
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
nullsFirst() {
|
|
85
|
+
this.indexConfig.nulls = "first";
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
nullsLast() {
|
|
89
|
+
this.indexConfig.nulls = "last";
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* ### PostgreSQL documentation quote
|
|
94
|
+
*
|
|
95
|
+
* > An operator class with optional parameters can be specified for each column of an index.
|
|
96
|
+
* The operator class identifies the operators to be used by the index for that column.
|
|
97
|
+
* For example, a B-tree index on four-byte integers would use the int4_ops class;
|
|
98
|
+
* this operator class includes comparison functions for four-byte integers.
|
|
99
|
+
* In practice the default operator class for the column's data type is usually sufficient.
|
|
100
|
+
* The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.
|
|
101
|
+
* For example, we might want to sort a complex-number data type either by absolute value or by real part.
|
|
102
|
+
* We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.
|
|
103
|
+
* More information about operator classes check:
|
|
104
|
+
*
|
|
105
|
+
* ### Useful links
|
|
106
|
+
* https://www.postgresql.org/docs/current/sql-createindex.html
|
|
107
|
+
*
|
|
108
|
+
* https://www.postgresql.org/docs/current/indexes-opclass.html
|
|
109
|
+
*
|
|
110
|
+
* https://www.postgresql.org/docs/current/xindex.html
|
|
111
|
+
*
|
|
112
|
+
* ### Additional types
|
|
113
|
+
* If you have the `pg_vector` extension installed in your database, you can use the
|
|
114
|
+
* `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.
|
|
115
|
+
*
|
|
116
|
+
* **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**
|
|
117
|
+
*
|
|
118
|
+
* @param opClass
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
op(opClass) {
|
|
122
|
+
this.indexConfig.opClass = opClass;
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
class IndexedColumn {
|
|
127
|
+
static [entityKind] = "IndexedColumn";
|
|
128
|
+
constructor(name, type, indexConfig) {
|
|
129
|
+
this.name = name;
|
|
130
|
+
this.type = type;
|
|
131
|
+
this.indexConfig = indexConfig;
|
|
132
|
+
}
|
|
133
|
+
name;
|
|
134
|
+
type;
|
|
135
|
+
indexConfig;
|
|
136
|
+
}
|
|
57
137
|
class PgArrayBuilder extends PgColumnBuilder {
|
|
58
138
|
static [entityKind] = "PgArrayBuilder";
|
|
59
139
|
constructor(name, baseBuilder, size) {
|
|
@@ -99,6 +179,8 @@ class PgArray extends PgColumn {
|
|
|
99
179
|
}
|
|
100
180
|
}
|
|
101
181
|
export {
|
|
182
|
+
ExtraConfigColumn,
|
|
183
|
+
IndexedColumn,
|
|
102
184
|
PgArray,
|
|
103
185
|
PgArrayBuilder,
|
|
104
186
|
PgColumn,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Update } from '~/utils.ts';\n\nimport type { ForeignKey, UpdateDeleteAction } from '~/pg-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/pg-core/foreign-keys.ts';\nimport type { AnyPgTable, PgTable } from '~/pg-core/table.ts';\nimport { iife } from '~/tracing-utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\nimport { makePgArray, parsePgArray } from '../utils/array.ts';\n\nexport interface ReferenceConfig {\n\tref: () => PgColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface PgColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'pg' }> {}\n\nexport abstract class PgColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }, TExtraConfig>\n\timplements PgColumnBuilderBase<T, TTypeConfig>\n{\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\tstatic readonly [entityKind]: string = 'PgColumnBuilder';\n\n\tarray(size?: number): PgArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'PgArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn new PgArrayBuilder(this.config.name, this as PgColumnBuilder<any, any>, size);\n\t}\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t\tconfig?: { nulls: 'distinct' | 'not distinct' },\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\tthis.config.uniqueType = config?.nulls;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: PgColumn, table: PgTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn iife(\n\t\t\t\t(ref, actions) => {\n\t\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t\t});\n\t\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t\t}\n\t\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t\t}\n\t\t\t\t\treturn builder.build(table);\n\t\t\t\t},\n\t\t\t\tref,\n\t\t\t\tactions,\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `PgColumn` and `PgColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class PgColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends Column<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }> {\n\tstatic readonly [entityKind]: string = 'PgColumn';\n\n\tconstructor(\n\t\toverride readonly table: PgTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnyPgColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = PgColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n\nexport class PgArrayBuilder<\n\tT extends ColumnBuilderBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t\tsize: number | undefined;\n\t},\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t}\n> {\n\tstatic override readonly [entityKind] = 'PgArrayBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tbaseBuilder: PgArrayBuilder<T, TBase>['config']['baseBuilder'],\n\t\tsize: number | undefined,\n\t) {\n\t\tsuper(name, 'array', 'PgArray');\n\t\tthis.config.baseBuilder = baseBuilder;\n\t\tthis.config.size = size;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgArray<MakeColumnConfig<T, TTableName>, TBase> {\n\t\tconst baseColumn = this.config.baseBuilder.build(table);\n\t\treturn new PgArray<MakeColumnConfig<T, TTableName>, TBase>(\n\t\t\ttable as AnyPgTable<{ name: MakeColumnConfig<T, TTableName>['tableName'] }>,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tbaseColumn,\n\t\t);\n\t}\n}\n\nexport class PgArray<\n\tT extends ColumnBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T> {\n\treadonly size: number | undefined;\n\n\tstatic readonly [entityKind]: string = 'PgArray';\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgArrayBuilder<T, TBase>['config'],\n\t\treadonly baseColumn: PgColumn,\n\t\treadonly range?: [number | undefined, number | undefined],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.size = config.size;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;\n\t}\n\n\toverride mapFromDriverValue(value: unknown[] | string): T['data'] {\n\t\tif (typeof value === 'string') {\n\t\t\t// Thank you node-postgres for not parsing enum arrays\n\t\t\tvalue = parsePgArray(value);\n\t\t}\n\t\treturn value.map((v) => this.baseColumn.mapFromDriverValue(v));\n\t}\n\n\toverride mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {\n\t\tconst a = value.map((v) =>\n\t\t\tv === null\n\t\t\t\t? null\n\t\t\t\t: is(this.baseColumn, PgArray)\n\t\t\t\t? this.baseColumn.mapToDriverValue(v as unknown[], true)\n\t\t\t\t: this.baseColumn.mapToDriverValue(v)\n\t\t);\n\t\tif (isNestedArray) return a;\n\t\treturn makePgArray(a);\n\t}\n}\n"],"mappings":"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","names":["ref","actions"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Update } from '~/utils.ts';\n\nimport type { ForeignKey, UpdateDeleteAction } from '~/pg-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/pg-core/foreign-keys.ts';\nimport type { AnyPgTable, PgTable } from '~/pg-core/table.ts';\nimport { iife } from '~/tracing-utils.ts';\nimport type { PgIndexOpClass } from '../indexes.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\nimport { makePgArray, parsePgArray } from '../utils/array.ts';\n\nexport interface ReferenceConfig {\n\tref: () => PgColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface PgColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'pg' }> {}\n\nexport abstract class PgColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }, TExtraConfig>\n\timplements PgColumnBuilderBase<T, TTypeConfig>\n{\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\tstatic readonly [entityKind]: string = 'PgColumnBuilder';\n\n\tarray(size?: number): PgArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'PgArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn new PgArrayBuilder(this.config.name, this as PgColumnBuilder<any, any>, size);\n\t}\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t\tconfig?: { nulls: 'distinct' | 'not distinct' },\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\tthis.config.uniqueType = config?.nulls;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: PgColumn, table: PgTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn iife(\n\t\t\t\t(ref, actions) => {\n\t\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t\t});\n\t\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t\t}\n\t\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t\t}\n\t\t\t\t\treturn builder.build(table);\n\t\t\t\t},\n\t\t\t\tref,\n\t\t\t\tactions,\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgColumn<MakeColumnConfig<T, TTableName>>;\n\n\t/** @internal */\n\tbuildExtraConfigColumn<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): ExtraConfigColumn {\n\t\treturn new ExtraConfigColumn(table, this.config);\n\t}\n}\n\n// To understand how to use `PgColumn` and `PgColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class PgColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends Column<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }> {\n\tstatic readonly [entityKind]: string = 'PgColumn';\n\n\tconstructor(\n\t\toverride readonly table: PgTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type IndexedExtraConfigType = { order?: 'asc' | 'desc'; nulls?: 'first' | 'last'; opClass?: string };\n\nexport class ExtraConfigColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T, IndexedExtraConfigType> {\n\tstatic readonly [entityKind]: string = 'ExtraConfigColumn';\n\n\toverride getSQLType(): string {\n\t\treturn this.getSQLType();\n\t}\n\n\tindexConfig: IndexedExtraConfigType = {\n\t\torder: this.config.order ?? 'asc',\n\t\tnulls: this.config.nulls ?? 'last',\n\t\topClass: this.config.opClass,\n\t};\n\tdefaultConfig: IndexedExtraConfigType = {\n\t\torder: 'asc',\n\t\tnulls: 'last',\n\t\topClass: undefined,\n\t};\n\n\tasc(): Omit<this, 'asc' | 'desc'> {\n\t\tthis.indexConfig.order = 'asc';\n\t\treturn this;\n\t}\n\n\tdesc(): Omit<this, 'asc' | 'desc'> {\n\t\tthis.indexConfig.order = 'desc';\n\t\treturn this;\n\t}\n\n\tnullsFirst(): Omit<this, 'nullsFirst' | 'nullsLast'> {\n\t\tthis.indexConfig.nulls = 'first';\n\t\treturn this;\n\t}\n\n\tnullsLast(): Omit<this, 'nullsFirst' | 'nullsLast'> {\n\t\tthis.indexConfig.nulls = 'last';\n\t\treturn this;\n\t}\n\n\t/**\n\t * ### PostgreSQL documentation quote\n\t *\n\t * > An operator class with optional parameters can be specified for each column of an index.\n\t * The operator class identifies the operators to be used by the index for that column.\n\t * For example, a B-tree index on four-byte integers would use the int4_ops class;\n\t * this operator class includes comparison functions for four-byte integers.\n\t * In practice the default operator class for the column's data type is usually sufficient.\n\t * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.\n\t * For example, we might want to sort a complex-number data type either by absolute value or by real part.\n\t * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.\n\t * More information about operator classes check:\n\t *\n\t * ### Useful links\n\t * https://www.postgresql.org/docs/current/sql-createindex.html\n\t *\n\t * https://www.postgresql.org/docs/current/indexes-opclass.html\n\t *\n\t * https://www.postgresql.org/docs/current/xindex.html\n\t *\n\t * ### Additional types\n\t * If you have the `pg_vector` extension installed in your database, you can use the\n\t * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.\n\t *\n\t * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**\n\t *\n\t * @param opClass\n\t * @returns\n\t */\n\top(opClass: PgIndexOpClass): Omit<this, 'op'> {\n\t\tthis.indexConfig.opClass = opClass;\n\t\treturn this;\n\t}\n}\n\nexport class IndexedColumn {\n\tstatic readonly [entityKind]: string = 'IndexedColumn';\n\tconstructor(\n\t\tname: string | undefined,\n\t\ttype: string,\n\t\tindexConfig: IndexedExtraConfigType,\n\t) {\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.indexConfig = indexConfig;\n\t}\n\n\tname: string | undefined;\n\ttype: string;\n\tindexConfig: IndexedExtraConfigType;\n}\n\nexport type AnyPgColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = PgColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n\nexport class PgArrayBuilder<\n\tT extends ColumnBuilderBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t\tsize: number | undefined;\n\t},\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t}\n> {\n\tstatic override readonly [entityKind] = 'PgArrayBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tbaseBuilder: PgArrayBuilder<T, TBase>['config']['baseBuilder'],\n\t\tsize: number | undefined,\n\t) {\n\t\tsuper(name, 'array', 'PgArray');\n\t\tthis.config.baseBuilder = baseBuilder;\n\t\tthis.config.size = size;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgArray<MakeColumnConfig<T, TTableName>, TBase> {\n\t\tconst baseColumn = this.config.baseBuilder.build(table);\n\t\treturn new PgArray<MakeColumnConfig<T, TTableName>, TBase>(\n\t\t\ttable as AnyPgTable<{ name: MakeColumnConfig<T, TTableName>['tableName'] }>,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tbaseColumn,\n\t\t);\n\t}\n}\n\nexport class PgArray<\n\tT extends ColumnBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T> {\n\treadonly size: number | undefined;\n\n\tstatic readonly [entityKind]: string = 'PgArray';\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgArrayBuilder<T, TBase>['config'],\n\t\treadonly baseColumn: PgColumn,\n\t\treadonly range?: [number | undefined, number | undefined],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.size = config.size;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;\n\t}\n\n\toverride mapFromDriverValue(value: unknown[] | string): T['data'] {\n\t\tif (typeof value === 'string') {\n\t\t\t// Thank you node-postgres for not parsing enum arrays\n\t\t\tvalue = parsePgArray(value);\n\t\t}\n\t\treturn value.map((v) => this.baseColumn.mapFromDriverValue(v));\n\t}\n\n\toverride mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {\n\t\tconst a = value.map((v) =>\n\t\t\tv === null\n\t\t\t\t? null\n\t\t\t\t: is(this.baseColumn, PgArray)\n\t\t\t\t? this.baseColumn.mapToDriverValue(v as unknown[], true)\n\t\t\t\t: this.baseColumn.mapToDriverValue(v)\n\t\t);\n\t\tif (isNestedArray) return a;\n\t\treturn makePgArray(a);\n\t}\n}\n"],"mappings":"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","names":["ref","actions"]}
|
|
@@ -42,6 +42,7 @@ __reExport(columns_exports, require("./time.cjs"), module.exports);
|
|
|
42
42
|
__reExport(columns_exports, require("./timestamp.cjs"), module.exports);
|
|
43
43
|
__reExport(columns_exports, require("./uuid.cjs"), module.exports);
|
|
44
44
|
__reExport(columns_exports, require("./varchar.cjs"), module.exports);
|
|
45
|
+
__reExport(columns_exports, require("./vector.cjs"), module.exports);
|
|
45
46
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
47
|
0 && (module.exports = {
|
|
47
48
|
...require("./bigint.cjs"),
|
|
@@ -70,6 +71,7 @@ __reExport(columns_exports, require("./varchar.cjs"), module.exports);
|
|
|
70
71
|
...require("./time.cjs"),
|
|
71
72
|
...require("./timestamp.cjs"),
|
|
72
73
|
...require("./uuid.cjs"),
|
|
73
|
-
...require("./varchar.cjs")
|
|
74
|
+
...require("./varchar.cjs"),
|
|
75
|
+
...require("./vector.cjs")
|
|
74
76
|
});
|
|
75
77
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,wBAAd;AACA,4BAAc,2BADd;AAEA,4BAAc,yBAFd;AAGA,4BAAc,sBAHd;AAIA,4BAAc,sBAJd;AAKA,4BAAc,wBALd;AAMA,4BAAc,wBANd;AAOA,4BAAc,sBAPd;AAQA,4BAAc,kCARd;AASA,4BAAc,sBATd;AAUA,4BAAc,sBAVd;AAWA,4BAAc,yBAXd;AAYA,4BAAc,0BAZd;AAaA,4BAAc,sBAbd;AAcA,4BAAc,uBAdd;AAeA,4BAAc,yBAfd;AAgBA,4BAAc,0BAhBd;AAiBA,4BAAc,yBAjBd;AAkBA,4BAAc,sBAlBd;AAmBA,4BAAc,wBAnBd;AAoBA,4BAAc,0BApBd;AAqBA,4BAAc,6BArBd;AAsBA,4BAAc,sBAtBd;AAuBA,4BAAc,sBAvBd;AAwBA,4BAAc,2BAxBd;AAyBA,4BAAc,sBAzBd;AA0BA,4BAAc,yBA1Bd;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\nexport * from './vector.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,wBAAd;AACA,4BAAc,2BADd;AAEA,4BAAc,yBAFd;AAGA,4BAAc,sBAHd;AAIA,4BAAc,sBAJd;AAKA,4BAAc,wBALd;AAMA,4BAAc,wBANd;AAOA,4BAAc,sBAPd;AAQA,4BAAc,kCARd;AASA,4BAAc,sBATd;AAUA,4BAAc,sBAVd;AAWA,4BAAc,yBAXd;AAYA,4BAAc,0BAZd;AAaA,4BAAc,sBAbd;AAcA,4BAAc,uBAdd;AAeA,4BAAc,yBAfd;AAgBA,4BAAc,0BAhBd;AAiBA,4BAAc,yBAjBd;AAkBA,4BAAc,sBAlBd;AAmBA,4BAAc,wBAnBd;AAoBA,4BAAc,0BApBd;AAqBA,4BAAc,6BArBd;AAsBA,4BAAc,sBAtBd;AAuBA,4BAAc,sBAvBd;AAwBA,4BAAc,2BAxBd;AAyBA,4BAAc,sBAzBd;AA0BA,4BAAc,yBA1Bd;AA2BA,4BAAc,wBA3Bd;","names":[]}
|
package/pg-core/columns/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\nexport * from './vector.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var vector_exports = {};
|
|
20
|
+
__export(vector_exports, {
|
|
21
|
+
PgVector: () => PgVector,
|
|
22
|
+
PgVectorBuilder: () => PgVectorBuilder,
|
|
23
|
+
vector: () => vector
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(vector_exports);
|
|
26
|
+
var import_entity = require("../../entity.cjs");
|
|
27
|
+
var import_common = require("./common.cjs");
|
|
28
|
+
class PgVectorBuilder extends import_common.PgColumnBuilder {
|
|
29
|
+
static [import_entity.entityKind] = "PgVectorBuilder";
|
|
30
|
+
constructor(name, config) {
|
|
31
|
+
super(name, "array", "PgVector");
|
|
32
|
+
this.config.dimensions = config.dimensions;
|
|
33
|
+
}
|
|
34
|
+
/** @internal */
|
|
35
|
+
build(table) {
|
|
36
|
+
return new PgVector(table, this.config);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class PgVector extends import_common.PgColumn {
|
|
40
|
+
static [import_entity.entityKind] = "PgVector";
|
|
41
|
+
dimensions = this.config.dimensions;
|
|
42
|
+
getSQLType() {
|
|
43
|
+
return `vector(${this.dimensions})`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function vector(name, config) {
|
|
47
|
+
return new PgVectorBuilder(name, config);
|
|
48
|
+
}
|
|
49
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
50
|
+
0 && (module.exports = {
|
|
51
|
+
PgVector,
|
|
52
|
+
PgVectorBuilder,
|
|
53
|
+
vector
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=vector.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/vector.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgVectorBuilderInitial<TName extends string> = PgVectorBuilder<{\n\tname: TName;\n\tdataType: 'array';\n\tcolumnType: 'PgVector';\n\tdata: number[];\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgVector'>> extends PgColumnBuilder<\n\tT,\n\t{ dimensions: number | undefined }\n> {\n\tstatic readonly [entityKind]: string = 'PgVectorBuilder';\n\n\tconstructor(name: string, config: PgVectorConfig) {\n\t\tsuper(name, 'array', 'PgVector');\n\t\tthis.config.dimensions = config.dimensions;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgVector<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgVector<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\n// TODO: adding mappers\nexport class PgVector<T extends ColumnBaseConfig<'array', 'PgVector'>>\n\textends PgColumn<T, { dimensions: number | undefined }>\n{\n\tstatic readonly [entityKind]: string = 'PgVector';\n\n\treadonly dimensions = this.config.dimensions;\n\n\tgetSQLType(): string {\n\t\treturn `vector(${this.dimensions})`;\n\t}\n}\n\nexport interface PgVectorConfig {\n\tdimensions: number;\n}\n\nexport function vector<TName extends string>(\n\tname: TName,\n\tconfig: PgVectorConfig,\n): PgVectorBuilderInitial<TName> {\n\treturn new PgVectorBuilder(name, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,oBAA0C;AAWnC,MAAM,wBAAgF,8BAG3F;AAAA,EACD,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAc,QAAwB;AACjD,UAAM,MAAM,SAAS,UAAU;AAC/B,SAAK,OAAO,aAAa,OAAO;AAAA,EACjC;AAAA;AAAA,EAGS,MACR,OAC4C;AAC5C,WAAO,IAAI,SAA0C,OAAO,KAAK,MAA8C;AAAA,EAChH;AACD;AAGO,MAAM,iBACJ,uBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,aAAa,KAAK,OAAO;AAAA,EAElC,aAAqB;AACpB,WAAO,UAAU,KAAK,UAAU;AAAA,EACjC;AACD;AAMO,SAAS,OACf,MACA,QACgC;AAChC,SAAO,IAAI,gBAAgB,MAAM,MAAM;AACxC;","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ColumnBuilderBaseConfig } from "../../column-builder.cjs";
|
|
2
|
+
import type { ColumnBaseConfig } from "../../column.cjs";
|
|
3
|
+
import { entityKind } from "../../entity.cjs";
|
|
4
|
+
import { PgColumn, PgColumnBuilder } from "./common.cjs";
|
|
5
|
+
export type PgVectorBuilderInitial<TName extends string> = PgVectorBuilder<{
|
|
6
|
+
name: TName;
|
|
7
|
+
dataType: 'array';
|
|
8
|
+
columnType: 'PgVector';
|
|
9
|
+
data: number[];
|
|
10
|
+
driverParam: string;
|
|
11
|
+
enumValues: undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare class PgVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgVector'>> extends PgColumnBuilder<T, {
|
|
14
|
+
dimensions: number | undefined;
|
|
15
|
+
}> {
|
|
16
|
+
static readonly [entityKind]: string;
|
|
17
|
+
constructor(name: string, config: PgVectorConfig);
|
|
18
|
+
}
|
|
19
|
+
export declare class PgVector<T extends ColumnBaseConfig<'array', 'PgVector'>> extends PgColumn<T, {
|
|
20
|
+
dimensions: number | undefined;
|
|
21
|
+
}> {
|
|
22
|
+
static readonly [entityKind]: string;
|
|
23
|
+
readonly dimensions: number | undefined;
|
|
24
|
+
getSQLType(): string;
|
|
25
|
+
}
|
|
26
|
+
export interface PgVectorConfig {
|
|
27
|
+
dimensions: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function vector<TName extends string>(name: TName, config: PgVectorConfig): PgVectorBuilderInitial<TName>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
|
|
2
|
+
import type { ColumnBaseConfig } from "../../column.js";
|
|
3
|
+
import { entityKind } from "../../entity.js";
|
|
4
|
+
import { PgColumn, PgColumnBuilder } from "./common.js";
|
|
5
|
+
export type PgVectorBuilderInitial<TName extends string> = PgVectorBuilder<{
|
|
6
|
+
name: TName;
|
|
7
|
+
dataType: 'array';
|
|
8
|
+
columnType: 'PgVector';
|
|
9
|
+
data: number[];
|
|
10
|
+
driverParam: string;
|
|
11
|
+
enumValues: undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare class PgVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgVector'>> extends PgColumnBuilder<T, {
|
|
14
|
+
dimensions: number | undefined;
|
|
15
|
+
}> {
|
|
16
|
+
static readonly [entityKind]: string;
|
|
17
|
+
constructor(name: string, config: PgVectorConfig);
|
|
18
|
+
}
|
|
19
|
+
export declare class PgVector<T extends ColumnBaseConfig<'array', 'PgVector'>> extends PgColumn<T, {
|
|
20
|
+
dimensions: number | undefined;
|
|
21
|
+
}> {
|
|
22
|
+
static readonly [entityKind]: string;
|
|
23
|
+
readonly dimensions: number | undefined;
|
|
24
|
+
getSQLType(): string;
|
|
25
|
+
}
|
|
26
|
+
export interface PgVectorConfig {
|
|
27
|
+
dimensions: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function vector<TName extends string>(name: TName, config: PgVectorConfig): PgVectorBuilderInitial<TName>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { entityKind } from "../../entity.js";
|
|
2
|
+
import { PgColumn, PgColumnBuilder } from "./common.js";
|
|
3
|
+
class PgVectorBuilder extends PgColumnBuilder {
|
|
4
|
+
static [entityKind] = "PgVectorBuilder";
|
|
5
|
+
constructor(name, config) {
|
|
6
|
+
super(name, "array", "PgVector");
|
|
7
|
+
this.config.dimensions = config.dimensions;
|
|
8
|
+
}
|
|
9
|
+
/** @internal */
|
|
10
|
+
build(table) {
|
|
11
|
+
return new PgVector(table, this.config);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
class PgVector extends PgColumn {
|
|
15
|
+
static [entityKind] = "PgVector";
|
|
16
|
+
dimensions = this.config.dimensions;
|
|
17
|
+
getSQLType() {
|
|
18
|
+
return `vector(${this.dimensions})`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function vector(name, config) {
|
|
22
|
+
return new PgVectorBuilder(name, config);
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
PgVector,
|
|
26
|
+
PgVectorBuilder,
|
|
27
|
+
vector
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/vector.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgVectorBuilderInitial<TName extends string> = PgVectorBuilder<{\n\tname: TName;\n\tdataType: 'array';\n\tcolumnType: 'PgVector';\n\tdata: number[];\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgVector'>> extends PgColumnBuilder<\n\tT,\n\t{ dimensions: number | undefined }\n> {\n\tstatic readonly [entityKind]: string = 'PgVectorBuilder';\n\n\tconstructor(name: string, config: PgVectorConfig) {\n\t\tsuper(name, 'array', 'PgVector');\n\t\tthis.config.dimensions = config.dimensions;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgVector<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgVector<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);\n\t}\n}\n\n// TODO: adding mappers\nexport class PgVector<T extends ColumnBaseConfig<'array', 'PgVector'>>\n\textends PgColumn<T, { dimensions: number | undefined }>\n{\n\tstatic readonly [entityKind]: string = 'PgVector';\n\n\treadonly dimensions = this.config.dimensions;\n\n\tgetSQLType(): string {\n\t\treturn `vector(${this.dimensions})`;\n\t}\n}\n\nexport interface PgVectorConfig {\n\tdimensions: number;\n}\n\nexport function vector<TName extends string>(\n\tname: TName,\n\tconfig: PgVectorConfig,\n): PgVectorBuilderInitial<TName> {\n\treturn new PgVectorBuilder(name, config);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAE3B,SAAS,UAAU,uBAAuB;AAWnC,MAAM,wBAAgF,gBAG3F;AAAA,EACD,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAc,QAAwB;AACjD,UAAM,MAAM,SAAS,UAAU;AAC/B,SAAK,OAAO,aAAa,OAAO;AAAA,EACjC;AAAA;AAAA,EAGS,MACR,OAC4C;AAC5C,WAAO,IAAI,SAA0C,OAAO,KAAK,MAA8C;AAAA,EAChH;AACD;AAGO,MAAM,iBACJ,SACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAE9B,aAAa,KAAK,OAAO;AAAA,EAElC,aAAqB;AACpB,WAAO,UAAU,KAAK,UAAU;AAAA,EACjC;AACD;AAMO,SAAS,OACf,MACA,QACgC;AAChC,SAAO,IAAI,gBAAgB,MAAM,MAAM;AACxC;","names":[]}
|
package/pg-core/dialect.cjs
CHANGED
|
@@ -384,12 +384,13 @@ class PgDialect {
|
|
|
384
384
|
return "none";
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
|
-
sqlToQuery(sql2) {
|
|
387
|
+
sqlToQuery(sql2, invokeSource) {
|
|
388
388
|
return sql2.toQuery({
|
|
389
389
|
escapeName: this.escapeName,
|
|
390
390
|
escapeParam: this.escapeParam,
|
|
391
391
|
escapeString: this.escapeString,
|
|
392
|
-
prepareTyping: this.prepareTyping
|
|
392
|
+
prepareTyping: this.prepareTyping,
|
|
393
|
+
invokeSource
|
|
393
394
|
});
|
|
394
395
|
}
|
|
395
396
|
// buildRelationalQueryWithPK({
|