drizzle-orm 0.31.0-e64a96d → 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.
- 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 +97 -13
- package/pg-core/columns/index.cjs +14 -2
- package/pg-core/columns/index.cjs.map +1 -1
- package/pg-core/columns/index.d.cts +7 -1
- package/pg-core/columns/index.d.ts +7 -1
- package/pg-core/columns/index.js +7 -1
- 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/pg-core/columns/vector_extension/bit.cjs +58 -0
- package/pg-core/columns/vector_extension/bit.cjs.map +1 -0
- package/pg-core/columns/vector_extension/bit.d.cts +29 -0
- package/pg-core/columns/vector_extension/bit.d.ts +29 -0
- package/pg-core/columns/vector_extension/bit.js +32 -0
- package/pg-core/columns/vector_extension/bit.js.map +1 -0
- package/pg-core/columns/vector_extension/halfvec.cjs +64 -0
- package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -0
- package/pg-core/columns/vector_extension/halfvec.d.cts +31 -0
- package/pg-core/columns/vector_extension/halfvec.d.ts +31 -0
- package/pg-core/columns/vector_extension/halfvec.js +38 -0
- package/pg-core/columns/vector_extension/halfvec.js.map +1 -0
- package/pg-core/columns/vector_extension/sparsevec.cjs +58 -0
- package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -0
- package/pg-core/columns/vector_extension/sparsevec.d.cts +29 -0
- package/pg-core/columns/vector_extension/sparsevec.d.ts +29 -0
- package/pg-core/columns/vector_extension/sparsevec.js +32 -0
- package/pg-core/columns/vector_extension/sparsevec.js.map +1 -0
- package/pg-core/columns/{vector.cjs → vector_extension/vector.cjs} +8 -2
- package/pg-core/columns/vector_extension/vector.cjs.map +1 -0
- package/pg-core/columns/{vector.d.cts → vector_extension/vector.d.cts} +6 -4
- package/pg-core/columns/{vector.d.ts → vector_extension/vector.d.ts} +6 -4
- package/pg-core/columns/{vector.js → vector_extension/vector.js} +8 -2
- package/pg-core/columns/vector_extension/vector.js.map +1 -0
- package/sql/functions/index.cjs +3 -1
- package/sql/functions/index.cjs.map +1 -1
- package/sql/functions/index.d.cts +1 -0
- package/sql/functions/index.d.ts +1 -0
- package/sql/functions/index.js +1 -0
- package/sql/functions/index.js.map +1 -1
- package/sql/functions/vector.cjs +41 -8
- package/sql/functions/vector.cjs.map +1 -1
- package/sql/functions/vector.d.cts +54 -5
- package/sql/functions/vector.d.ts +54 -5
- package/sql/functions/vector.js +36 -6
- 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
- package/pg-core/columns/vector.cjs.map +0 -1
- package/pg-core/columns/vector.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnyColumn } from "../../index.cjs";
|
|
2
|
+
import type { TypedQueryBuilder } from "../../query-builders/query-builder.cjs";
|
|
2
3
|
import { type SQL, type SQLWrapper } from "../sql.cjs";
|
|
3
4
|
/**
|
|
4
5
|
* Used in sorting and in querying, if used in sorting,
|
|
@@ -22,7 +23,28 @@ import { type SQL, type SQLWrapper } from "../sql.cjs";
|
|
|
22
23
|
* db.select({distance: l2Distance(cars.embedding, embedding)}).from(cars)
|
|
23
24
|
* ```
|
|
24
25
|
*/
|
|
25
|
-
export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number[]): SQL;
|
|
26
|
+
export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
27
|
+
/**
|
|
28
|
+
* L1 distance is one of the possible distance measures between two probability distribution vectors and it is
|
|
29
|
+
* calculated as the sum of the absolute differences.
|
|
30
|
+
* The smaller the distance between the observed probability vectors, the higher the accuracy of the synthetic data
|
|
31
|
+
*
|
|
32
|
+
* ## Examples
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Sort cars by embedding similarity
|
|
36
|
+
* // to the given embedding
|
|
37
|
+
* db.select().from(cars)
|
|
38
|
+
* .orderBy(l1Distance(cars.embedding, embedding));
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* // Select distance of cars and embedding
|
|
43
|
+
* // to the given embedding
|
|
44
|
+
* db.select({distance: l1Distance(cars.embedding, embedding)}).from(cars)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function l1Distance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
26
48
|
/**
|
|
27
49
|
* Used in sorting and in querying, if used in sorting,
|
|
28
50
|
* this specifies that the given column or expression should be sorted in an order
|
|
@@ -36,16 +58,16 @@ export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number
|
|
|
36
58
|
* // Sort cars by embedding similarity
|
|
37
59
|
* // to the given embedding
|
|
38
60
|
* db.select().from(cars)
|
|
39
|
-
* .orderBy(
|
|
61
|
+
* .orderBy(innerProduct(cars.embedding, embedding));
|
|
40
62
|
* ```
|
|
41
63
|
*
|
|
42
64
|
* ```ts
|
|
43
65
|
* // Select distance of cars and embedding
|
|
44
66
|
* // to the given embedding
|
|
45
|
-
* db.select({distance:
|
|
67
|
+
* db.select({ distance: innerProduct(cars.embedding, embedding) }).from(cars)
|
|
46
68
|
* ```
|
|
47
69
|
*/
|
|
48
|
-
export declare function
|
|
70
|
+
export declare function innerProduct(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
49
71
|
/**
|
|
50
72
|
* Used in sorting and in querying, if used in sorting,
|
|
51
73
|
* this specifies that the given column or expression should be sorted in an order
|
|
@@ -68,4 +90,31 @@ export declare function maxInnerProduct(column: SQLWrapper | AnyColumn, value: n
|
|
|
68
90
|
* db.select({distance: cosineDistance(cars.embedding, embedding)}).from(cars)
|
|
69
91
|
* ```
|
|
70
92
|
*/
|
|
71
|
-
export declare function cosineDistance(column: SQLWrapper | AnyColumn, value: number[]): SQL;
|
|
93
|
+
export declare function cosineDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
94
|
+
/**
|
|
95
|
+
* Hamming distance between two strings or vectors of equal length is the number of positions at which the
|
|
96
|
+
* corresponding symbols are different. In other words, it measures the minimum number of
|
|
97
|
+
* substitutions required to change one string into the other, or equivalently,
|
|
98
|
+
* the minimum number of errors that could have transformed one string into the other
|
|
99
|
+
*
|
|
100
|
+
* ## Examples
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* // Sort cars by embedding similarity
|
|
104
|
+
* // to the given embedding
|
|
105
|
+
* db.select().from(cars)
|
|
106
|
+
* .orderBy(hammingDistance(cars.embedding, embedding));
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function hammingDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
110
|
+
/**
|
|
111
|
+
* ## Examples
|
|
112
|
+
*
|
|
113
|
+
* ```ts
|
|
114
|
+
* // Sort cars by embedding similarity
|
|
115
|
+
* // to the given embedding
|
|
116
|
+
* db.select().from(cars)
|
|
117
|
+
* .orderBy(jaccardDistance(cars.embedding, embedding));
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnyColumn } from "../../index.js";
|
|
2
|
+
import type { TypedQueryBuilder } from "../../query-builders/query-builder.js";
|
|
2
3
|
import { type SQL, type SQLWrapper } from "../sql.js";
|
|
3
4
|
/**
|
|
4
5
|
* Used in sorting and in querying, if used in sorting,
|
|
@@ -22,7 +23,28 @@ import { type SQL, type SQLWrapper } from "../sql.js";
|
|
|
22
23
|
* db.select({distance: l2Distance(cars.embedding, embedding)}).from(cars)
|
|
23
24
|
* ```
|
|
24
25
|
*/
|
|
25
|
-
export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number[]): SQL;
|
|
26
|
+
export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
27
|
+
/**
|
|
28
|
+
* L1 distance is one of the possible distance measures between two probability distribution vectors and it is
|
|
29
|
+
* calculated as the sum of the absolute differences.
|
|
30
|
+
* The smaller the distance between the observed probability vectors, the higher the accuracy of the synthetic data
|
|
31
|
+
*
|
|
32
|
+
* ## Examples
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Sort cars by embedding similarity
|
|
36
|
+
* // to the given embedding
|
|
37
|
+
* db.select().from(cars)
|
|
38
|
+
* .orderBy(l1Distance(cars.embedding, embedding));
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* // Select distance of cars and embedding
|
|
43
|
+
* // to the given embedding
|
|
44
|
+
* db.select({distance: l1Distance(cars.embedding, embedding)}).from(cars)
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function l1Distance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
26
48
|
/**
|
|
27
49
|
* Used in sorting and in querying, if used in sorting,
|
|
28
50
|
* this specifies that the given column or expression should be sorted in an order
|
|
@@ -36,16 +58,16 @@ export declare function l2Distance(column: SQLWrapper | AnyColumn, value: number
|
|
|
36
58
|
* // Sort cars by embedding similarity
|
|
37
59
|
* // to the given embedding
|
|
38
60
|
* db.select().from(cars)
|
|
39
|
-
* .orderBy(
|
|
61
|
+
* .orderBy(innerProduct(cars.embedding, embedding));
|
|
40
62
|
* ```
|
|
41
63
|
*
|
|
42
64
|
* ```ts
|
|
43
65
|
* // Select distance of cars and embedding
|
|
44
66
|
* // to the given embedding
|
|
45
|
-
* db.select({distance:
|
|
67
|
+
* db.select({ distance: innerProduct(cars.embedding, embedding) }).from(cars)
|
|
46
68
|
* ```
|
|
47
69
|
*/
|
|
48
|
-
export declare function
|
|
70
|
+
export declare function innerProduct(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
49
71
|
/**
|
|
50
72
|
* Used in sorting and in querying, if used in sorting,
|
|
51
73
|
* this specifies that the given column or expression should be sorted in an order
|
|
@@ -68,4 +90,31 @@ export declare function maxInnerProduct(column: SQLWrapper | AnyColumn, value: n
|
|
|
68
90
|
* db.select({distance: cosineDistance(cars.embedding, embedding)}).from(cars)
|
|
69
91
|
* ```
|
|
70
92
|
*/
|
|
71
|
-
export declare function cosineDistance(column: SQLWrapper | AnyColumn, value: number[]): SQL;
|
|
93
|
+
export declare function cosineDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
94
|
+
/**
|
|
95
|
+
* Hamming distance between two strings or vectors of equal length is the number of positions at which the
|
|
96
|
+
* corresponding symbols are different. In other words, it measures the minimum number of
|
|
97
|
+
* substitutions required to change one string into the other, or equivalently,
|
|
98
|
+
* the minimum number of errors that could have transformed one string into the other
|
|
99
|
+
*
|
|
100
|
+
* ## Examples
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* // Sort cars by embedding similarity
|
|
104
|
+
* // to the given embedding
|
|
105
|
+
* db.select().from(cars)
|
|
106
|
+
* .orderBy(hammingDistance(cars.embedding, embedding));
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function hammingDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
|
110
|
+
/**
|
|
111
|
+
* ## Examples
|
|
112
|
+
*
|
|
113
|
+
* ```ts
|
|
114
|
+
* // Sort cars by embedding similarity
|
|
115
|
+
* // to the given embedding
|
|
116
|
+
* db.select().from(cars)
|
|
117
|
+
* .orderBy(jaccardDistance(cars.embedding, embedding));
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function jaccardDistance(column: SQLWrapper | AnyColumn, value: number[] | string[] | TypedQueryBuilder<any> | string): SQL;
|
package/sql/functions/vector.js
CHANGED
|
@@ -3,17 +3,47 @@ function toSql(value) {
|
|
|
3
3
|
return JSON.stringify(value);
|
|
4
4
|
}
|
|
5
5
|
function l2Distance(column, value) {
|
|
6
|
-
|
|
6
|
+
if (Array.isArray(value)) {
|
|
7
|
+
return sql`${column} <-> ${toSql(value)}`;
|
|
8
|
+
}
|
|
9
|
+
return sql`${column} <-> ${value}`;
|
|
7
10
|
}
|
|
8
|
-
function
|
|
9
|
-
|
|
11
|
+
function l1Distance(column, value) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return sql`${column} <+> ${toSql(value)}`;
|
|
14
|
+
}
|
|
15
|
+
return sql`${column} <+> ${value}`;
|
|
16
|
+
}
|
|
17
|
+
function innerProduct(column, value) {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return sql`${column} <#> ${toSql(value)}`;
|
|
20
|
+
}
|
|
21
|
+
return sql`${column} <#> ${value}`;
|
|
10
22
|
}
|
|
11
23
|
function cosineDistance(column, value) {
|
|
12
|
-
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return sql`${column} <=> ${toSql(value)}`;
|
|
26
|
+
}
|
|
27
|
+
return sql`${column} <=> ${value}`;
|
|
28
|
+
}
|
|
29
|
+
function hammingDistance(column, value) {
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
return sql`${column} <~> ${toSql(value)}`;
|
|
32
|
+
}
|
|
33
|
+
return sql`${column} <~> ${value}`;
|
|
34
|
+
}
|
|
35
|
+
function jaccardDistance(column, value) {
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return sql`${column} <%> ${toSql(value)}`;
|
|
38
|
+
}
|
|
39
|
+
return sql`${column} <%> ${value}`;
|
|
13
40
|
}
|
|
14
41
|
export {
|
|
15
42
|
cosineDistance,
|
|
16
|
-
|
|
17
|
-
|
|
43
|
+
hammingDistance,
|
|
44
|
+
innerProduct,
|
|
45
|
+
jaccardDistance,
|
|
46
|
+
l1Distance,
|
|
47
|
+
l2Distance
|
|
18
48
|
};
|
|
19
49
|
//# sourceMappingURL=vector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sql/functions/vector.ts"],"sourcesContent":["import type { AnyColumn } from '~/index.ts';\nimport { type SQL, sql, type SQLWrapper } from '../sql.ts';\n\nfunction toSql(value: number[]): 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(
|
|
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) {
|
|
@@ -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":"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","names":[]}
|
package/version.cjs
CHANGED
package/version.d.cts
CHANGED
package/version.d.ts
CHANGED
package/version.js
CHANGED
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|