forge-sql-orm 2.1.25 → 2.1.26
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/README.md +81 -0
- package/dist/core/ForgeSQLQueryBuilder.d.ts.map +1 -1
- package/dist/core/ForgeSQLQueryBuilder.js +38 -1
- package/dist/core/ForgeSQLQueryBuilder.js.map +1 -1
- package/dist/core/VectorTiDB.d.ts +120 -0
- package/dist/core/VectorTiDB.d.ts.map +1 -0
- package/dist/core/VectorTiDB.js +169 -0
- package/dist/core/VectorTiDB.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/package.json +12 -12
- package/src/core/ForgeSQLQueryBuilder.ts +48 -5
- package/src/core/VectorTiDB.ts +192 -0
- package/src/core/index.ts +1 -0
package/README.md
CHANGED
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
- ✅ **Optimistic Locking** Ensures data consistency by preventing conflicts when multiple users update the same record
|
|
45
45
|
- ✅ **Query Plan Analysis**: Detailed execution plan analysis and optimization insights
|
|
46
46
|
- ✅ **Rovo Integration** Secure pattern for natural-language analytics with comprehensive security validations, Row-Level Security (RLS) support, and dynamic SQL query execution
|
|
47
|
+
- ✅ **TiDB `VECTOR` type & vector SQL helpers** — Drizzle column type `vectorTiDBType` plus `vecCosineDistance`, `vecL2Distance`, `vecDims`, and related helpers for **SQL with AI** (embeddings storage and similarity search)
|
|
47
48
|
|
|
48
49
|
## Table of Contents
|
|
49
50
|
|
|
@@ -84,6 +85,7 @@
|
|
|
84
85
|
- [Automatic Error Analysis](#automatic-error-analysis) - Automatic timeout and OOM error detection with execution plans
|
|
85
86
|
- [Slow Query Monitoring](#slow-query-monitoring) - Scheduled monitoring of slow queries with execution plans
|
|
86
87
|
- [Date and Time Types](#date-and-time-types)
|
|
88
|
+
- [TiDB vector types (AI / similarity search)](#tidb-vector-types-ai--similarity-search)
|
|
87
89
|
|
|
88
90
|
### 🛠️ Development Tools
|
|
89
91
|
|
|
@@ -102,6 +104,7 @@
|
|
|
102
104
|
- [Organization Tracker Example](examples/forge-sql-orm-example-org-tracker)
|
|
103
105
|
- [Checklist Example](examples/forge-sql-orm-example-checklist)
|
|
104
106
|
- [Cache Example](examples/forge-sql-orm-example-cache) - Advanced caching capabilities with performance monitoring
|
|
107
|
+
- [Vector / AI SQL Example](examples/forge-sql-orm-example-vector) - `VECTOR` columns, embeddings, cosine-distance search (TiDB-compatible)
|
|
105
108
|
- [Rovo Integration Example](https://github.com/vzakharchenko/Forge-Secure-Notes-for-Jira) - Real-world Rovo AI agent implementation with secure natural-language analytics
|
|
106
109
|
|
|
107
110
|
### 📚 Reference
|
|
@@ -1071,6 +1074,7 @@ where Cache context - allows you to batch cache invalidation events and bypass c
|
|
|
1071
1074
|
npm pkg set scripts.models:create="forge-sql-orm-cli generate:model --output src/entities --saveEnv"
|
|
1072
1075
|
npm pkg set scripts.migration:create="forge-sql-orm-cli migrations:create --force --output src/migration --entitiesPath src/entities"
|
|
1073
1076
|
npm pkg set scripts.migration:update="forge-sql-orm-cli migrations:update --entitiesPath src/entities --output src/migration"
|
|
1077
|
+
npm pkg set scripts.schema:create="forge-sql-orm-cli schema:create --entitiesPath src/entities"
|
|
1074
1078
|
```
|
|
1075
1079
|
|
|
1076
1080
|
_(This is done only once when setting up the project)_
|
|
@@ -1265,6 +1269,78 @@ Our custom types provide:
|
|
|
1265
1269
|
|
|
1266
1270
|
Each type ensures that the data is properly formatted according to Forge SQL's requirements while providing a clean, type-safe interface for your application code.
|
|
1267
1271
|
|
|
1272
|
+
---
|
|
1273
|
+
|
|
1274
|
+
## TiDB vector types (AI / similarity search)
|
|
1275
|
+
|
|
1276
|
+
Forge SQL ORM exposes **TiDB-compatible** `VECTOR` columns and vector functions so you can store **embeddings** and run **similarity search** in SQL—typical for **AI** features (semantic search, RAG-style retrieval) built on Forge SQL.
|
|
1277
|
+
|
|
1278
|
+
### Schema: `vectorTiDBType`
|
|
1279
|
+
|
|
1280
|
+
Use the Drizzle custom column type from `forge-sql-orm` (same patterns as `text()`, `int()`, …). With a fixed dimension, DDL becomes `VECTOR(n)`; without it, `VECTOR`.
|
|
1281
|
+
|
|
1282
|
+
Explicit **SQL column name** + options:
|
|
1283
|
+
|
|
1284
|
+
```typescript
|
|
1285
|
+
embedding: vectorTiDBType("embedding", { dimension: 1536 }).notNull(),
|
|
1286
|
+
```
|
|
1287
|
+
|
|
1288
|
+
Config only (column name is the **property key** in `mysqlTable`):
|
|
1289
|
+
|
|
1290
|
+
```typescript
|
|
1291
|
+
embedding: vectorTiDBType({ dimension: 1536 }).notNull(),
|
|
1292
|
+
```
|
|
1293
|
+
|
|
1294
|
+
Full example:
|
|
1295
|
+
|
|
1296
|
+
```typescript
|
|
1297
|
+
import { int, mysqlTable, primaryKey, text } from "drizzle-orm/mysql-core";
|
|
1298
|
+
import { vectorTiDBType } from "forge-sql-orm";
|
|
1299
|
+
|
|
1300
|
+
export const documents = mysqlTable(
|
|
1301
|
+
"documents",
|
|
1302
|
+
{
|
|
1303
|
+
id: int().autoincrement().notNull(),
|
|
1304
|
+
body: text().notNull(),
|
|
1305
|
+
embedding: vectorTiDBType("embedding", { dimension: 1536 }).notNull(),
|
|
1306
|
+
},
|
|
1307
|
+
(table) => [primaryKey({ columns: [table.id], name: "id" })],
|
|
1308
|
+
);
|
|
1309
|
+
```
|
|
1310
|
+
|
|
1311
|
+
Values in application code are **`number[]`**; the driver maps them to the textual form TiDB expects.
|
|
1312
|
+
|
|
1313
|
+
### Queries: distance helpers
|
|
1314
|
+
|
|
1315
|
+
Helpers build the same expressions as TiDB’s vector functions (e.g. `VEC_COSINE_DISTANCE`). Use them inside `forgeSQL.select()`, `where()`, `orderBy()`, etc.
|
|
1316
|
+
|
|
1317
|
+
```typescript
|
|
1318
|
+
import { asc, sql } from "drizzle-orm";
|
|
1319
|
+
import { vecCosineDistance } from "forge-sql-orm";
|
|
1320
|
+
import { documents } from "./schema";
|
|
1321
|
+
|
|
1322
|
+
const queryVector = [0.1, 0.2, 0.3];
|
|
1323
|
+
|
|
1324
|
+
const distanceAlias = sql.raw("distance");
|
|
1325
|
+
const distance = sql<number>`${vecCosineDistance(documents.embedding, queryVector)} AS \`${distanceAlias}\``;
|
|
1326
|
+
|
|
1327
|
+
const nearest = await forgeSQL
|
|
1328
|
+
.select({
|
|
1329
|
+
id: documents.id,
|
|
1330
|
+
body: documents.body,
|
|
1331
|
+
distance,
|
|
1332
|
+
})
|
|
1333
|
+
.from(documents)
|
|
1334
|
+
.orderBy(asc(distanceAlias))
|
|
1335
|
+
.limit(10);
|
|
1336
|
+
```
|
|
1337
|
+
|
|
1338
|
+
Also available (see `src/core/VectorTiDB.ts`): `vecFromText`, `vecAsText`, `vecDims`, `vecL2Norm`, `vecL2Distance`, `vecL1Distance`, `vecNegativeInnerProduct`.
|
|
1339
|
+
|
|
1340
|
+
### Example app
|
|
1341
|
+
|
|
1342
|
+
See **[examples/forge-sql-orm-example-vector](examples/forge-sql-orm-example-vector)** for a full Forge app (migrations, resolvers, UI) aligned with [Get Started with Vector Search via SQL](https://docs.pingcap.com/tidb/stable/vector-search-get-started-using-sql).
|
|
1343
|
+
|
|
1268
1344
|
# Connection to ORM
|
|
1269
1345
|
|
|
1270
1346
|
```js
|
|
@@ -2363,6 +2439,7 @@ The CLI tool provides the following main commands:
|
|
|
2363
2439
|
- `migrations:create` - Create new migration files
|
|
2364
2440
|
- `migrations:update` - Update existing migrations with schema changes
|
|
2365
2441
|
- `migrations:drop` - Create migration to drop tables
|
|
2442
|
+
- `schema:create` - Apply schema directly from Drizzle models to database
|
|
2366
2443
|
|
|
2367
2444
|
### Installation
|
|
2368
2445
|
|
|
@@ -2380,6 +2457,7 @@ Add the following scripts to your `package.json`:
|
|
|
2380
2457
|
npm pkg set scripts.models:create="forge-sql-orm-cli generate:model --output src/entities --saveEnv"
|
|
2381
2458
|
npm pkg set scripts.migration:create="forge-sql-orm-cli migrations:create --force --output src/migration --entitiesPath src/entities"
|
|
2382
2459
|
npm pkg set scripts.migration:update="forge-sql-orm-cli migrations:update --entitiesPath src/entities --output src/migration"
|
|
2460
|
+
npm pkg set scripts.schema:create="forge-sql-orm-cli schema:create --entitiesPath src/entities"
|
|
2383
2461
|
```
|
|
2384
2462
|
|
|
2385
2463
|
### Basic Usage
|
|
@@ -2395,6 +2473,9 @@ npm run migration:create
|
|
|
2395
2473
|
|
|
2396
2474
|
# Update migration
|
|
2397
2475
|
npm run migration:update
|
|
2476
|
+
|
|
2477
|
+
# Apply schema directly from Drizzle models
|
|
2478
|
+
npm run schema:create
|
|
2398
2479
|
```
|
|
2399
2480
|
|
|
2400
2481
|
**Note:** The CLI tool is designed to work as a local dependency through npm scripts. Configuration is saved to `.env` file using the `--saveEnv` flag, so you only need to provide database credentials once.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLQueryBuilder.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ForgeSQLQueryBuilder.d.ts","sourceRoot":"","sources":["../../src/core/ForgeSQLQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,26 @@ const sqlUtils_1 = require("../utils/sqlUtils");
|
|
|
6
6
|
/**
|
|
7
7
|
* Creates a custom type for date/time fields with specified format and timestamp validation.
|
|
8
8
|
*/
|
|
9
|
+
function normalizeDateOnlyValue(value) {
|
|
10
|
+
if (typeof value !== "string") {
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
const trimmedValue = value.trim();
|
|
14
|
+
const dotSeparatedMatch = /^(\d{2})\.(\d{2})\.(\d{4})$/.exec(trimmedValue);
|
|
15
|
+
if (dotSeparatedMatch) {
|
|
16
|
+
const [, day, month, year] = dotSeparatedMatch;
|
|
17
|
+
return `${year}-${month}-${day} 00:00:00.000`;
|
|
18
|
+
}
|
|
19
|
+
const slashSeparatedMatch = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(trimmedValue);
|
|
20
|
+
if (slashSeparatedMatch) {
|
|
21
|
+
const [, day, month, year] = slashSeparatedMatch;
|
|
22
|
+
return `${year}-${month}-${day} 00:00:00.000`;
|
|
23
|
+
}
|
|
24
|
+
if (trimmedValue.length === 10) {
|
|
25
|
+
return `${trimmedValue} 00:00:00.000`;
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
9
29
|
function createDateCustomType(dataType, format, isTimeStamp) {
|
|
10
30
|
return (0, mysql_core_1.customType)({
|
|
11
31
|
dataType() {
|
|
@@ -15,6 +35,9 @@ function createDateCustomType(dataType, format, isTimeStamp) {
|
|
|
15
35
|
return (0, sqlUtils_1.formatDateTime)(value, format, isTimeStamp);
|
|
16
36
|
},
|
|
17
37
|
fromDriver(value) {
|
|
38
|
+
if (value === null || value === undefined) {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
18
41
|
return (0, sqlUtils_1.parseDateTime)(value, format);
|
|
19
42
|
},
|
|
20
43
|
});
|
|
@@ -25,7 +48,21 @@ function createDateCustomType(dataType, format, isTimeStamp) {
|
|
|
25
48
|
*
|
|
26
49
|
* @type {CustomType}
|
|
27
50
|
*/
|
|
28
|
-
exports.forgeDateTimeString =
|
|
51
|
+
exports.forgeDateTimeString = (0, mysql_core_1.customType)({
|
|
52
|
+
dataType() {
|
|
53
|
+
return "datetime";
|
|
54
|
+
},
|
|
55
|
+
toDriver(value) {
|
|
56
|
+
return (0, sqlUtils_1.formatDateTime)(value, "yyyy-MM-dd' 'HH:mm:ss.SSS", false);
|
|
57
|
+
},
|
|
58
|
+
fromDriver(value) {
|
|
59
|
+
if (value === null || value === undefined) {
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
const normalizedValue = normalizeDateOnlyValue(value);
|
|
63
|
+
return (0, sqlUtils_1.parseDateTime)(normalizedValue, "yyyy-MM-dd' 'HH:mm:ss.SSS");
|
|
64
|
+
},
|
|
65
|
+
});
|
|
29
66
|
/**
|
|
30
67
|
* Custom type for MySQL timestamp fields.
|
|
31
68
|
* Handles conversion between JavaScript Date objects and MySQL timestamp strings.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForgeSQLQueryBuilder.js","sourceRoot":"","sources":["../../src/core/ForgeSQLQueryBuilder.ts"],"names":[],"mappings":";;;AAEA,uDAOgC;AAMhC,gDAAkE;AAkvClE;;GAEG;AACH,SAAS,oBAAoB,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAoB;IAClF,OAAO,IAAA,uBAAU,EAId;QACD,QAAQ;YACN,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,QAAQ,CAAC,KAAW;YAClB,OAAO,IAAA,yBAAc,EAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QACD,UAAU,CAAC,KAAc;YACvB,OAAO,IAAA,wBAAa,EAAC,KAAe,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"ForgeSQLQueryBuilder.js","sourceRoot":"","sources":["../../src/core/ForgeSQLQueryBuilder.ts"],"names":[],"mappings":";;;AAEA,uDAOgC;AAMhC,gDAAkE;AAkvClE;;GAEG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAElC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,iBAAiB,CAAC;QAC/C,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,eAAe,CAAC;IAChD,CAAC;IAED,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7E,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,mBAAmB,CAAC;QACjD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,eAAe,CAAC;IAChD,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,GAAG,YAAY,eAAe,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAoB;IAClF,OAAO,IAAA,uBAAU,EAId;QACD,QAAQ;YACN,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,QAAQ,CAAC,KAAW;YAClB,OAAO,IAAA,yBAAc,EAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QACD,UAAU,CAAC,KAAc;YACvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,KAAwB,CAAC;YAClC,CAAC;YACD,OAAO,IAAA,wBAAa,EAAC,KAAe,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,IAAA,uBAAU,EAI1C;IACD,QAAQ;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,QAAQ,CAAC,KAAW;QAClB,OAAO,IAAA,yBAAc,EAAC,KAAK,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,KAAc;QACvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAwB,CAAC;QAClC,CAAC;QACD,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAA,wBAAa,EAAC,eAAyB,EAAE,2BAA2B,CAAC,CAAC;IAC/E,CAAC;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACU,QAAA,oBAAoB,GAAG,oBAAoB,CACtD,WAAW,EACX,2BAA2B,EAC3B,IAAI,CACL,CAAC;AAEF;;;;;GAKG;AACU,QAAA,eAAe,GAAG,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAEjF;;;;;GAKG;AACU,QAAA,eAAe,GAAG,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { type SQL, type AnyColumn } from "drizzle-orm";
|
|
2
|
+
type VectorConfig = {
|
|
3
|
+
dimension?: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Input accepted by TiDB vector SQL helpers.
|
|
7
|
+
*
|
|
8
|
+
* - `number[]`: converted to `VEC_FROM_TEXT('[...]')`
|
|
9
|
+
* - `string`: treated as raw SQL vector expression, for example:
|
|
10
|
+
* `CAST('[0.3, 0.5, -0.1]' AS VECTOR)`
|
|
11
|
+
* - `SQL` / `AnyColumn`: passed through as-is
|
|
12
|
+
*/
|
|
13
|
+
type VectorInput = string | number[] | SQL | AnyColumn;
|
|
14
|
+
/**
|
|
15
|
+
* TiDB `VECTOR` column type (same call shapes as other Drizzle MySQL builders).
|
|
16
|
+
*
|
|
17
|
+
* - `vectorTiDBType('embedding', { dimension: 1536 })` — SQL column name + fixed dimension (`VECTOR(1536)`).
|
|
18
|
+
* - `vectorTiDBType({ dimension: 1536 })` — config only; column name comes from the object key in `mysqlTable`.
|
|
19
|
+
* - `vectorTiDBType('embedding')` or `vectorTiDBType()` — `VECTOR` without a fixed size in DDL.
|
|
20
|
+
*
|
|
21
|
+
* Values are `number[]` in application code; the driver maps to TiDB’s text form.
|
|
22
|
+
*/
|
|
23
|
+
export declare const vectorTiDBType: {
|
|
24
|
+
(): import("drizzle-orm/mysql-core").MySqlCustomColumnBuilder<{
|
|
25
|
+
name: "";
|
|
26
|
+
dataType: "custom";
|
|
27
|
+
columnType: "MySqlCustomColumn";
|
|
28
|
+
data: number[];
|
|
29
|
+
driverParam: string;
|
|
30
|
+
enumValues: undefined;
|
|
31
|
+
}>;
|
|
32
|
+
<TConfig extends Record<string, any> & VectorConfig>(fieldConfig?: TConfig | undefined): import("drizzle-orm/mysql-core").MySqlCustomColumnBuilder<{
|
|
33
|
+
name: "";
|
|
34
|
+
dataType: "custom";
|
|
35
|
+
columnType: "MySqlCustomColumn";
|
|
36
|
+
data: number[];
|
|
37
|
+
driverParam: string;
|
|
38
|
+
enumValues: undefined;
|
|
39
|
+
}>;
|
|
40
|
+
<TName extends string>(dbName: TName, fieldConfig?: VectorConfig | undefined): import("drizzle-orm/mysql-core").MySqlCustomColumnBuilder<{
|
|
41
|
+
name: TName;
|
|
42
|
+
dataType: "custom";
|
|
43
|
+
columnType: "MySqlCustomColumn";
|
|
44
|
+
data: number[];
|
|
45
|
+
driverParam: string;
|
|
46
|
+
enumValues: undefined;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Converts a text representation of a vector into a TiDB VECTOR expression.
|
|
51
|
+
*
|
|
52
|
+
* TiDB function: `VEC_FROM_TEXT(string)`.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* vecFromText("[1, 2, 3]")
|
|
56
|
+
*/
|
|
57
|
+
export declare function vecFromText(text: string): SQL;
|
|
58
|
+
/**
|
|
59
|
+
* Converts a vector value/expression to its normalized string representation.
|
|
60
|
+
*
|
|
61
|
+
* TiDB function: `VEC_AS_TEXT(vector)`.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* vecAsText(table.embedding)
|
|
65
|
+
*/
|
|
66
|
+
export declare function vecAsText(vector: VectorInput): SQL<string>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the dimension (number of elements) of a vector.
|
|
69
|
+
*
|
|
70
|
+
* TiDB function: `VEC_DIMS(vector)`.
|
|
71
|
+
*
|
|
72
|
+
* Accepts vector column/expression, `sql.raw(...)`, raw SQL string expression,
|
|
73
|
+
* or `number[]`.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* vecDims(table.embedding)
|
|
77
|
+
* vecDims(sql.raw("CAST('[0.3, 0.5, -0.1]' AS VECTOR)"))
|
|
78
|
+
* vecDims("CAST('[0.3, 0.5, -0.1]' AS VECTOR)")
|
|
79
|
+
*/
|
|
80
|
+
export declare function vecDims(vector: VectorInput): SQL<number>;
|
|
81
|
+
/**
|
|
82
|
+
* Calculates L2 norm (Euclidean norm) of a vector.
|
|
83
|
+
*
|
|
84
|
+
* TiDB function: `VEC_L2_NORM(vector)`.
|
|
85
|
+
*/
|
|
86
|
+
export declare function vecL2Norm(vector: VectorInput): SQL<number>;
|
|
87
|
+
/**
|
|
88
|
+
* Calculates L2 distance (Euclidean distance) between two vectors.
|
|
89
|
+
*
|
|
90
|
+
* TiDB function: `VEC_L2_DISTANCE(vector1, vector2)`.
|
|
91
|
+
*
|
|
92
|
+
* Both vectors must have the same dimensions.
|
|
93
|
+
*/
|
|
94
|
+
export declare function vecL2Distance(left: VectorInput, right: VectorInput): SQL<number>;
|
|
95
|
+
/**
|
|
96
|
+
* Calculates cosine distance between two vectors.
|
|
97
|
+
*
|
|
98
|
+
* TiDB function: `VEC_COSINE_DISTANCE(vector1, vector2)`.
|
|
99
|
+
*
|
|
100
|
+
* Both vectors must have the same dimensions.
|
|
101
|
+
*/
|
|
102
|
+
export declare function vecCosineDistance(left: VectorInput, right: VectorInput): SQL<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Calculates negative inner product distance between two vectors.
|
|
105
|
+
*
|
|
106
|
+
* TiDB function: `VEC_NEGATIVE_INNER_PRODUCT(vector1, vector2)`.
|
|
107
|
+
*
|
|
108
|
+
* Both vectors must have the same dimensions.
|
|
109
|
+
*/
|
|
110
|
+
export declare function vecNegativeInnerProduct(left: VectorInput, right: VectorInput): SQL<number>;
|
|
111
|
+
/**
|
|
112
|
+
* Calculates L1 distance (Manhattan distance) between two vectors.
|
|
113
|
+
*
|
|
114
|
+
* TiDB function: `VEC_L1_DISTANCE(vector1, vector2)`.
|
|
115
|
+
*
|
|
116
|
+
* Both vectors must have the same dimensions.
|
|
117
|
+
*/
|
|
118
|
+
export declare function vecL1Distance(left: VectorInput, right: VectorInput): SQL<number>;
|
|
119
|
+
export {};
|
|
120
|
+
//# sourceMappingURL=VectorTiDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorTiDB.d.ts","sourceRoot":"","sources":["../../src/core/VectorTiDB.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D,KAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAyCF;;;;;;;GAOG;AACH,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC;AAYvD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAsBzB,CAAC;AAEH;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAExD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAEhF"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vectorTiDBType = void 0;
|
|
4
|
+
exports.vecFromText = vecFromText;
|
|
5
|
+
exports.vecAsText = vecAsText;
|
|
6
|
+
exports.vecDims = vecDims;
|
|
7
|
+
exports.vecL2Norm = vecL2Norm;
|
|
8
|
+
exports.vecL2Distance = vecL2Distance;
|
|
9
|
+
exports.vecCosineDistance = vecCosineDistance;
|
|
10
|
+
exports.vecNegativeInnerProduct = vecNegativeInnerProduct;
|
|
11
|
+
exports.vecL1Distance = vecL1Distance;
|
|
12
|
+
const mysql_core_1 = require("drizzle-orm/mysql-core");
|
|
13
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
14
|
+
function validateVectorValue(value) {
|
|
15
|
+
if (!Array.isArray(value)) {
|
|
16
|
+
throw new Error("TiDB vector value must be an array of numbers");
|
|
17
|
+
}
|
|
18
|
+
for (const item of value) {
|
|
19
|
+
if (typeof item !== "number" || !Number.isFinite(item)) {
|
|
20
|
+
throw new Error("TiDB vector contains invalid number");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function parseVectorText(value) {
|
|
25
|
+
const trimmed = value.trim();
|
|
26
|
+
if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
|
|
27
|
+
throw new Error(`Invalid TiDB vector text: ${value}`);
|
|
28
|
+
}
|
|
29
|
+
// TiDB stores vectors as textual representation, e.g. "[0.3,0.5,-0.1]".
|
|
30
|
+
const parsed = JSON.parse(trimmed);
|
|
31
|
+
if (!Array.isArray(parsed)) {
|
|
32
|
+
throw new Error(`Invalid TiDB vector text: ${value}`);
|
|
33
|
+
}
|
|
34
|
+
const result = parsed.map((item) => {
|
|
35
|
+
if (typeof item !== "number" || !Number.isFinite(item)) {
|
|
36
|
+
throw new Error(`Invalid TiDB vector element: ${String(item)}`);
|
|
37
|
+
}
|
|
38
|
+
return item;
|
|
39
|
+
});
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function vectorToText(value) {
|
|
43
|
+
validateVectorValue(value);
|
|
44
|
+
return `[${value.join(",")}]`;
|
|
45
|
+
}
|
|
46
|
+
function vectorExpr(value) {
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
return drizzle_orm_1.sql.raw(`VEC_FROM_TEXT('${vectorToText(value)}')`);
|
|
49
|
+
}
|
|
50
|
+
if (typeof value === "string") {
|
|
51
|
+
return drizzle_orm_1.sql.raw(value);
|
|
52
|
+
}
|
|
53
|
+
return (0, drizzle_orm_1.sql) `${value}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* TiDB `VECTOR` column type (same call shapes as other Drizzle MySQL builders).
|
|
57
|
+
*
|
|
58
|
+
* - `vectorTiDBType('embedding', { dimension: 1536 })` — SQL column name + fixed dimension (`VECTOR(1536)`).
|
|
59
|
+
* - `vectorTiDBType({ dimension: 1536 })` — config only; column name comes from the object key in `mysqlTable`.
|
|
60
|
+
* - `vectorTiDBType('embedding')` or `vectorTiDBType()` — `VECTOR` without a fixed size in DDL.
|
|
61
|
+
*
|
|
62
|
+
* Values are `number[]` in application code; the driver maps to TiDB’s text form.
|
|
63
|
+
*/
|
|
64
|
+
exports.vectorTiDBType = (0, mysql_core_1.customType)({
|
|
65
|
+
dataType(config) {
|
|
66
|
+
const dim = config?.dimension;
|
|
67
|
+
return dim ? `vector(${dim})` : "vector";
|
|
68
|
+
},
|
|
69
|
+
toDriver(value) {
|
|
70
|
+
validateVectorValue(value);
|
|
71
|
+
return `[${value.join(",")}]`;
|
|
72
|
+
},
|
|
73
|
+
fromDriver(value) {
|
|
74
|
+
if (value === null || value === undefined) {
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
if (typeof value !== "string") {
|
|
78
|
+
throw new Error(`Invalid TiDB vector driver value type: ${typeof value}`);
|
|
79
|
+
}
|
|
80
|
+
return parseVectorText(value);
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Converts a text representation of a vector into a TiDB VECTOR expression.
|
|
85
|
+
*
|
|
86
|
+
* TiDB function: `VEC_FROM_TEXT(string)`.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* vecFromText("[1, 2, 3]")
|
|
90
|
+
*/
|
|
91
|
+
function vecFromText(text) {
|
|
92
|
+
return (0, drizzle_orm_1.sql) `VEC_FROM_TEXT('${text}')`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Converts a vector value/expression to its normalized string representation.
|
|
96
|
+
*
|
|
97
|
+
* TiDB function: `VEC_AS_TEXT(vector)`.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* vecAsText(table.embedding)
|
|
101
|
+
*/
|
|
102
|
+
function vecAsText(vector) {
|
|
103
|
+
return (0, drizzle_orm_1.sql) `VEC_AS_TEXT(${vectorExpr(vector)})`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns the dimension (number of elements) of a vector.
|
|
107
|
+
*
|
|
108
|
+
* TiDB function: `VEC_DIMS(vector)`.
|
|
109
|
+
*
|
|
110
|
+
* Accepts vector column/expression, `sql.raw(...)`, raw SQL string expression,
|
|
111
|
+
* or `number[]`.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* vecDims(table.embedding)
|
|
115
|
+
* vecDims(sql.raw("CAST('[0.3, 0.5, -0.1]' AS VECTOR)"))
|
|
116
|
+
* vecDims("CAST('[0.3, 0.5, -0.1]' AS VECTOR)")
|
|
117
|
+
*/
|
|
118
|
+
function vecDims(vector) {
|
|
119
|
+
return (0, drizzle_orm_1.sql) `VEC_DIMS(${vectorExpr(vector)})`;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Calculates L2 norm (Euclidean norm) of a vector.
|
|
123
|
+
*
|
|
124
|
+
* TiDB function: `VEC_L2_NORM(vector)`.
|
|
125
|
+
*/
|
|
126
|
+
function vecL2Norm(vector) {
|
|
127
|
+
return (0, drizzle_orm_1.sql) `VEC_L2_NORM(${vectorExpr(vector)})`;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Calculates L2 distance (Euclidean distance) between two vectors.
|
|
131
|
+
*
|
|
132
|
+
* TiDB function: `VEC_L2_DISTANCE(vector1, vector2)`.
|
|
133
|
+
*
|
|
134
|
+
* Both vectors must have the same dimensions.
|
|
135
|
+
*/
|
|
136
|
+
function vecL2Distance(left, right) {
|
|
137
|
+
return (0, drizzle_orm_1.sql) `VEC_L2_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Calculates cosine distance between two vectors.
|
|
141
|
+
*
|
|
142
|
+
* TiDB function: `VEC_COSINE_DISTANCE(vector1, vector2)`.
|
|
143
|
+
*
|
|
144
|
+
* Both vectors must have the same dimensions.
|
|
145
|
+
*/
|
|
146
|
+
function vecCosineDistance(left, right) {
|
|
147
|
+
return (0, drizzle_orm_1.sql) `VEC_COSINE_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Calculates negative inner product distance between two vectors.
|
|
151
|
+
*
|
|
152
|
+
* TiDB function: `VEC_NEGATIVE_INNER_PRODUCT(vector1, vector2)`.
|
|
153
|
+
*
|
|
154
|
+
* Both vectors must have the same dimensions.
|
|
155
|
+
*/
|
|
156
|
+
function vecNegativeInnerProduct(left, right) {
|
|
157
|
+
return (0, drizzle_orm_1.sql) `VEC_NEGATIVE_INNER_PRODUCT(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Calculates L1 distance (Manhattan distance) between two vectors.
|
|
161
|
+
*
|
|
162
|
+
* TiDB function: `VEC_L1_DISTANCE(vector1, vector2)`.
|
|
163
|
+
*
|
|
164
|
+
* Both vectors must have the same dimensions.
|
|
165
|
+
*/
|
|
166
|
+
function vecL1Distance(left, right) {
|
|
167
|
+
return (0, drizzle_orm_1.sql) `VEC_L1_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=VectorTiDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorTiDB.js","sourceRoot":"","sources":["../../src/core/VectorTiDB.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./ForgeSQLQueryBuilder"), exports);
|
|
|
18
18
|
__exportStar(require("./ForgeSQLCrudOperations"), exports);
|
|
19
19
|
__exportStar(require("./ForgeSQLSelectOperations"), exports);
|
|
20
20
|
__exportStar(require("./SystemTables"), exports);
|
|
21
|
+
__exportStar(require("./VectorTiDB"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,2DAAyC;AACzC,6DAA2C;AAC3C,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,2DAAyC;AACzC,6DAA2C;AAC3C,iDAA+B;AAC/B,+CAA6B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forge-sql-orm",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.26",
|
|
4
4
|
"description": "Drizzle ORM integration for Atlassian @forge/sql. Provides a custom driver, schema migration, two levels of caching (local and global via @forge/kvs), optimistic locking, and query analysis.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"homepage": "https://github.com/forge-sql-orm/forge-sql-orm#readme",
|
|
@@ -27,23 +27,23 @@
|
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@eslint/js": "^9.39.2",
|
|
29
29
|
"@types/luxon": "^3.7.1",
|
|
30
|
-
"@types/node": "^25.
|
|
31
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
32
|
-
"@typescript-eslint/parser": "^8.
|
|
33
|
-
"@vitest/coverage-v8": "^4.
|
|
34
|
-
"@vitest/ui": "^4.
|
|
30
|
+
"@types/node": "^25.5.2",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^8.58.1",
|
|
32
|
+
"@typescript-eslint/parser": "^8.58.1",
|
|
33
|
+
"@vitest/coverage-v8": "^4.1.3",
|
|
34
|
+
"@vitest/ui": "^4.1.3",
|
|
35
35
|
"eslint": "^9.39.2",
|
|
36
36
|
"eslint-config-prettier": "^10.1.8",
|
|
37
37
|
"eslint-plugin-import": "^2.32.0",
|
|
38
38
|
"eslint-plugin-vitest": "^0.5.4",
|
|
39
39
|
"husky": "^9.1.7",
|
|
40
|
-
"knip": "^
|
|
40
|
+
"knip": "^6.3.1",
|
|
41
41
|
"patch-package": "^8.0.1",
|
|
42
42
|
"prettier": "^3.8.1",
|
|
43
43
|
"ts-node": "^10.9.2",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"uuid": "^13.0.0",
|
|
46
|
-
"vitest": "^4.
|
|
46
|
+
"vitest": "^4.1.3"
|
|
47
47
|
},
|
|
48
48
|
"license": "MIT",
|
|
49
49
|
"author": "Vasyl Zakharchenko",
|
|
@@ -71,15 +71,15 @@
|
|
|
71
71
|
"README.md"
|
|
72
72
|
],
|
|
73
73
|
"peerDependencies": {
|
|
74
|
-
"@forge/sql": "^3.0.
|
|
75
|
-
"drizzle-orm": "^0.45.
|
|
74
|
+
"@forge/sql": "^3.0.21",
|
|
75
|
+
"drizzle-orm": "^0.45.2"
|
|
76
76
|
},
|
|
77
77
|
"optionalDependencies": {
|
|
78
78
|
"@forge/kvs": "^1.4.0"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@forge/api": "^7.1.
|
|
82
|
-
"@forge/events": "^2.1.
|
|
81
|
+
"@forge/api": "^7.1.2",
|
|
82
|
+
"@forge/events": "^2.1.2",
|
|
83
83
|
"luxon": "^3.7.2",
|
|
84
84
|
"node-sql-parser": "^5.4.0"
|
|
85
85
|
},
|
|
@@ -1282,6 +1282,32 @@ export interface ForgeSqlOrmOptions {
|
|
|
1282
1282
|
/**
|
|
1283
1283
|
* Creates a custom type for date/time fields with specified format and timestamp validation.
|
|
1284
1284
|
*/
|
|
1285
|
+
function normalizeDateOnlyValue(value: unknown): unknown {
|
|
1286
|
+
if (typeof value !== "string") {
|
|
1287
|
+
return value;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
const trimmedValue = value.trim();
|
|
1291
|
+
|
|
1292
|
+
const dotSeparatedMatch = /^(\d{2})\.(\d{2})\.(\d{4})$/.exec(trimmedValue);
|
|
1293
|
+
if (dotSeparatedMatch) {
|
|
1294
|
+
const [, day, month, year] = dotSeparatedMatch;
|
|
1295
|
+
return `${year}-${month}-${day} 00:00:00.000`;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
const slashSeparatedMatch = /^(\d{2})\/(\d{2})\/(\d{4})$/.exec(trimmedValue);
|
|
1299
|
+
if (slashSeparatedMatch) {
|
|
1300
|
+
const [, day, month, year] = slashSeparatedMatch;
|
|
1301
|
+
return `${year}-${month}-${day} 00:00:00.000`;
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
if (trimmedValue.length === 10) {
|
|
1305
|
+
return `${trimmedValue} 00:00:00.000`;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
return value;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1285
1311
|
function createDateCustomType(dataType: string, format: string, isTimeStamp: boolean) {
|
|
1286
1312
|
return customType<{
|
|
1287
1313
|
data: Date;
|
|
@@ -1295,6 +1321,9 @@ function createDateCustomType(dataType: string, format: string, isTimeStamp: boo
|
|
|
1295
1321
|
return formatDateTime(value, format, isTimeStamp);
|
|
1296
1322
|
},
|
|
1297
1323
|
fromDriver(value: unknown) {
|
|
1324
|
+
if (value === null || value === undefined) {
|
|
1325
|
+
return value as unknown as Date;
|
|
1326
|
+
}
|
|
1298
1327
|
return parseDateTime(value as string, format);
|
|
1299
1328
|
},
|
|
1300
1329
|
});
|
|
@@ -1306,11 +1335,25 @@ function createDateCustomType(dataType: string, format: string, isTimeStamp: boo
|
|
|
1306
1335
|
*
|
|
1307
1336
|
* @type {CustomType}
|
|
1308
1337
|
*/
|
|
1309
|
-
export const forgeDateTimeString =
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1338
|
+
export const forgeDateTimeString = customType<{
|
|
1339
|
+
data: Date;
|
|
1340
|
+
driver: string;
|
|
1341
|
+
config: { format?: string };
|
|
1342
|
+
}>({
|
|
1343
|
+
dataType() {
|
|
1344
|
+
return "datetime";
|
|
1345
|
+
},
|
|
1346
|
+
toDriver(value: Date) {
|
|
1347
|
+
return formatDateTime(value, "yyyy-MM-dd' 'HH:mm:ss.SSS", false);
|
|
1348
|
+
},
|
|
1349
|
+
fromDriver(value: unknown) {
|
|
1350
|
+
if (value === null || value === undefined) {
|
|
1351
|
+
return value as unknown as Date;
|
|
1352
|
+
}
|
|
1353
|
+
const normalizedValue = normalizeDateOnlyValue(value);
|
|
1354
|
+
return parseDateTime(normalizedValue as string, "yyyy-MM-dd' 'HH:mm:ss.SSS");
|
|
1355
|
+
},
|
|
1356
|
+
});
|
|
1314
1357
|
|
|
1315
1358
|
/**
|
|
1316
1359
|
* Custom type for MySQL timestamp fields.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { customType } from "drizzle-orm/mysql-core";
|
|
2
|
+
import { sql, type SQL, type AnyColumn } from "drizzle-orm";
|
|
3
|
+
|
|
4
|
+
type VectorConfig = {
|
|
5
|
+
dimension?: number;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
function validateVectorValue(value: number[]): void {
|
|
9
|
+
if (!Array.isArray(value)) {
|
|
10
|
+
throw new Error("TiDB vector value must be an array of numbers");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
for (const item of value) {
|
|
14
|
+
if (typeof item !== "number" || !Number.isFinite(item)) {
|
|
15
|
+
throw new Error("TiDB vector contains invalid number");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function parseVectorText(value: string): number[] {
|
|
21
|
+
const trimmed = value.trim();
|
|
22
|
+
if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
|
|
23
|
+
throw new Error(`Invalid TiDB vector text: ${value}`);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// TiDB stores vectors as textual representation, e.g. "[0.3,0.5,-0.1]".
|
|
27
|
+
const parsed = JSON.parse(trimmed) as unknown;
|
|
28
|
+
if (!Array.isArray(parsed)) {
|
|
29
|
+
throw new Error(`Invalid TiDB vector text: ${value}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const result = parsed.map((item) => {
|
|
33
|
+
if (typeof item !== "number" || !Number.isFinite(item)) {
|
|
34
|
+
throw new Error(`Invalid TiDB vector element: ${String(item)}`);
|
|
35
|
+
}
|
|
36
|
+
return item;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function vectorToText(value: number[]): string {
|
|
43
|
+
validateVectorValue(value);
|
|
44
|
+
return `[${value.join(",")}]`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Input accepted by TiDB vector SQL helpers.
|
|
49
|
+
*
|
|
50
|
+
* - `number[]`: converted to `VEC_FROM_TEXT('[...]')`
|
|
51
|
+
* - `string`: treated as raw SQL vector expression, for example:
|
|
52
|
+
* `CAST('[0.3, 0.5, -0.1]' AS VECTOR)`
|
|
53
|
+
* - `SQL` / `AnyColumn`: passed through as-is
|
|
54
|
+
*/
|
|
55
|
+
type VectorInput = string | number[] | SQL | AnyColumn;
|
|
56
|
+
|
|
57
|
+
function vectorExpr(value: VectorInput): SQL {
|
|
58
|
+
if (Array.isArray(value)) {
|
|
59
|
+
return sql.raw(`VEC_FROM_TEXT('${vectorToText(value)}')`);
|
|
60
|
+
}
|
|
61
|
+
if (typeof value === "string") {
|
|
62
|
+
return sql.raw(value);
|
|
63
|
+
}
|
|
64
|
+
return sql`${value}`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* TiDB `VECTOR` column type (same call shapes as other Drizzle MySQL builders).
|
|
69
|
+
*
|
|
70
|
+
* - `vectorTiDBType('embedding', { dimension: 1536 })` — SQL column name + fixed dimension (`VECTOR(1536)`).
|
|
71
|
+
* - `vectorTiDBType({ dimension: 1536 })` — config only; column name comes from the object key in `mysqlTable`.
|
|
72
|
+
* - `vectorTiDBType('embedding')` or `vectorTiDBType()` — `VECTOR` without a fixed size in DDL.
|
|
73
|
+
*
|
|
74
|
+
* Values are `number[]` in application code; the driver maps to TiDB’s text form.
|
|
75
|
+
*/
|
|
76
|
+
export const vectorTiDBType = customType<{
|
|
77
|
+
data: number[];
|
|
78
|
+
driverData: string;
|
|
79
|
+
config: VectorConfig;
|
|
80
|
+
}>({
|
|
81
|
+
dataType(config) {
|
|
82
|
+
const dim = config?.dimension;
|
|
83
|
+
return dim ? `vector(${dim})` : "vector";
|
|
84
|
+
},
|
|
85
|
+
toDriver(value: number[]) {
|
|
86
|
+
validateVectorValue(value);
|
|
87
|
+
return `[${value.join(",")}]`;
|
|
88
|
+
},
|
|
89
|
+
fromDriver(value: unknown) {
|
|
90
|
+
if (value === null || value === undefined) {
|
|
91
|
+
return value as unknown as number[];
|
|
92
|
+
}
|
|
93
|
+
if (typeof value !== "string") {
|
|
94
|
+
throw new Error(`Invalid TiDB vector driver value type: ${typeof value}`);
|
|
95
|
+
}
|
|
96
|
+
return parseVectorText(value);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Converts a text representation of a vector into a TiDB VECTOR expression.
|
|
102
|
+
*
|
|
103
|
+
* TiDB function: `VEC_FROM_TEXT(string)`.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* vecFromText("[1, 2, 3]")
|
|
107
|
+
*/
|
|
108
|
+
export function vecFromText(text: string): SQL {
|
|
109
|
+
return sql`VEC_FROM_TEXT('${text}')`;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Converts a vector value/expression to its normalized string representation.
|
|
114
|
+
*
|
|
115
|
+
* TiDB function: `VEC_AS_TEXT(vector)`.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* vecAsText(table.embedding)
|
|
119
|
+
*/
|
|
120
|
+
export function vecAsText(vector: VectorInput): SQL<string> {
|
|
121
|
+
return sql<string>`VEC_AS_TEXT(${vectorExpr(vector)})`;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Returns the dimension (number of elements) of a vector.
|
|
126
|
+
*
|
|
127
|
+
* TiDB function: `VEC_DIMS(vector)`.
|
|
128
|
+
*
|
|
129
|
+
* Accepts vector column/expression, `sql.raw(...)`, raw SQL string expression,
|
|
130
|
+
* or `number[]`.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* vecDims(table.embedding)
|
|
134
|
+
* vecDims(sql.raw("CAST('[0.3, 0.5, -0.1]' AS VECTOR)"))
|
|
135
|
+
* vecDims("CAST('[0.3, 0.5, -0.1]' AS VECTOR)")
|
|
136
|
+
*/
|
|
137
|
+
export function vecDims(vector: VectorInput): SQL<number> {
|
|
138
|
+
return sql<number>`VEC_DIMS(${vectorExpr(vector)})`;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Calculates L2 norm (Euclidean norm) of a vector.
|
|
143
|
+
*
|
|
144
|
+
* TiDB function: `VEC_L2_NORM(vector)`.
|
|
145
|
+
*/
|
|
146
|
+
export function vecL2Norm(vector: VectorInput): SQL<number> {
|
|
147
|
+
return sql`VEC_L2_NORM(${vectorExpr(vector)})`;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Calculates L2 distance (Euclidean distance) between two vectors.
|
|
152
|
+
*
|
|
153
|
+
* TiDB function: `VEC_L2_DISTANCE(vector1, vector2)`.
|
|
154
|
+
*
|
|
155
|
+
* Both vectors must have the same dimensions.
|
|
156
|
+
*/
|
|
157
|
+
export function vecL2Distance(left: VectorInput, right: VectorInput): SQL<number> {
|
|
158
|
+
return sql<number>`VEC_L2_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Calculates cosine distance between two vectors.
|
|
163
|
+
*
|
|
164
|
+
* TiDB function: `VEC_COSINE_DISTANCE(vector1, vector2)`.
|
|
165
|
+
*
|
|
166
|
+
* Both vectors must have the same dimensions.
|
|
167
|
+
*/
|
|
168
|
+
export function vecCosineDistance(left: VectorInput, right: VectorInput): SQL<number> {
|
|
169
|
+
return sql<number>`VEC_COSINE_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Calculates negative inner product distance between two vectors.
|
|
174
|
+
*
|
|
175
|
+
* TiDB function: `VEC_NEGATIVE_INNER_PRODUCT(vector1, vector2)`.
|
|
176
|
+
*
|
|
177
|
+
* Both vectors must have the same dimensions.
|
|
178
|
+
*/
|
|
179
|
+
export function vecNegativeInnerProduct(left: VectorInput, right: VectorInput): SQL<number> {
|
|
180
|
+
return sql<number>`VEC_NEGATIVE_INNER_PRODUCT(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Calculates L1 distance (Manhattan distance) between two vectors.
|
|
185
|
+
*
|
|
186
|
+
* TiDB function: `VEC_L1_DISTANCE(vector1, vector2)`.
|
|
187
|
+
*
|
|
188
|
+
* Both vectors must have the same dimensions.
|
|
189
|
+
*/
|
|
190
|
+
export function vecL1Distance(left: VectorInput, right: VectorInput): SQL<number> {
|
|
191
|
+
return sql<number>`VEC_L1_DISTANCE(${vectorExpr(left)}, ${vectorExpr(right)})`;
|
|
192
|
+
}
|
package/src/core/index.ts
CHANGED