drizzle-orm 0.31.0-c7963ca → 0.31.0-ef463e5
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.
Potentially problematic release.
This version of drizzle-orm might be problematic. Click here for more details.
- package/mysql-core/dialect.cjs +15 -13
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +2 -1
- package/mysql-core/dialect.d.ts +2 -1
- package/mysql-core/dialect.js +3 -1
- package/mysql-core/dialect.js.map +1 -1
- package/package.json +49 -1
- package/pg-core/columns/index.cjs +6 -0
- package/pg-core/columns/index.cjs.map +1 -1
- package/pg-core/columns/index.d.cts +3 -0
- package/pg-core/columns/index.d.ts +3 -0
- package/pg-core/columns/index.js +3 -0
- package/pg-core/columns/index.js.map +1 -1
- package/pg-core/columns/line.cjs +96 -0
- package/pg-core/columns/line.cjs.map +1 -0
- package/pg-core/columns/line.d.cts +57 -0
- package/pg-core/columns/line.d.ts +57 -0
- package/pg-core/columns/line.js +68 -0
- package/pg-core/columns/line.js.map +1 -0
- package/pg-core/columns/point.cjs +102 -0
- package/pg-core/columns/point.cjs.map +1 -0
- package/pg-core/columns/point.d.cts +60 -0
- package/pg-core/columns/point.d.ts +60 -0
- package/pg-core/columns/point.js +74 -0
- package/pg-core/columns/point.js.map +1 -0
- package/pg-core/columns/postgis_extension/geometry.cjs +96 -0
- package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -0
- package/pg-core/columns/postgis_extension/geometry.d.cts +57 -0
- package/pg-core/columns/postgis_extension/geometry.d.ts +57 -0
- package/pg-core/columns/postgis_extension/geometry.js +68 -0
- package/pg-core/columns/postgis_extension/geometry.js.map +1 -0
- package/pg-core/columns/postgis_extension/utils.cjs +65 -0
- package/pg-core/columns/postgis_extension/utils.cjs.map +1 -0
- package/pg-core/columns/postgis_extension/utils.d.cts +1 -0
- package/pg-core/columns/postgis_extension/utils.d.ts +1 -0
- package/pg-core/columns/postgis_extension/utils.js +41 -0
- package/pg-core/columns/postgis_extension/utils.js.map +1 -0
- package/sql/functions/vector.cjs +18 -20
- package/sql/functions/vector.cjs.map +1 -1
- package/sql/functions/vector.d.cts +3 -3
- package/sql/functions/vector.d.ts +3 -3
- package/sql/functions/vector.js +18 -20
- package/sql/functions/vector.js.map +1 -1
- package/sqlite-core/session.cjs +2 -2
- package/sqlite-core/session.cjs.map +1 -1
- package/sqlite-core/session.d.cts +1 -1
- package/sqlite-core/session.d.ts +1 -1
- package/sqlite-core/session.js +1 -1
- package/sqlite-core/session.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ColumnBuilderBaseConfig } from "../../../column-builder.js";
|
|
2
|
+
import type { ColumnBaseConfig } from "../../../column.js";
|
|
3
|
+
import { entityKind } from "../../../entity.js";
|
|
4
|
+
import type { Equal } from "../../../utils.js";
|
|
5
|
+
import { PgColumn, PgColumnBuilder } from "../common.js";
|
|
6
|
+
export type PgGeometryBuilderInitial<TName extends string> = PgGeometryBuilder<{
|
|
7
|
+
name: TName;
|
|
8
|
+
dataType: 'array';
|
|
9
|
+
columnType: 'PgGeometry';
|
|
10
|
+
data: [number, number];
|
|
11
|
+
driverParam: string;
|
|
12
|
+
enumValues: undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export declare class PgGeometryBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgGeometry'>> extends PgColumnBuilder<T> {
|
|
15
|
+
static readonly [entityKind]: string;
|
|
16
|
+
constructor(name: T['name']);
|
|
17
|
+
}
|
|
18
|
+
export declare class PgGeometry<T extends ColumnBaseConfig<'array', 'PgGeometry'>> extends PgColumn<T> {
|
|
19
|
+
static readonly [entityKind]: string;
|
|
20
|
+
getSQLType(): string;
|
|
21
|
+
mapFromDriverValue(value: string): [number, number];
|
|
22
|
+
mapToDriverValue(value: [number, number]): string;
|
|
23
|
+
}
|
|
24
|
+
export type PgGeometryObjectBuilderInitial<TName extends string> = PgGeometryObjectBuilder<{
|
|
25
|
+
name: TName;
|
|
26
|
+
dataType: 'json';
|
|
27
|
+
columnType: 'PgGeometryObject';
|
|
28
|
+
data: {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
};
|
|
32
|
+
driverParam: string;
|
|
33
|
+
enumValues: undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export declare class PgGeometryObjectBuilder<T extends ColumnBuilderBaseConfig<'json', 'PgGeometryObject'>> extends PgColumnBuilder<T> {
|
|
36
|
+
static readonly [entityKind]: string;
|
|
37
|
+
constructor(name: T['name']);
|
|
38
|
+
}
|
|
39
|
+
export declare class PgGeometryObject<T extends ColumnBaseConfig<'json', 'PgGeometryObject'>> extends PgColumn<T> {
|
|
40
|
+
static readonly [entityKind]: string;
|
|
41
|
+
getSQLType(): string;
|
|
42
|
+
mapFromDriverValue(value: string): {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
};
|
|
46
|
+
mapToDriverValue(value: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
}): string;
|
|
50
|
+
}
|
|
51
|
+
interface PgGeometryConfig<T extends 'tuple' | 'xy' = 'tuple' | 'xy'> {
|
|
52
|
+
mode?: T;
|
|
53
|
+
type?: 'point' | (string & {});
|
|
54
|
+
srid?: number;
|
|
55
|
+
}
|
|
56
|
+
export declare function geometry<TName extends string, TMode extends PgGeometryConfig['mode'] & {}>(name: TName, config?: PgGeometryConfig<TMode>): Equal<TMode, 'xy'> extends true ? PgGeometryObjectBuilderInitial<TName> : PgGeometryBuilderInitial<TName>;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { entityKind } from "../../../entity.js";
|
|
2
|
+
import { PgColumn, PgColumnBuilder } from "../common.js";
|
|
3
|
+
import { parseEWKB } from "./utils.js";
|
|
4
|
+
class PgGeometryBuilder extends PgColumnBuilder {
|
|
5
|
+
static [entityKind] = "PgGeometryBuilder";
|
|
6
|
+
constructor(name) {
|
|
7
|
+
super(name, "array", "PgGeometry");
|
|
8
|
+
}
|
|
9
|
+
/** @internal */
|
|
10
|
+
build(table) {
|
|
11
|
+
return new PgGeometry(
|
|
12
|
+
table,
|
|
13
|
+
this.config
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
class PgGeometry extends PgColumn {
|
|
18
|
+
static [entityKind] = "PgGeometry";
|
|
19
|
+
getSQLType() {
|
|
20
|
+
return "geometry(point)";
|
|
21
|
+
}
|
|
22
|
+
mapFromDriverValue(value) {
|
|
23
|
+
return parseEWKB(value);
|
|
24
|
+
}
|
|
25
|
+
mapToDriverValue(value) {
|
|
26
|
+
return `point(${value[0]} ${value[1]})`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
class PgGeometryObjectBuilder extends PgColumnBuilder {
|
|
30
|
+
static [entityKind] = "PgGeometryObjectBuilder";
|
|
31
|
+
constructor(name) {
|
|
32
|
+
super(name, "json", "PgGeometryObject");
|
|
33
|
+
}
|
|
34
|
+
/** @internal */
|
|
35
|
+
build(table) {
|
|
36
|
+
return new PgGeometryObject(
|
|
37
|
+
table,
|
|
38
|
+
this.config
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
class PgGeometryObject extends PgColumn {
|
|
43
|
+
static [entityKind] = "PgGeometryObject";
|
|
44
|
+
getSQLType() {
|
|
45
|
+
return "geometry(point)";
|
|
46
|
+
}
|
|
47
|
+
mapFromDriverValue(value) {
|
|
48
|
+
const parsed = parseEWKB(value);
|
|
49
|
+
return { x: parsed[0], y: parsed[1] };
|
|
50
|
+
}
|
|
51
|
+
mapToDriverValue(value) {
|
|
52
|
+
return `point(${value.x} ${value.y})`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function geometry(name, config) {
|
|
56
|
+
if (!config?.mode || config.mode === "tuple") {
|
|
57
|
+
return new PgGeometryBuilder(name);
|
|
58
|
+
}
|
|
59
|
+
return new PgGeometryObjectBuilder(name);
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
PgGeometry,
|
|
63
|
+
PgGeometryBuilder,
|
|
64
|
+
PgGeometryObject,
|
|
65
|
+
PgGeometryObjectBuilder,
|
|
66
|
+
geometry
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pg-core/columns/postgis_extension/geometry.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';\n\nimport type { Equal } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from '../common.ts';\nimport { parseEWKB } from './utils.ts';\n\nexport type PgGeometryBuilderInitial<TName extends string> = PgGeometryBuilder<{\n\tname: TName;\n\tdataType: 'array';\n\tcolumnType: 'PgGeometry';\n\tdata: [number, number];\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgGeometryBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgGeometry'>> extends PgColumnBuilder<T> {\n\tstatic readonly [entityKind]: string = 'PgGeometryBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'array', 'PgGeometry');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgGeometry<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgGeometry<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgGeometry<T extends ColumnBaseConfig<'array', 'PgGeometry'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgGeometry';\n\n\tgetSQLType(): string {\n\t\treturn 'geometry(point)';\n\t}\n\n\toverride mapFromDriverValue(value: string): [number, number] {\n\t\treturn parseEWKB(value);\n\t}\n\n\toverride mapToDriverValue(value: [number, number]): string {\n\t\treturn `point(${value[0]} ${value[1]})`;\n\t}\n}\n\nexport type PgGeometryObjectBuilderInitial<TName extends string> = PgGeometryObjectBuilder<{\n\tname: TName;\n\tdataType: 'json';\n\tcolumnType: 'PgGeometryObject';\n\tdata: { x: number; y: number };\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgGeometryObjectBuilder<T extends ColumnBuilderBaseConfig<'json', 'PgGeometryObject'>>\n\textends PgColumnBuilder<T>\n{\n\tstatic readonly [entityKind]: string = 'PgGeometryObjectBuilder';\n\n\tconstructor(name: T['name']) {\n\t\tsuper(name, 'json', 'PgGeometryObject');\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgGeometryObject<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgGeometryObject<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgGeometryObject<T extends ColumnBaseConfig<'json', 'PgGeometryObject'>> extends PgColumn<T> {\n\tstatic readonly [entityKind]: string = 'PgGeometryObject';\n\n\tgetSQLType(): string {\n\t\treturn 'geometry(point)';\n\t}\n\n\toverride mapFromDriverValue(value: string): { x: number; y: number } {\n\t\tconst parsed = parseEWKB(value);\n\t\treturn { x: parsed[0], y: parsed[1] };\n\t}\n\n\toverride mapToDriverValue(value: { x: number; y: number }): string {\n\t\treturn `point(${value.x} ${value.y})`;\n\t}\n}\n\ninterface PgGeometryConfig<T extends 'tuple' | 'xy' = 'tuple' | 'xy'> {\n\tmode?: T;\n\ttype?: 'point' | (string & {});\n\tsrid?: number;\n}\n\nexport function geometry<TName extends string, TMode extends PgGeometryConfig['mode'] & {}>(\n\tname: TName,\n\tconfig?: PgGeometryConfig<TMode>,\n): Equal<TMode, 'xy'> extends true ? PgGeometryObjectBuilderInitial<TName>\n\t: PgGeometryBuilderInitial<TName>;\nexport function geometry(name: string, config?: PgGeometryConfig) {\n\tif (!config?.mode || config.mode === 'tuple') {\n\t\treturn new PgGeometryBuilder(name);\n\t}\n\treturn new PgGeometryObjectBuilder(name);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAI3B,SAAS,UAAU,uBAAuB;AAC1C,SAAS,iBAAiB;AAWnB,MAAM,0BAAoF,gBAAmB;AAAA,EACnH,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,SAAS,YAAY;AAAA,EAClC;AAAA;AAAA,EAGS,MACR,OAC8C;AAC9C,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,mBAAsE,SAAY;AAAA,EAC9F,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAiC;AAC5D,WAAO,UAAU,KAAK;AAAA,EACvB;AAAA,EAES,iBAAiB,OAAiC;AAC1D,WAAO,SAAS,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,EACrC;AACD;AAWO,MAAM,gCACJ,gBACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC5B,UAAM,MAAM,QAAQ,kBAAkB;AAAA,EACvC;AAAA;AAAA,EAGS,MACR,OACoD;AACpD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,yBAAiF,SAAY;AAAA,EACzG,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACpB,WAAO;AAAA,EACR;AAAA,EAES,mBAAmB,OAAyC;AACpE,UAAM,SAAS,UAAU,KAAK;AAC9B,WAAO,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;AAAA,EACrC;AAAA,EAES,iBAAiB,OAAyC;AAClE,WAAO,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,EACnC;AACD;AAaO,SAAS,SAAS,MAAc,QAA2B;AACjE,MAAI,CAAC,QAAQ,QAAQ,OAAO,SAAS,SAAS;AAC7C,WAAO,IAAI,kBAAkB,IAAI;AAAA,EAClC;AACA,SAAO,IAAI,wBAAwB,IAAI;AACxC;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 utils_exports = {};
|
|
20
|
+
__export(utils_exports, {
|
|
21
|
+
parseEWKB: () => parseEWKB
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(utils_exports);
|
|
24
|
+
function hexToBytes(hex) {
|
|
25
|
+
const bytes = [];
|
|
26
|
+
for (let c = 0; c < hex.length; c += 2) {
|
|
27
|
+
bytes.push(Number.parseInt(hex.slice(c, c + 2), 16));
|
|
28
|
+
}
|
|
29
|
+
return new Uint8Array(bytes);
|
|
30
|
+
}
|
|
31
|
+
function bytesToFloat64(bytes, offset) {
|
|
32
|
+
const buffer = new ArrayBuffer(8);
|
|
33
|
+
const view = new DataView(buffer);
|
|
34
|
+
for (let i = 0; i < 8; i++) {
|
|
35
|
+
view.setUint8(i, bytes[offset + i]);
|
|
36
|
+
}
|
|
37
|
+
return view.getFloat64(0, true);
|
|
38
|
+
}
|
|
39
|
+
function parseEWKB(hex) {
|
|
40
|
+
const bytes = hexToBytes(hex);
|
|
41
|
+
let offset = 0;
|
|
42
|
+
const byteOrder = bytes[offset];
|
|
43
|
+
offset += 1;
|
|
44
|
+
const view = new DataView(bytes.buffer);
|
|
45
|
+
const geomType = view.getUint32(offset, byteOrder === 1);
|
|
46
|
+
offset += 4;
|
|
47
|
+
let _srid;
|
|
48
|
+
if (geomType & 536870912) {
|
|
49
|
+
_srid = view.getUint32(offset, byteOrder === 1);
|
|
50
|
+
offset += 4;
|
|
51
|
+
}
|
|
52
|
+
if ((geomType & 65535) === 1) {
|
|
53
|
+
const x = bytesToFloat64(bytes, offset);
|
|
54
|
+
offset += 8;
|
|
55
|
+
const y = bytesToFloat64(bytes, offset);
|
|
56
|
+
offset += 8;
|
|
57
|
+
return [x, y];
|
|
58
|
+
}
|
|
59
|
+
throw new Error("Unsupported geometry type");
|
|
60
|
+
}
|
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
62
|
+
0 && (module.exports = {
|
|
63
|
+
parseEWKB
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pg-core/columns/postgis_extension/utils.ts"],"sourcesContent":["function hexToBytes(hex: string): Uint8Array {\n\tconst bytes: number[] = [];\n\tfor (let c = 0; c < hex.length; c += 2) {\n\t\tbytes.push(Number.parseInt(hex.slice(c, c + 2), 16));\n\t}\n\treturn new Uint8Array(bytes);\n}\n\nfunction bytesToFloat64(bytes: Uint8Array, offset: number): number {\n\tconst buffer = new ArrayBuffer(8);\n\tconst view = new DataView(buffer);\n\tfor (let i = 0; i < 8; i++) {\n\t\tview.setUint8(i, bytes[offset + i]!);\n\t}\n\treturn view.getFloat64(0, true);\n}\n\nexport function parseEWKB(hex: string): [number, number] {\n\tconst bytes = hexToBytes(hex);\n\n\tlet offset = 0;\n\n\t// Byte order: 1 is little-endian, 0 is big-endian\n\tconst byteOrder = bytes[offset];\n\toffset += 1;\n\n\tconst view = new DataView(bytes.buffer);\n\tconst geomType = view.getUint32(offset, byteOrder === 1);\n\toffset += 4;\n\n\tlet _srid: number | undefined;\n\tif (geomType & 0x20000000) { // SRID flag\n\t\t_srid = view.getUint32(offset, byteOrder === 1);\n\t\toffset += 4;\n\t}\n\n\tif ((geomType & 0xFFFF) === 1) {\n\t\tconst x = bytesToFloat64(bytes, offset);\n\t\toffset += 8;\n\t\tconst y = bytesToFloat64(bytes, offset);\n\t\toffset += 8;\n\n\t\treturn [x, y];\n\t}\n\n\tthrow new Error('Unsupported geometry type');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,WAAW,KAAyB;AAC5C,QAAM,QAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACvC,UAAM,KAAK,OAAO,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,EACpD;AACA,SAAO,IAAI,WAAW,KAAK;AAC5B;AAEA,SAAS,eAAe,OAAmB,QAAwB;AAClE,QAAM,SAAS,IAAI,YAAY,CAAC;AAChC,QAAM,OAAO,IAAI,SAAS,MAAM;AAChC,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,SAAK,SAAS,GAAG,MAAM,SAAS,CAAC,CAAE;AAAA,EACpC;AACA,SAAO,KAAK,WAAW,GAAG,IAAI;AAC/B;AAEO,SAAS,UAAU,KAA+B;AACxD,QAAM,QAAQ,WAAW,GAAG;AAE5B,MAAI,SAAS;AAGb,QAAM,YAAY,MAAM,MAAM;AAC9B,YAAU;AAEV,QAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,QAAM,WAAW,KAAK,UAAU,QAAQ,cAAc,CAAC;AACvD,YAAU;AAEV,MAAI;AACJ,MAAI,WAAW,WAAY;AAC1B,YAAQ,KAAK,UAAU,QAAQ,cAAc,CAAC;AAC9C,cAAU;AAAA,EACX;AAEA,OAAK,WAAW,WAAY,GAAG;AAC9B,UAAM,IAAI,eAAe,OAAO,MAAM;AACtC,cAAU;AACV,UAAM,IAAI,eAAe,OAAO,MAAM;AACtC,cAAU;AAEV,WAAO,CAAC,GAAG,CAAC;AAAA,EACb;AAEA,QAAM,IAAI,MAAM,2BAA2B;AAC5C;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parseEWKB(hex: string): [number, number];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parseEWKB(hex: string): [number, number];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function hexToBytes(hex) {
|
|
2
|
+
const bytes = [];
|
|
3
|
+
for (let c = 0; c < hex.length; c += 2) {
|
|
4
|
+
bytes.push(Number.parseInt(hex.slice(c, c + 2), 16));
|
|
5
|
+
}
|
|
6
|
+
return new Uint8Array(bytes);
|
|
7
|
+
}
|
|
8
|
+
function bytesToFloat64(bytes, offset) {
|
|
9
|
+
const buffer = new ArrayBuffer(8);
|
|
10
|
+
const view = new DataView(buffer);
|
|
11
|
+
for (let i = 0; i < 8; i++) {
|
|
12
|
+
view.setUint8(i, bytes[offset + i]);
|
|
13
|
+
}
|
|
14
|
+
return view.getFloat64(0, true);
|
|
15
|
+
}
|
|
16
|
+
function parseEWKB(hex) {
|
|
17
|
+
const bytes = hexToBytes(hex);
|
|
18
|
+
let offset = 0;
|
|
19
|
+
const byteOrder = bytes[offset];
|
|
20
|
+
offset += 1;
|
|
21
|
+
const view = new DataView(bytes.buffer);
|
|
22
|
+
const geomType = view.getUint32(offset, byteOrder === 1);
|
|
23
|
+
offset += 4;
|
|
24
|
+
let _srid;
|
|
25
|
+
if (geomType & 536870912) {
|
|
26
|
+
_srid = view.getUint32(offset, byteOrder === 1);
|
|
27
|
+
offset += 4;
|
|
28
|
+
}
|
|
29
|
+
if ((geomType & 65535) === 1) {
|
|
30
|
+
const x = bytesToFloat64(bytes, offset);
|
|
31
|
+
offset += 8;
|
|
32
|
+
const y = bytesToFloat64(bytes, offset);
|
|
33
|
+
offset += 8;
|
|
34
|
+
return [x, y];
|
|
35
|
+
}
|
|
36
|
+
throw new Error("Unsupported geometry type");
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
parseEWKB
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pg-core/columns/postgis_extension/utils.ts"],"sourcesContent":["function hexToBytes(hex: string): Uint8Array {\n\tconst bytes: number[] = [];\n\tfor (let c = 0; c < hex.length; c += 2) {\n\t\tbytes.push(Number.parseInt(hex.slice(c, c + 2), 16));\n\t}\n\treturn new Uint8Array(bytes);\n}\n\nfunction bytesToFloat64(bytes: Uint8Array, offset: number): number {\n\tconst buffer = new ArrayBuffer(8);\n\tconst view = new DataView(buffer);\n\tfor (let i = 0; i < 8; i++) {\n\t\tview.setUint8(i, bytes[offset + i]!);\n\t}\n\treturn view.getFloat64(0, true);\n}\n\nexport function parseEWKB(hex: string): [number, number] {\n\tconst bytes = hexToBytes(hex);\n\n\tlet offset = 0;\n\n\t// Byte order: 1 is little-endian, 0 is big-endian\n\tconst byteOrder = bytes[offset];\n\toffset += 1;\n\n\tconst view = new DataView(bytes.buffer);\n\tconst geomType = view.getUint32(offset, byteOrder === 1);\n\toffset += 4;\n\n\tlet _srid: number | undefined;\n\tif (geomType & 0x20000000) { // SRID flag\n\t\t_srid = view.getUint32(offset, byteOrder === 1);\n\t\toffset += 4;\n\t}\n\n\tif ((geomType & 0xFFFF) === 1) {\n\t\tconst x = bytesToFloat64(bytes, offset);\n\t\toffset += 8;\n\t\tconst y = bytesToFloat64(bytes, offset);\n\t\toffset += 8;\n\n\t\treturn [x, y];\n\t}\n\n\tthrow new Error('Unsupported geometry type');\n}\n"],"mappings":"AAAA,SAAS,WAAW,KAAyB;AAC5C,QAAM,QAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACvC,UAAM,KAAK,OAAO,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,EACpD;AACA,SAAO,IAAI,WAAW,KAAK;AAC5B;AAEA,SAAS,eAAe,OAAmB,QAAwB;AAClE,QAAM,SAAS,IAAI,YAAY,CAAC;AAChC,QAAM,OAAO,IAAI,SAAS,MAAM;AAChC,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,SAAK,SAAS,GAAG,MAAM,SAAS,CAAC,CAAE;AAAA,EACpC;AACA,SAAO,KAAK,WAAW,GAAG,IAAI;AAC/B;AAEO,SAAS,UAAU,KAA+B;AACxD,QAAM,QAAQ,WAAW,GAAG;AAE5B,MAAI,SAAS;AAGb,QAAM,YAAY,MAAM,MAAM;AAC9B,YAAU;AAEV,QAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,QAAM,WAAW,KAAK,UAAU,QAAQ,cAAc,CAAC;AACvD,YAAU;AAEV,MAAI;AACJ,MAAI,WAAW,WAAY;AAC1B,YAAQ,KAAK,UAAU,QAAQ,cAAc,CAAC;AAC9C,cAAU;AAAA,EACX;AAEA,OAAK,WAAW,WAAY,GAAG;AAC9B,UAAM,IAAI,eAAe,OAAO,MAAM;AACtC,cAAU;AACV,UAAM,IAAI,eAAe,OAAO,MAAM;AACtC,cAAU;AAEV,WAAO,CAAC,GAAG,CAAC;AAAA,EACb;AAEA,QAAM,IAAI,MAAM,2BAA2B;AAC5C;","names":[]}
|
package/sql/functions/vector.cjs
CHANGED
|
@@ -26,47 +26,45 @@ __export(vector_exports, {
|
|
|
26
26
|
l2Distance: () => l2Distance
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(vector_exports);
|
|
29
|
-
var import__ = require("../../index.cjs");
|
|
30
|
-
var import_query_builder = require("../../query-builders/query-builder.cjs");
|
|
31
29
|
var import_sql = require("../sql.cjs");
|
|
32
30
|
function toSql(value) {
|
|
33
31
|
return JSON.stringify(value);
|
|
34
32
|
}
|
|
35
33
|
function l2Distance(column, value) {
|
|
36
|
-
if (
|
|
37
|
-
return import_sql.sql`${column} <-> ${value}`;
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
return import_sql.sql`${column} <-> ${toSql(value)}`;
|
|
38
36
|
}
|
|
39
|
-
return import_sql.sql`${column} <-> ${
|
|
37
|
+
return import_sql.sql`${column} <-> ${value}`;
|
|
40
38
|
}
|
|
41
39
|
function l1Distance(column, value) {
|
|
42
|
-
if (
|
|
43
|
-
return import_sql.sql`${column} <+> ${value}`;
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return import_sql.sql`${column} <+> ${toSql(value)}`;
|
|
44
42
|
}
|
|
45
|
-
return import_sql.sql`${column} <+> ${
|
|
43
|
+
return import_sql.sql`${column} <+> ${value}`;
|
|
46
44
|
}
|
|
47
45
|
function innerProduct(column, value) {
|
|
48
|
-
if (
|
|
49
|
-
return import_sql.sql`${column} <#> ${value}`;
|
|
46
|
+
if (Array.isArray(value)) {
|
|
47
|
+
return import_sql.sql`${column} <#> ${toSql(value)}`;
|
|
50
48
|
}
|
|
51
|
-
return import_sql.sql`${column} <#> ${
|
|
49
|
+
return import_sql.sql`${column} <#> ${value}`;
|
|
52
50
|
}
|
|
53
51
|
function cosineDistance(column, value) {
|
|
54
|
-
if (
|
|
55
|
-
return import_sql.sql`${column} <=> ${value}`;
|
|
52
|
+
if (Array.isArray(value)) {
|
|
53
|
+
return import_sql.sql`${column} <=> ${toSql(value)}`;
|
|
56
54
|
}
|
|
57
|
-
return import_sql.sql`${column} <=> ${
|
|
55
|
+
return import_sql.sql`${column} <=> ${value}`;
|
|
58
56
|
}
|
|
59
57
|
function hammingDistance(column, value) {
|
|
60
|
-
if (
|
|
61
|
-
return import_sql.sql`${column} <~> ${value}`;
|
|
58
|
+
if (Array.isArray(value)) {
|
|
59
|
+
return import_sql.sql`${column} <~> ${toSql(value)}`;
|
|
62
60
|
}
|
|
63
|
-
return import_sql.sql`${column} <~> ${
|
|
61
|
+
return import_sql.sql`${column} <~> ${value}`;
|
|
64
62
|
}
|
|
65
63
|
function jaccardDistance(column, value) {
|
|
66
|
-
if (
|
|
67
|
-
return import_sql.sql`${column} <%> ${value}`;
|
|
64
|
+
if (Array.isArray(value)) {
|
|
65
|
+
return import_sql.sql`${column} <%> ${toSql(value)}`;
|
|
68
66
|
}
|
|
69
|
-
return import_sql.sql`${column} <%> ${
|
|
67
|
+
return import_sql.sql`${column} <%> ${value}`;
|
|
70
68
|
}
|
|
71
69
|
// Annotate the CommonJS export names for ESM import in node:
|
|
72
70
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sql/functions/vector.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/sql/functions/vector.ts"],"sourcesContent":["import type { AnyColumn } from '~/index.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport { type SQL, sql, type SQLWrapper } from '../sql.ts';\n\nfunction toSql(value: number[] | string[]): string {\n\treturn JSON.stringify(value);\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the L2 distance to the given value.\n * If used in querying, this specifies that it should return the L2 distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(l2Distance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: l2Distance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function l2Distance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <-> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <-> ${value}`;\n}\n\n/**\n * L1 distance is one of the possible distance measures between two probability distribution vectors and it is\n * calculated as the sum of the absolute differences.\n * The smaller the distance between the observed probability vectors, the higher the accuracy of the synthetic data\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(l1Distance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: l1Distance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function l1Distance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <+> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <+> ${value}`;\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the inner product distance to the given value.\n * If used in querying, this specifies that it should return the inner product distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(innerProduct(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({ distance: innerProduct(cars.embedding, embedding) }).from(cars)\n * ```\n */\nexport function innerProduct(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <#> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <#> ${value}`;\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the cosine distance to the given value.\n * If used in querying, this specifies that it should return the cosine distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(cosineDistance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: cosineDistance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function cosineDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <=> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <=> ${value}`;\n}\n\n/**\n * Hamming distance between two strings or vectors of equal length is the number of positions at which the\n * corresponding symbols are different. In other words, it measures the minimum number of\n * substitutions required to change one string into the other, or equivalently,\n * the minimum number of errors that could have transformed one string into the other\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(hammingDistance(cars.embedding, embedding));\n * ```\n */\nexport function hammingDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <~> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <~> ${value}`;\n}\n\n/**\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(jaccardDistance(cars.embedding, embedding));\n * ```\n */\nexport function jaccardDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <%> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <%> ${value}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAA+C;AAE/C,SAAS,MAAM,OAAoC;AAClD,SAAO,KAAK,UAAU,KAAK;AAC5B;AAwBO,SAAS,WACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;AAsBO,SAAS,WACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;AAwBO,SAAS,aACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;AAwBO,SAAS,eACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;AAiBO,SAAS,gBACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;AAYO,SAAS,gBACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,iBAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,iBAAM,MAAM,QAAQ,KAAK;AACjC;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TypedQueryBuilder } from "../../query-builders/query-builder.cjs";
|
|
1
|
+
import type { AnyColumn } from "../../index.cjs";
|
|
2
|
+
import type { TypedQueryBuilder } from "../../query-builders/query-builder.cjs";
|
|
3
3
|
import { type SQL, type SQLWrapper } from "../sql.cjs";
|
|
4
4
|
/**
|
|
5
5
|
* Used in sorting and in querying, if used in sorting,
|
|
@@ -117,4 +117,4 @@ export declare function hammingDistance(column: SQLWrapper | AnyColumn, value: n
|
|
|
117
117
|
* .orderBy(jaccardDistance(cars.embedding, embedding));
|
|
118
118
|
* ```
|
|
119
119
|
*/
|
|
120
|
-
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] |
|
|
120
|
+
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TypedQueryBuilder } from "../../query-builders/query-builder.js";
|
|
1
|
+
import type { AnyColumn } from "../../index.js";
|
|
2
|
+
import type { TypedQueryBuilder } from "../../query-builders/query-builder.js";
|
|
3
3
|
import { type SQL, type SQLWrapper } from "../sql.js";
|
|
4
4
|
/**
|
|
5
5
|
* Used in sorting and in querying, if used in sorting,
|
|
@@ -117,4 +117,4 @@ export declare function hammingDistance(column: SQLWrapper | AnyColumn, value: n
|
|
|
117
117
|
* .orderBy(jaccardDistance(cars.embedding, embedding));
|
|
118
118
|
* ```
|
|
119
119
|
*/
|
|
120
|
-
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] |
|
|
120
|
+
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
package/sql/functions/vector.js
CHANGED
|
@@ -1,44 +1,42 @@
|
|
|
1
|
-
import { is, Subquery } from "../../index.js";
|
|
2
|
-
import { TypedQueryBuilder } from "../../query-builders/query-builder.js";
|
|
3
1
|
import { sql } from "../sql.js";
|
|
4
2
|
function toSql(value) {
|
|
5
3
|
return JSON.stringify(value);
|
|
6
4
|
}
|
|
7
5
|
function l2Distance(column, value) {
|
|
8
|
-
if (
|
|
9
|
-
return sql`${column} <-> ${value}`;
|
|
6
|
+
if (Array.isArray(value)) {
|
|
7
|
+
return sql`${column} <-> ${toSql(value)}`;
|
|
10
8
|
}
|
|
11
|
-
return sql`${column} <-> ${
|
|
9
|
+
return sql`${column} <-> ${value}`;
|
|
12
10
|
}
|
|
13
11
|
function l1Distance(column, value) {
|
|
14
|
-
if (
|
|
15
|
-
return sql`${column} <+> ${value}`;
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return sql`${column} <+> ${toSql(value)}`;
|
|
16
14
|
}
|
|
17
|
-
return sql`${column} <+> ${
|
|
15
|
+
return sql`${column} <+> ${value}`;
|
|
18
16
|
}
|
|
19
17
|
function innerProduct(column, value) {
|
|
20
|
-
if (
|
|
21
|
-
return sql`${column} <#> ${value}`;
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return sql`${column} <#> ${toSql(value)}`;
|
|
22
20
|
}
|
|
23
|
-
return sql`${column} <#> ${
|
|
21
|
+
return sql`${column} <#> ${value}`;
|
|
24
22
|
}
|
|
25
23
|
function cosineDistance(column, value) {
|
|
26
|
-
if (
|
|
27
|
-
return sql`${column} <=> ${value}`;
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return sql`${column} <=> ${toSql(value)}`;
|
|
28
26
|
}
|
|
29
|
-
return sql`${column} <=> ${
|
|
27
|
+
return sql`${column} <=> ${value}`;
|
|
30
28
|
}
|
|
31
29
|
function hammingDistance(column, value) {
|
|
32
|
-
if (
|
|
33
|
-
return sql`${column} <~> ${value}`;
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
return sql`${column} <~> ${toSql(value)}`;
|
|
34
32
|
}
|
|
35
|
-
return sql`${column} <~> ${
|
|
33
|
+
return sql`${column} <~> ${value}`;
|
|
36
34
|
}
|
|
37
35
|
function jaccardDistance(column, value) {
|
|
38
|
-
if (
|
|
39
|
-
return sql`${column} <%> ${value}`;
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return sql`${column} <%> ${toSql(value)}`;
|
|
40
38
|
}
|
|
41
|
-
return sql`${column} <%> ${
|
|
39
|
+
return sql`${column} <%> ${value}`;
|
|
42
40
|
}
|
|
43
41
|
export {
|
|
44
42
|
cosineDistance,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sql/functions/vector.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/sql/functions/vector.ts"],"sourcesContent":["import type { AnyColumn } from '~/index.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport { type SQL, sql, type SQLWrapper } from '../sql.ts';\n\nfunction toSql(value: number[] | string[]): string {\n\treturn JSON.stringify(value);\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the L2 distance to the given value.\n * If used in querying, this specifies that it should return the L2 distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(l2Distance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: l2Distance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function l2Distance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <-> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <-> ${value}`;\n}\n\n/**\n * L1 distance is one of the possible distance measures between two probability distribution vectors and it is\n * calculated as the sum of the absolute differences.\n * The smaller the distance between the observed probability vectors, the higher the accuracy of the synthetic data\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(l1Distance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: l1Distance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function l1Distance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <+> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <+> ${value}`;\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the inner product distance to the given value.\n * If used in querying, this specifies that it should return the inner product distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(innerProduct(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({ distance: innerProduct(cars.embedding, embedding) }).from(cars)\n * ```\n */\nexport function innerProduct(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <#> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <#> ${value}`;\n}\n\n/**\n * Used in sorting and in querying, if used in sorting,\n * this specifies that the given column or expression should be sorted in an order\n * that minimizes the cosine distance to the given value.\n * If used in querying, this specifies that it should return the cosine distance\n * between the given column or expression and the given value.\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(cosineDistance(cars.embedding, embedding));\n * ```\n *\n * ```ts\n * // Select distance of cars and embedding\n * // to the given embedding\n * db.select({distance: cosineDistance(cars.embedding, embedding)}).from(cars)\n * ```\n */\nexport function cosineDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <=> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <=> ${value}`;\n}\n\n/**\n * Hamming distance between two strings or vectors of equal length is the number of positions at which the\n * corresponding symbols are different. In other words, it measures the minimum number of\n * substitutions required to change one string into the other, or equivalently,\n * the minimum number of errors that could have transformed one string into the other\n *\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(hammingDistance(cars.embedding, embedding));\n * ```\n */\nexport function hammingDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <~> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <~> ${value}`;\n}\n\n/**\n * ## Examples\n *\n * ```ts\n * // Sort cars by embedding similarity\n * // to the given embedding\n * db.select().from(cars)\n * .orderBy(jaccardDistance(cars.embedding, embedding));\n * ```\n */\nexport function jaccardDistance(\n\tcolumn: SQLWrapper | AnyColumn,\n\tvalue: number[] | string[] | TypedQueryBuilder<any> | string,\n): SQL {\n\tif (Array.isArray(value)) {\n\t\treturn sql`${column} <%> ${toSql(value)}`;\n\t}\n\treturn sql`${column} <%> ${value}`;\n}\n"],"mappings":"AAEA,SAAmB,WAA4B;AAE/C,SAAS,MAAM,OAAoC;AAClD,SAAO,KAAK,UAAU,KAAK;AAC5B;AAwBO,SAAS,WACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;AAsBO,SAAS,WACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;AAwBO,SAAS,aACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;AAwBO,SAAS,eACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;AAiBO,SAAS,gBACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;AAYO,SAAS,gBACf,QACA,OACM;AACN,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,MAAM,QAAQ,MAAM,KAAK,CAAC;AAAA,EACxC;AACA,SAAO,MAAM,MAAM,QAAQ,KAAK;AACjC;","names":[]}
|
package/sqlite-core/session.cjs
CHANGED
|
@@ -26,9 +26,9 @@ __export(session_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(session_exports);
|
|
27
27
|
var import_entity = require("../entity.cjs");
|
|
28
28
|
var import_errors = require("../errors.cjs");
|
|
29
|
-
var
|
|
29
|
+
var import_query_promise = require("../query-promise.cjs");
|
|
30
30
|
var import_db = require("./db.cjs");
|
|
31
|
-
class ExecuteResultSync extends
|
|
31
|
+
class ExecuteResultSync extends import_query_promise.QueryPromise {
|
|
32
32
|
constructor(resultCb) {
|
|
33
33
|
super();
|
|
34
34
|
this.resultCb = resultCb;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\n// import { QueryPromise } from '../index.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t) {}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;\n\n\texecute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }>;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }> {\n\t\treturn this.prepareQuery(query, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<TResultKind, TRunResult>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: Promise<TResult> }[TKind];\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: SQLiteRaw<TResult> }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAAuD;AAMvD,2BAA6B;AAC7B,gBAAmC;AAa5B,MAAM,0BAA6B,kCAAgB;AAAA,EAGzD,YAAoB,UAAmB;AACtC,UAAM;AADa;AAAA,EAEpB;AAAA,EAJA,QAAiB,wBAAU,IAAY;AAAA,EAMvC,MAAe,UAAsB;AACpC,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EAEA,OAAU;AACT,WAAO,KAAK,SAAS;AAAA,EACtB;AACD;AAKO,MAAe,oBAA4E;AAAA,EAMjG,YACS,MACA,eACE,OACT;AAHO;AACA;AACE;AAAA,EACR;AAAA,EATH,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAAA,EAQA,WAAkB;AACjB,WAAO,KAAK;AAAA,EACb;AAAA,EAIA,aAAa,QAAiB,cAAiC;AAC9D,WAAO;AAAA,EACR;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,QAAQ,mBAAqF;AAC5F,QAAI,KAAK,SAAS,SAAS;AAC1B,aAAO,KAAK,KAAK,aAAa,EAAE,iBAAiB;AAAA,IAClD;AACA,WAAO,IAAI,kBAAkB,MAAM,KAAK,KAAK,aAAa,EAAE,iBAAiB,CAAC;AAAA,EAC/E;AAAA,EAEA,UAAU,UAAmB,aAAuB;AACnD,YAAQ,KAAK,eAAe;AAAA,MAC3B,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,IACD;AAAA,EACD;AAID;AAQO,MAAe,cAKpB;AAAA,EAGD,YAEU,SACR;AADQ;AAAA,EACP;AAAA,EALH,QAAiB,wBAAU,IAAY;AAAA,EAevC,oBACC,OACA,QACA,eACA,uBACmE;AACnE,WAAO,KAAK,aAAa,OAAO,QAAQ,eAAe,qBAAqB;AAAA,EAC7E;AAAA,EAOA,IAAI,OAA6C;AAChD,UAAM,cAAc,KAAK,QAAQ,WAAW,KAAK;AACjD,QAAI;AACH,aAAO,KAAK,oBAAoB,aAAa,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,IAC3E,SAAS,KAAK;AACb,YAAM,IAAI,2BAAa,EAAE,OAAO,KAAK,SAAS,4BAA4B,YAAY,GAAG,IAAI,CAAC;AAAA,IAC/F;AAAA,EACD;AAAA;AAAA,EAGA,kCAAkC,QAAiB;AAClD,WAAO;AAAA,EACR;AAAA,EAEA,IAAiB,OAAsC;AACtD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,IAAiB,OAAoC;AACpD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,OACC,OAC2B;AAC3B,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,OAAO;AAAA,EAIjG;AAAA;AAAA,EAGA,qCAAqC,SAA2B;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AACD;AAMO,MAAe,0BAKZ,6BAAkE;AAAA,EAG3E,YACC,YACA,SACA,SACU,QAKS,cAAc,GAChC;AACD,UAAM,YAAY,SAAS,SAAS,MAAM;AAPhC;AAKS;AAAA,EAGpB;AAAA,EAdA,QAAiB,wBAAU,IAAY;AAAA,EAgBvC,WAAkB;AACjB,UAAM,IAAI,uCAAyB;AAAA,EACpC;AACD;","names":[]}
|
|
@@ -3,7 +3,7 @@ import type { TablesRelationalConfig } from "../relations.cjs";
|
|
|
3
3
|
import type { PreparedQuery } from "../session.cjs";
|
|
4
4
|
import type { Query, SQL } from "../sql/sql.cjs";
|
|
5
5
|
import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.cjs";
|
|
6
|
-
import { QueryPromise } from "../
|
|
6
|
+
import { QueryPromise } from "../query-promise.cjs";
|
|
7
7
|
import { BaseSQLiteDatabase } from "./db.cjs";
|
|
8
8
|
import type { SQLiteRaw } from "./query-builders/raw.cjs";
|
|
9
9
|
import type { SelectedFieldsOrdered } from "./query-builders/select.types.cjs";
|
package/sqlite-core/session.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { TablesRelationalConfig } from "../relations.js";
|
|
|
3
3
|
import type { PreparedQuery } from "../session.js";
|
|
4
4
|
import type { Query, SQL } from "../sql/sql.js";
|
|
5
5
|
import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.js";
|
|
6
|
-
import { QueryPromise } from "../
|
|
6
|
+
import { QueryPromise } from "../query-promise.js";
|
|
7
7
|
import { BaseSQLiteDatabase } from "./db.js";
|
|
8
8
|
import type { SQLiteRaw } from "./query-builders/raw.js";
|
|
9
9
|
import type { SelectedFieldsOrdered } from "./query-builders/select.types.js";
|
package/sqlite-core/session.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { entityKind } from "../entity.js";
|
|
2
2
|
import { DrizzleError, TransactionRollbackError } from "../errors.js";
|
|
3
|
-
import { QueryPromise } from "../
|
|
3
|
+
import { QueryPromise } from "../query-promise.js";
|
|
4
4
|
import { BaseSQLiteDatabase } from "./db.js";
|
|
5
5
|
class ExecuteResultSync extends QueryPromise {
|
|
6
6
|
constructor(resultCb) {
|