@nicia-ai/typegraph 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/ast-BVyihVbP.d.cts +564 -0
- package/dist/ast-BVyihVbP.d.ts +564 -0
- package/dist/backend/drizzle/index.cjs +41 -0
- package/dist/backend/drizzle/index.cjs.map +1 -0
- package/dist/backend/drizzle/index.d.cts +12 -0
- package/dist/backend/drizzle/index.d.ts +12 -0
- package/dist/backend/drizzle/index.js +12 -0
- package/dist/backend/drizzle/index.js.map +1 -0
- package/dist/backend/drizzle/postgres.cjs +27 -0
- package/dist/backend/drizzle/postgres.cjs.map +1 -0
- package/dist/backend/drizzle/postgres.d.cts +37 -0
- package/dist/backend/drizzle/postgres.d.ts +37 -0
- package/dist/backend/drizzle/postgres.js +10 -0
- package/dist/backend/drizzle/postgres.js.map +1 -0
- package/dist/backend/drizzle/schema/postgres.cjs +40 -0
- package/dist/backend/drizzle/schema/postgres.cjs.map +1 -0
- package/dist/backend/drizzle/schema/postgres.d.cts +2419 -0
- package/dist/backend/drizzle/schema/postgres.d.ts +2419 -0
- package/dist/backend/drizzle/schema/postgres.js +7 -0
- package/dist/backend/drizzle/schema/postgres.js.map +1 -0
- package/dist/backend/drizzle/schema/sqlite.cjs +40 -0
- package/dist/backend/drizzle/schema/sqlite.cjs.map +1 -0
- package/dist/backend/drizzle/schema/sqlite.d.cts +2647 -0
- package/dist/backend/drizzle/schema/sqlite.d.ts +2647 -0
- package/dist/backend/drizzle/schema/sqlite.js +7 -0
- package/dist/backend/drizzle/schema/sqlite.js.map +1 -0
- package/dist/backend/drizzle/sqlite.cjs +27 -0
- package/dist/backend/drizzle/sqlite.cjs.map +1 -0
- package/dist/backend/drizzle/sqlite.d.cts +36 -0
- package/dist/backend/drizzle/sqlite.d.ts +36 -0
- package/dist/backend/drizzle/sqlite.js +10 -0
- package/dist/backend/drizzle/sqlite.js.map +1 -0
- package/dist/backend/postgres/index.cjs +53 -0
- package/dist/backend/postgres/index.cjs.map +1 -0
- package/dist/backend/postgres/index.d.cts +12 -0
- package/dist/backend/postgres/index.d.ts +12 -0
- package/dist/backend/postgres/index.js +12 -0
- package/dist/backend/postgres/index.js.map +1 -0
- package/dist/backend/sqlite/index.cjs +117 -0
- package/dist/backend/sqlite/index.cjs.map +1 -0
- package/dist/backend/sqlite/index.d.cts +71 -0
- package/dist/backend/sqlite/index.d.ts +71 -0
- package/dist/backend/sqlite/index.js +78 -0
- package/dist/backend/sqlite/index.js.map +1 -0
- package/dist/chunk-2QHQ2C4P.js +146 -0
- package/dist/chunk-2QHQ2C4P.js.map +1 -0
- package/dist/chunk-3A5TKOEJ.js +306 -0
- package/dist/chunk-3A5TKOEJ.js.map +1 -0
- package/dist/chunk-4PIEL2VO.js +162 -0
- package/dist/chunk-4PIEL2VO.js.map +1 -0
- package/dist/chunk-536PH5FT.js +342 -0
- package/dist/chunk-536PH5FT.js.map +1 -0
- package/dist/chunk-DBFCKELK.cjs +156 -0
- package/dist/chunk-DBFCKELK.cjs.map +1 -0
- package/dist/chunk-DDM2FZRJ.cjs +1143 -0
- package/dist/chunk-DDM2FZRJ.cjs.map +1 -0
- package/dist/chunk-DGUM43GV.js +10 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/chunk-F32HCHYA.cjs +680 -0
- package/dist/chunk-F32HCHYA.cjs.map +1 -0
- package/dist/chunk-IIAT36MI.js +353 -0
- package/dist/chunk-IIAT36MI.js.map +1 -0
- package/dist/chunk-JDAET5LO.js +236 -0
- package/dist/chunk-JDAET5LO.js.map +1 -0
- package/dist/chunk-JEQ2X3Z6.cjs +12 -0
- package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
- package/dist/chunk-JKTO7TW3.js +299 -0
- package/dist/chunk-JKTO7TW3.js.map +1 -0
- package/dist/chunk-K7SQ3SWP.js +497 -0
- package/dist/chunk-K7SQ3SWP.js.map +1 -0
- package/dist/chunk-L642L24T.js +142 -0
- package/dist/chunk-L642L24T.js.map +1 -0
- package/dist/chunk-MFVCSNIY.cjs +308 -0
- package/dist/chunk-MFVCSNIY.cjs.map +1 -0
- package/dist/chunk-MNO33ASC.cjs +240 -0
- package/dist/chunk-MNO33ASC.cjs.map +1 -0
- package/dist/chunk-N4AOJ3VF.cjs +154 -0
- package/dist/chunk-N4AOJ3VF.cjs.map +1 -0
- package/dist/chunk-P5CNM325.cjs +508 -0
- package/dist/chunk-P5CNM325.cjs.map +1 -0
- package/dist/chunk-RYT4H46I.js +646 -0
- package/dist/chunk-RYT4H46I.js.map +1 -0
- package/dist/chunk-SV5H3XM5.cjs +321 -0
- package/dist/chunk-SV5H3XM5.cjs.map +1 -0
- package/dist/chunk-TXHKFLWX.cjs +344 -0
- package/dist/chunk-TXHKFLWX.cjs.map +1 -0
- package/dist/chunk-UJAGXJDG.cjs +170 -0
- package/dist/chunk-UJAGXJDG.cjs.map +1 -0
- package/dist/chunk-VXRVGFCI.js +1128 -0
- package/dist/chunk-VXRVGFCI.js.map +1 -0
- package/dist/chunk-YM5AL65Y.cjs +357 -0
- package/dist/chunk-YM5AL65Y.cjs.map +1 -0
- package/dist/index.cjs +8334 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1365 -0
- package/dist/index.d.ts +1365 -0
- package/dist/index.js +8105 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes/index.cjs +67 -0
- package/dist/indexes/index.cjs.map +1 -0
- package/dist/indexes/index.d.cts +62 -0
- package/dist/indexes/index.d.ts +62 -0
- package/dist/indexes/index.js +6 -0
- package/dist/indexes/index.js.map +1 -0
- package/dist/interchange/index.cjs +612 -0
- package/dist/interchange/index.cjs.map +1 -0
- package/dist/interchange/index.d.cts +288 -0
- package/dist/interchange/index.d.ts +288 -0
- package/dist/interchange/index.js +598 -0
- package/dist/interchange/index.js.map +1 -0
- package/dist/profiler/index.cjs +793 -0
- package/dist/profiler/index.cjs.map +1 -0
- package/dist/profiler/index.d.cts +283 -0
- package/dist/profiler/index.d.ts +283 -0
- package/dist/profiler/index.js +785 -0
- package/dist/profiler/index.js.map +1 -0
- package/dist/store-60Lcfi0w.d.ts +2263 -0
- package/dist/store-Bifii8MZ.d.cts +2263 -0
- package/dist/test-helpers-BjyRYJZX.d.ts +22 -0
- package/dist/test-helpers-NoQXhleQ.d.cts +22 -0
- package/dist/types-BRzHlhKC.d.cts +14 -0
- package/dist/types-BRzHlhKC.d.ts +14 -0
- package/dist/types-BrSfFSpW.d.cts +158 -0
- package/dist/types-CX4cLd7M.d.ts +152 -0
- package/dist/types-CjZ7g_7v.d.ts +442 -0
- package/dist/types-DDOSfrih.d.cts +442 -0
- package/dist/types-D_3mEv2y.d.ts +158 -0
- package/dist/types-a5rAxC92.d.cts +152 -0
- package/package.json +201 -0
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkYM5AL65Y_cjs = require('./chunk-YM5AL65Y.cjs');
|
|
4
|
+
var drizzleOrm = require('drizzle-orm');
|
|
5
|
+
|
|
6
|
+
// src/backend/types.ts
|
|
7
|
+
var SQLITE_CAPABILITIES = {
|
|
8
|
+
jsonb: false,
|
|
9
|
+
// SQLite uses TEXT with json functions
|
|
10
|
+
partialIndexes: true,
|
|
11
|
+
// SQLite supports WHERE in CREATE INDEX
|
|
12
|
+
ginIndexes: false,
|
|
13
|
+
// SQLite doesn't have GIN
|
|
14
|
+
cte: true,
|
|
15
|
+
// SQLite supports WITH
|
|
16
|
+
returning: true,
|
|
17
|
+
// SQLite 3.35+ supports RETURNING
|
|
18
|
+
transactions: true
|
|
19
|
+
// SQLite supports transactions
|
|
20
|
+
};
|
|
21
|
+
var POSTGRES_CAPABILITIES = {
|
|
22
|
+
jsonb: true,
|
|
23
|
+
// PostgreSQL has native JSONB
|
|
24
|
+
partialIndexes: true,
|
|
25
|
+
ginIndexes: true,
|
|
26
|
+
cte: true,
|
|
27
|
+
returning: true,
|
|
28
|
+
transactions: true
|
|
29
|
+
// PostgreSQL supports transactions
|
|
30
|
+
};
|
|
31
|
+
var D1_CAPABILITIES = {
|
|
32
|
+
jsonb: false,
|
|
33
|
+
// D1 uses TEXT with json functions
|
|
34
|
+
partialIndexes: true,
|
|
35
|
+
ginIndexes: false,
|
|
36
|
+
cte: true,
|
|
37
|
+
returning: true,
|
|
38
|
+
transactions: false
|
|
39
|
+
// D1 does NOT support atomic transactions
|
|
40
|
+
};
|
|
41
|
+
function sqlNull(value) {
|
|
42
|
+
return value ?? drizzleOrm.sql.raw("NULL");
|
|
43
|
+
}
|
|
44
|
+
function buildInsertNode(tables, params, timestamp) {
|
|
45
|
+
const { nodes } = tables;
|
|
46
|
+
const propsJson = JSON.stringify(params.props);
|
|
47
|
+
const cols = drizzleOrm.sql.raw(`"${nodes.graphId.name}", "${nodes.kind.name}", "${nodes.id.name}", "${nodes.props.name}", "${nodes.version.name}", "${nodes.validFrom.name}", "${nodes.validTo.name}", "${nodes.createdAt.name}", "${nodes.updatedAt.name}"`);
|
|
48
|
+
return drizzleOrm.sql`
|
|
49
|
+
INSERT INTO ${nodes} (${cols})
|
|
50
|
+
VALUES (
|
|
51
|
+
${params.graphId}, ${params.kind}, ${params.id}, ${propsJson},
|
|
52
|
+
1, ${sqlNull(params.validFrom)}, ${sqlNull(params.validTo)},
|
|
53
|
+
${timestamp}, ${timestamp}
|
|
54
|
+
)
|
|
55
|
+
RETURNING *
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
function buildGetNode(tables, graphId, kind, id) {
|
|
59
|
+
const { nodes } = tables;
|
|
60
|
+
return drizzleOrm.sql`
|
|
61
|
+
SELECT * FROM ${nodes}
|
|
62
|
+
WHERE ${nodes.graphId} = ${graphId}
|
|
63
|
+
AND ${nodes.kind} = ${kind}
|
|
64
|
+
AND ${nodes.id} = ${id}
|
|
65
|
+
`;
|
|
66
|
+
}
|
|
67
|
+
function buildUpdateNode(tables, params, timestamp) {
|
|
68
|
+
const { nodes } = tables;
|
|
69
|
+
const propsJson = JSON.stringify(params.props);
|
|
70
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
71
|
+
const setParts = [
|
|
72
|
+
drizzleOrm.sql`${col(nodes.props)} = ${propsJson}`,
|
|
73
|
+
drizzleOrm.sql`${col(nodes.updatedAt)} = ${timestamp}`
|
|
74
|
+
];
|
|
75
|
+
if (params.incrementVersion) {
|
|
76
|
+
setParts.push(drizzleOrm.sql`${col(nodes.version)} = ${col(nodes.version)} + 1`);
|
|
77
|
+
}
|
|
78
|
+
if (params.validTo !== void 0) {
|
|
79
|
+
setParts.push(drizzleOrm.sql`${col(nodes.validTo)} = ${params.validTo}`);
|
|
80
|
+
}
|
|
81
|
+
if (params.clearDeleted) {
|
|
82
|
+
setParts.push(drizzleOrm.sql`${col(nodes.deletedAt)} = NULL`);
|
|
83
|
+
}
|
|
84
|
+
const setClause = drizzleOrm.sql.join(setParts, drizzleOrm.sql`, `);
|
|
85
|
+
if (params.clearDeleted) {
|
|
86
|
+
return drizzleOrm.sql`
|
|
87
|
+
UPDATE ${nodes}
|
|
88
|
+
SET ${setClause}
|
|
89
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
90
|
+
AND ${nodes.kind} = ${params.kind}
|
|
91
|
+
AND ${nodes.id} = ${params.id}
|
|
92
|
+
RETURNING *
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
return drizzleOrm.sql`
|
|
96
|
+
UPDATE ${nodes}
|
|
97
|
+
SET ${setClause}
|
|
98
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
99
|
+
AND ${nodes.kind} = ${params.kind}
|
|
100
|
+
AND ${nodes.id} = ${params.id}
|
|
101
|
+
AND ${nodes.deletedAt} IS NULL
|
|
102
|
+
RETURNING *
|
|
103
|
+
`;
|
|
104
|
+
}
|
|
105
|
+
function buildDeleteNode(tables, params, timestamp) {
|
|
106
|
+
const { nodes } = tables;
|
|
107
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
108
|
+
return drizzleOrm.sql`
|
|
109
|
+
UPDATE ${nodes}
|
|
110
|
+
SET ${col(nodes.deletedAt)} = ${timestamp}
|
|
111
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
112
|
+
AND ${nodes.kind} = ${params.kind}
|
|
113
|
+
AND ${nodes.id} = ${params.id}
|
|
114
|
+
AND ${nodes.deletedAt} IS NULL
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
function buildHardDeleteNode(tables, params) {
|
|
118
|
+
const { nodes } = tables;
|
|
119
|
+
return drizzleOrm.sql`
|
|
120
|
+
DELETE FROM ${nodes}
|
|
121
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
122
|
+
AND ${nodes.kind} = ${params.kind}
|
|
123
|
+
AND ${nodes.id} = ${params.id}
|
|
124
|
+
`;
|
|
125
|
+
}
|
|
126
|
+
function buildInsertEdge(tables, params, timestamp) {
|
|
127
|
+
const { edges } = tables;
|
|
128
|
+
const propsJson = JSON.stringify(params.props);
|
|
129
|
+
const cols = drizzleOrm.sql.raw(`"${edges.graphId.name}", "${edges.id.name}", "${edges.kind.name}", "${edges.fromKind.name}", "${edges.fromId.name}", "${edges.toKind.name}", "${edges.toId.name}", "${edges.props.name}", "${edges.validFrom.name}", "${edges.validTo.name}", "${edges.createdAt.name}", "${edges.updatedAt.name}"`);
|
|
130
|
+
return drizzleOrm.sql`
|
|
131
|
+
INSERT INTO ${edges} (${cols})
|
|
132
|
+
VALUES (
|
|
133
|
+
${params.graphId}, ${params.id}, ${params.kind},
|
|
134
|
+
${params.fromKind}, ${params.fromId}, ${params.toKind}, ${params.toId},
|
|
135
|
+
${propsJson}, ${sqlNull(params.validFrom)}, ${sqlNull(params.validTo)},
|
|
136
|
+
${timestamp}, ${timestamp}
|
|
137
|
+
)
|
|
138
|
+
RETURNING *
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
function buildGetEdge(tables, graphId, id) {
|
|
142
|
+
const { edges } = tables;
|
|
143
|
+
return drizzleOrm.sql`
|
|
144
|
+
SELECT * FROM ${edges}
|
|
145
|
+
WHERE ${edges.graphId} = ${graphId}
|
|
146
|
+
AND ${edges.id} = ${id}
|
|
147
|
+
`;
|
|
148
|
+
}
|
|
149
|
+
function buildUpdateEdge(tables, params, timestamp) {
|
|
150
|
+
const { edges } = tables;
|
|
151
|
+
const propsJson = JSON.stringify(params.props);
|
|
152
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
153
|
+
if (params.validTo !== void 0) {
|
|
154
|
+
return drizzleOrm.sql`
|
|
155
|
+
UPDATE ${edges}
|
|
156
|
+
SET ${col(edges.props)} = ${propsJson},
|
|
157
|
+
${col(edges.validTo)} = ${params.validTo},
|
|
158
|
+
${col(edges.updatedAt)} = ${timestamp}
|
|
159
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
160
|
+
AND ${edges.id} = ${params.id}
|
|
161
|
+
AND ${edges.deletedAt} IS NULL
|
|
162
|
+
RETURNING *
|
|
163
|
+
`;
|
|
164
|
+
}
|
|
165
|
+
return drizzleOrm.sql`
|
|
166
|
+
UPDATE ${edges}
|
|
167
|
+
SET ${col(edges.props)} = ${propsJson},
|
|
168
|
+
${col(edges.updatedAt)} = ${timestamp}
|
|
169
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
170
|
+
AND ${edges.id} = ${params.id}
|
|
171
|
+
AND ${edges.deletedAt} IS NULL
|
|
172
|
+
RETURNING *
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
function buildDeleteEdge(tables, params, timestamp) {
|
|
176
|
+
const { edges } = tables;
|
|
177
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
178
|
+
return drizzleOrm.sql`
|
|
179
|
+
UPDATE ${edges}
|
|
180
|
+
SET ${col(edges.deletedAt)} = ${timestamp}
|
|
181
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
182
|
+
AND ${edges.id} = ${params.id}
|
|
183
|
+
AND ${edges.deletedAt} IS NULL
|
|
184
|
+
`;
|
|
185
|
+
}
|
|
186
|
+
function buildHardDeleteEdge(tables, params) {
|
|
187
|
+
const { edges } = tables;
|
|
188
|
+
return drizzleOrm.sql`
|
|
189
|
+
DELETE FROM ${edges}
|
|
190
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
191
|
+
AND ${edges.id} = ${params.id}
|
|
192
|
+
`;
|
|
193
|
+
}
|
|
194
|
+
function buildInsertUniqueSqlite(tables, params) {
|
|
195
|
+
const { uniques } = tables;
|
|
196
|
+
const cols = drizzleOrm.sql.raw(`"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`);
|
|
197
|
+
const conflictCols = drizzleOrm.sql.raw(`"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`);
|
|
198
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
199
|
+
return drizzleOrm.sql`
|
|
200
|
+
INSERT INTO ${uniques} (${cols})
|
|
201
|
+
VALUES (
|
|
202
|
+
${params.graphId}, ${params.nodeKind}, ${params.constraintName},
|
|
203
|
+
${params.key}, ${params.nodeId}, ${params.concreteKind}, ${drizzleOrm.sql.raw("NULL")}
|
|
204
|
+
)
|
|
205
|
+
ON CONFLICT (${conflictCols})
|
|
206
|
+
DO UPDATE SET
|
|
207
|
+
${col(uniques.nodeId)} = CASE
|
|
208
|
+
WHEN ${col(uniques.nodeId)} = ${params.nodeId} THEN ${params.nodeId}
|
|
209
|
+
WHEN ${col(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
|
|
210
|
+
ELSE ${col(uniques.nodeId)}
|
|
211
|
+
END,
|
|
212
|
+
${col(uniques.concreteKind)} = CASE
|
|
213
|
+
WHEN ${col(uniques.nodeId)} = ${params.nodeId} THEN ${params.concreteKind}
|
|
214
|
+
WHEN ${col(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
|
|
215
|
+
ELSE ${col(uniques.concreteKind)}
|
|
216
|
+
END,
|
|
217
|
+
${col(uniques.deletedAt)} = CASE
|
|
218
|
+
WHEN ${col(uniques.nodeId)} = ${params.nodeId} THEN NULL
|
|
219
|
+
WHEN ${col(uniques.deletedAt)} IS NOT NULL THEN NULL
|
|
220
|
+
ELSE ${col(uniques.deletedAt)}
|
|
221
|
+
END
|
|
222
|
+
RETURNING ${col(uniques.nodeId)} as node_id
|
|
223
|
+
`;
|
|
224
|
+
}
|
|
225
|
+
function buildInsertUniquePostgres(tables, params) {
|
|
226
|
+
const { uniques } = tables;
|
|
227
|
+
const cols = drizzleOrm.sql.raw(`"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`);
|
|
228
|
+
const conflictCols = drizzleOrm.sql.raw(`"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`);
|
|
229
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
230
|
+
const tableName = drizzleOrm.getTableName(uniques);
|
|
231
|
+
const existingCol = (c) => drizzleOrm.sql.raw(`"${tableName}"."${c.name}"`);
|
|
232
|
+
return drizzleOrm.sql`
|
|
233
|
+
INSERT INTO ${uniques} (${cols})
|
|
234
|
+
VALUES (
|
|
235
|
+
${params.graphId}, ${params.nodeKind}, ${params.constraintName},
|
|
236
|
+
${params.key}, ${params.nodeId}, ${params.concreteKind}, ${drizzleOrm.sql.raw("NULL")}
|
|
237
|
+
)
|
|
238
|
+
ON CONFLICT (${conflictCols})
|
|
239
|
+
DO UPDATE SET
|
|
240
|
+
${col(uniques.nodeId)} = CASE
|
|
241
|
+
WHEN ${existingCol(uniques.nodeId)} = ${params.nodeId} THEN ${params.nodeId}
|
|
242
|
+
WHEN ${existingCol(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
|
|
243
|
+
ELSE ${existingCol(uniques.nodeId)}
|
|
244
|
+
END,
|
|
245
|
+
${col(uniques.concreteKind)} = CASE
|
|
246
|
+
WHEN ${existingCol(uniques.nodeId)} = ${params.nodeId} THEN ${params.concreteKind}
|
|
247
|
+
WHEN ${existingCol(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
|
|
248
|
+
ELSE ${existingCol(uniques.concreteKind)}
|
|
249
|
+
END,
|
|
250
|
+
${col(uniques.deletedAt)} = CASE
|
|
251
|
+
WHEN ${existingCol(uniques.nodeId)} = ${params.nodeId} THEN NULL
|
|
252
|
+
WHEN ${existingCol(uniques.deletedAt)} IS NOT NULL THEN NULL
|
|
253
|
+
ELSE ${existingCol(uniques.deletedAt)}
|
|
254
|
+
END
|
|
255
|
+
RETURNING ${col(uniques.nodeId)} as node_id
|
|
256
|
+
`;
|
|
257
|
+
}
|
|
258
|
+
function buildInsertUnique(tables, dialect, params) {
|
|
259
|
+
if (dialect === "sqlite") {
|
|
260
|
+
return buildInsertUniqueSqlite(tables, params);
|
|
261
|
+
}
|
|
262
|
+
return buildInsertUniquePostgres(tables, params);
|
|
263
|
+
}
|
|
264
|
+
function buildDeleteUnique(tables, params, timestamp) {
|
|
265
|
+
const { uniques } = tables;
|
|
266
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
267
|
+
return drizzleOrm.sql`
|
|
268
|
+
UPDATE ${uniques}
|
|
269
|
+
SET ${col(uniques.deletedAt)} = ${timestamp}
|
|
270
|
+
WHERE ${uniques.graphId} = ${params.graphId}
|
|
271
|
+
AND ${uniques.nodeKind} = ${params.nodeKind}
|
|
272
|
+
AND ${uniques.constraintName} = ${params.constraintName}
|
|
273
|
+
AND ${uniques.key} = ${params.key}
|
|
274
|
+
AND ${uniques.deletedAt} IS NULL
|
|
275
|
+
`;
|
|
276
|
+
}
|
|
277
|
+
function buildHardDeleteUniquesByNode(tables, graphId, nodeId) {
|
|
278
|
+
const { uniques } = tables;
|
|
279
|
+
return drizzleOrm.sql`
|
|
280
|
+
DELETE FROM ${uniques}
|
|
281
|
+
WHERE ${uniques.graphId} = ${graphId}
|
|
282
|
+
AND ${uniques.nodeId} = ${nodeId}
|
|
283
|
+
`;
|
|
284
|
+
}
|
|
285
|
+
function buildHardDeleteEmbeddingsByNode(tables, graphId, nodeKind, nodeId) {
|
|
286
|
+
const { embeddings } = tables;
|
|
287
|
+
return drizzleOrm.sql`
|
|
288
|
+
DELETE FROM ${embeddings}
|
|
289
|
+
WHERE ${embeddings.graphId} = ${graphId}
|
|
290
|
+
AND ${embeddings.nodeKind} = ${nodeKind}
|
|
291
|
+
AND ${embeddings.nodeId} = ${nodeId}
|
|
292
|
+
`;
|
|
293
|
+
}
|
|
294
|
+
function buildCheckUnique(tables, params) {
|
|
295
|
+
const { uniques } = tables;
|
|
296
|
+
return drizzleOrm.sql`
|
|
297
|
+
SELECT * FROM ${uniques}
|
|
298
|
+
WHERE ${uniques.graphId} = ${params.graphId}
|
|
299
|
+
AND ${uniques.nodeKind} = ${params.nodeKind}
|
|
300
|
+
AND ${uniques.constraintName} = ${params.constraintName}
|
|
301
|
+
AND ${uniques.key} = ${params.key}
|
|
302
|
+
AND ${uniques.deletedAt} IS NULL
|
|
303
|
+
`;
|
|
304
|
+
}
|
|
305
|
+
function buildCountEdgesFrom(tables, params) {
|
|
306
|
+
const { edges } = tables;
|
|
307
|
+
if (params.activeOnly) {
|
|
308
|
+
return drizzleOrm.sql`
|
|
309
|
+
SELECT COUNT(*) as count FROM ${edges}
|
|
310
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
311
|
+
AND ${edges.kind} = ${params.edgeKind}
|
|
312
|
+
AND ${edges.fromKind} = ${params.fromKind}
|
|
313
|
+
AND ${edges.fromId} = ${params.fromId}
|
|
314
|
+
AND ${edges.deletedAt} IS NULL
|
|
315
|
+
AND ${edges.validTo} IS NULL
|
|
316
|
+
`;
|
|
317
|
+
}
|
|
318
|
+
return drizzleOrm.sql`
|
|
319
|
+
SELECT COUNT(*) as count FROM ${edges}
|
|
320
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
321
|
+
AND ${edges.kind} = ${params.edgeKind}
|
|
322
|
+
AND ${edges.fromKind} = ${params.fromKind}
|
|
323
|
+
AND ${edges.fromId} = ${params.fromId}
|
|
324
|
+
AND ${edges.deletedAt} IS NULL
|
|
325
|
+
`;
|
|
326
|
+
}
|
|
327
|
+
function buildEdgeExistsBetween(tables, params) {
|
|
328
|
+
const { edges } = tables;
|
|
329
|
+
return drizzleOrm.sql`
|
|
330
|
+
SELECT 1 FROM ${edges}
|
|
331
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
332
|
+
AND ${edges.kind} = ${params.edgeKind}
|
|
333
|
+
AND ${edges.fromKind} = ${params.fromKind}
|
|
334
|
+
AND ${edges.fromId} = ${params.fromId}
|
|
335
|
+
AND ${edges.toKind} = ${params.toKind}
|
|
336
|
+
AND ${edges.toId} = ${params.toId}
|
|
337
|
+
AND ${edges.deletedAt} IS NULL
|
|
338
|
+
LIMIT 1
|
|
339
|
+
`;
|
|
340
|
+
}
|
|
341
|
+
function buildFindEdgesConnectedTo(tables, params) {
|
|
342
|
+
const { edges } = tables;
|
|
343
|
+
return drizzleOrm.sql`
|
|
344
|
+
SELECT * FROM ${edges}
|
|
345
|
+
WHERE ${edges.graphId} = ${params.graphId}
|
|
346
|
+
AND ${edges.deletedAt} IS NULL
|
|
347
|
+
AND (
|
|
348
|
+
(${edges.fromKind} = ${params.nodeKind} AND ${edges.fromId} = ${params.nodeId})
|
|
349
|
+
OR
|
|
350
|
+
(${edges.toKind} = ${params.nodeKind} AND ${edges.toId} = ${params.nodeId})
|
|
351
|
+
)
|
|
352
|
+
`;
|
|
353
|
+
}
|
|
354
|
+
function buildFindNodesByKind(tables, params) {
|
|
355
|
+
const { nodes } = tables;
|
|
356
|
+
const excludeDeleted = params.excludeDeleted ?? true;
|
|
357
|
+
const baseCondition = excludeDeleted ? drizzleOrm.sql`${nodes.graphId} = ${params.graphId} AND ${nodes.kind} = ${params.kind} AND ${nodes.deletedAt} IS NULL` : drizzleOrm.sql`${nodes.graphId} = ${params.graphId} AND ${nodes.kind} = ${params.kind}`;
|
|
358
|
+
if (params.limit !== void 0 && params.offset !== void 0) {
|
|
359
|
+
return drizzleOrm.sql`
|
|
360
|
+
SELECT * FROM ${nodes}
|
|
361
|
+
WHERE ${baseCondition}
|
|
362
|
+
ORDER BY ${nodes.createdAt} DESC
|
|
363
|
+
LIMIT ${params.limit} OFFSET ${params.offset}
|
|
364
|
+
`;
|
|
365
|
+
}
|
|
366
|
+
if (params.limit !== void 0) {
|
|
367
|
+
return drizzleOrm.sql`
|
|
368
|
+
SELECT * FROM ${nodes}
|
|
369
|
+
WHERE ${baseCondition}
|
|
370
|
+
ORDER BY ${nodes.createdAt} DESC
|
|
371
|
+
LIMIT ${params.limit}
|
|
372
|
+
`;
|
|
373
|
+
}
|
|
374
|
+
return drizzleOrm.sql`
|
|
375
|
+
SELECT * FROM ${nodes}
|
|
376
|
+
WHERE ${baseCondition}
|
|
377
|
+
ORDER BY ${nodes.createdAt} DESC
|
|
378
|
+
`;
|
|
379
|
+
}
|
|
380
|
+
function buildCountNodesByKind(tables, params) {
|
|
381
|
+
const { nodes } = tables;
|
|
382
|
+
const excludeDeleted = params.excludeDeleted ?? true;
|
|
383
|
+
if (excludeDeleted) {
|
|
384
|
+
return drizzleOrm.sql`
|
|
385
|
+
SELECT COUNT(*) as count FROM ${nodes}
|
|
386
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
387
|
+
AND ${nodes.kind} = ${params.kind}
|
|
388
|
+
AND ${nodes.deletedAt} IS NULL
|
|
389
|
+
`;
|
|
390
|
+
}
|
|
391
|
+
return drizzleOrm.sql`
|
|
392
|
+
SELECT COUNT(*) as count FROM ${nodes}
|
|
393
|
+
WHERE ${nodes.graphId} = ${params.graphId}
|
|
394
|
+
AND ${nodes.kind} = ${params.kind}
|
|
395
|
+
`;
|
|
396
|
+
}
|
|
397
|
+
function buildFindEdgesByKind(tables, params) {
|
|
398
|
+
const { edges } = tables;
|
|
399
|
+
const excludeDeleted = params.excludeDeleted ?? true;
|
|
400
|
+
const conditions = [
|
|
401
|
+
drizzleOrm.sql`${edges.graphId} = ${params.graphId}`,
|
|
402
|
+
drizzleOrm.sql`${edges.kind} = ${params.kind}`
|
|
403
|
+
];
|
|
404
|
+
if (excludeDeleted) {
|
|
405
|
+
conditions.push(drizzleOrm.sql`${edges.deletedAt} IS NULL`);
|
|
406
|
+
}
|
|
407
|
+
if (params.fromKind !== void 0) {
|
|
408
|
+
conditions.push(drizzleOrm.sql`${edges.fromKind} = ${params.fromKind}`);
|
|
409
|
+
}
|
|
410
|
+
if (params.fromId !== void 0) {
|
|
411
|
+
conditions.push(drizzleOrm.sql`${edges.fromId} = ${params.fromId}`);
|
|
412
|
+
}
|
|
413
|
+
if (params.toKind !== void 0) {
|
|
414
|
+
conditions.push(drizzleOrm.sql`${edges.toKind} = ${params.toKind}`);
|
|
415
|
+
}
|
|
416
|
+
if (params.toId !== void 0) {
|
|
417
|
+
conditions.push(drizzleOrm.sql`${edges.toId} = ${params.toId}`);
|
|
418
|
+
}
|
|
419
|
+
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
420
|
+
if (params.limit !== void 0 && params.offset !== void 0) {
|
|
421
|
+
return drizzleOrm.sql`
|
|
422
|
+
SELECT * FROM ${edges}
|
|
423
|
+
WHERE ${whereClause}
|
|
424
|
+
ORDER BY ${edges.createdAt} DESC
|
|
425
|
+
LIMIT ${params.limit} OFFSET ${params.offset}
|
|
426
|
+
`;
|
|
427
|
+
}
|
|
428
|
+
if (params.limit !== void 0) {
|
|
429
|
+
return drizzleOrm.sql`
|
|
430
|
+
SELECT * FROM ${edges}
|
|
431
|
+
WHERE ${whereClause}
|
|
432
|
+
ORDER BY ${edges.createdAt} DESC
|
|
433
|
+
LIMIT ${params.limit}
|
|
434
|
+
`;
|
|
435
|
+
}
|
|
436
|
+
return drizzleOrm.sql`
|
|
437
|
+
SELECT * FROM ${edges}
|
|
438
|
+
WHERE ${whereClause}
|
|
439
|
+
ORDER BY ${edges.createdAt} DESC
|
|
440
|
+
`;
|
|
441
|
+
}
|
|
442
|
+
function buildCountEdgesByKind(tables, params) {
|
|
443
|
+
const { edges } = tables;
|
|
444
|
+
const excludeDeleted = params.excludeDeleted ?? true;
|
|
445
|
+
const conditions = [
|
|
446
|
+
drizzleOrm.sql`${edges.graphId} = ${params.graphId}`,
|
|
447
|
+
drizzleOrm.sql`${edges.kind} = ${params.kind}`
|
|
448
|
+
];
|
|
449
|
+
if (excludeDeleted) {
|
|
450
|
+
conditions.push(drizzleOrm.sql`${edges.deletedAt} IS NULL`);
|
|
451
|
+
}
|
|
452
|
+
if (params.fromKind !== void 0) {
|
|
453
|
+
conditions.push(drizzleOrm.sql`${edges.fromKind} = ${params.fromKind}`);
|
|
454
|
+
}
|
|
455
|
+
if (params.fromId !== void 0) {
|
|
456
|
+
conditions.push(drizzleOrm.sql`${edges.fromId} = ${params.fromId}`);
|
|
457
|
+
}
|
|
458
|
+
if (params.toKind !== void 0) {
|
|
459
|
+
conditions.push(drizzleOrm.sql`${edges.toKind} = ${params.toKind}`);
|
|
460
|
+
}
|
|
461
|
+
if (params.toId !== void 0) {
|
|
462
|
+
conditions.push(drizzleOrm.sql`${edges.toId} = ${params.toId}`);
|
|
463
|
+
}
|
|
464
|
+
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
465
|
+
return drizzleOrm.sql`
|
|
466
|
+
SELECT COUNT(*) as count FROM ${edges}
|
|
467
|
+
WHERE ${whereClause}
|
|
468
|
+
`;
|
|
469
|
+
}
|
|
470
|
+
function buildInsertSchemaSqlite(tables, params, timestamp) {
|
|
471
|
+
const { schemaVersions } = tables;
|
|
472
|
+
const schemaDocumentJson = JSON.stringify(params.schemaDoc);
|
|
473
|
+
const isActiveValue = params.isActive ? drizzleOrm.sql.raw("1") : drizzleOrm.sql.raw("0");
|
|
474
|
+
const cols = drizzleOrm.sql.raw(`"${schemaVersions.graphId.name}", "${schemaVersions.version.name}", "${schemaVersions.schemaHash.name}", "${schemaVersions.schemaDoc.name}", "${schemaVersions.createdAt.name}", "${schemaVersions.isActive.name}"`);
|
|
475
|
+
return drizzleOrm.sql`
|
|
476
|
+
INSERT INTO ${schemaVersions} (${cols})
|
|
477
|
+
VALUES (
|
|
478
|
+
${params.graphId}, ${params.version},
|
|
479
|
+
${params.schemaHash}, ${schemaDocumentJson},
|
|
480
|
+
${timestamp}, ${isActiveValue}
|
|
481
|
+
)
|
|
482
|
+
RETURNING *
|
|
483
|
+
`;
|
|
484
|
+
}
|
|
485
|
+
function buildInsertSchemaPostgres(tables, params, timestamp) {
|
|
486
|
+
const { schemaVersions } = tables;
|
|
487
|
+
const schemaDocumentJson = JSON.stringify(params.schemaDoc);
|
|
488
|
+
const isActiveValue = params.isActive ? drizzleOrm.sql.raw("true") : drizzleOrm.sql.raw("false");
|
|
489
|
+
const cols = drizzleOrm.sql.raw(`"${schemaVersions.graphId.name}", "${schemaVersions.version.name}", "${schemaVersions.schemaHash.name}", "${schemaVersions.schemaDoc.name}", "${schemaVersions.createdAt.name}", "${schemaVersions.isActive.name}"`);
|
|
490
|
+
return drizzleOrm.sql`
|
|
491
|
+
INSERT INTO ${schemaVersions} (${cols})
|
|
492
|
+
VALUES (
|
|
493
|
+
${params.graphId}, ${params.version},
|
|
494
|
+
${params.schemaHash}, ${schemaDocumentJson},
|
|
495
|
+
${timestamp}, ${isActiveValue}
|
|
496
|
+
)
|
|
497
|
+
RETURNING *
|
|
498
|
+
`;
|
|
499
|
+
}
|
|
500
|
+
function buildInsertSchema(tables, params, timestamp, dialect = "sqlite") {
|
|
501
|
+
if (dialect === "postgres") {
|
|
502
|
+
return buildInsertSchemaPostgres(tables, params, timestamp);
|
|
503
|
+
}
|
|
504
|
+
return buildInsertSchemaSqlite(tables, params, timestamp);
|
|
505
|
+
}
|
|
506
|
+
function buildGetActiveSchema(tables, graphId, dialect = "sqlite") {
|
|
507
|
+
const { schemaVersions } = tables;
|
|
508
|
+
const adapter = chunkYM5AL65Y_cjs.getDialect(dialect);
|
|
509
|
+
return drizzleOrm.sql`
|
|
510
|
+
SELECT * FROM ${schemaVersions}
|
|
511
|
+
WHERE ${schemaVersions.graphId} = ${graphId}
|
|
512
|
+
AND ${schemaVersions.isActive} = ${adapter.booleanLiteral(true)}
|
|
513
|
+
`;
|
|
514
|
+
}
|
|
515
|
+
function buildGetSchemaVersion(tables, graphId, version) {
|
|
516
|
+
const { schemaVersions } = tables;
|
|
517
|
+
return drizzleOrm.sql`
|
|
518
|
+
SELECT * FROM ${schemaVersions}
|
|
519
|
+
WHERE ${schemaVersions.graphId} = ${graphId}
|
|
520
|
+
AND ${schemaVersions.version} = ${version}
|
|
521
|
+
`;
|
|
522
|
+
}
|
|
523
|
+
function buildSetActiveSchema(tables, graphId, version, dialect = "sqlite") {
|
|
524
|
+
const { schemaVersions } = tables;
|
|
525
|
+
const adapter = chunkYM5AL65Y_cjs.getDialect(dialect);
|
|
526
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
527
|
+
const deactivateAll = drizzleOrm.sql`
|
|
528
|
+
UPDATE ${schemaVersions}
|
|
529
|
+
SET ${col(schemaVersions.isActive)} = ${adapter.booleanLiteral(false)}
|
|
530
|
+
WHERE ${schemaVersions.graphId} = ${graphId}
|
|
531
|
+
`;
|
|
532
|
+
const activateVersion = drizzleOrm.sql`
|
|
533
|
+
UPDATE ${schemaVersions}
|
|
534
|
+
SET ${col(schemaVersions.isActive)} = ${adapter.booleanLiteral(true)}
|
|
535
|
+
WHERE ${schemaVersions.graphId} = ${graphId}
|
|
536
|
+
AND ${schemaVersions.version} = ${version}
|
|
537
|
+
`;
|
|
538
|
+
return { deactivateAll, activateVersion };
|
|
539
|
+
}
|
|
540
|
+
function assertFiniteNumberArray(array, name) {
|
|
541
|
+
for (const [index, value] of array.entries()) {
|
|
542
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
543
|
+
throw new TypeError(
|
|
544
|
+
`${name}[${index}] must be a finite number, got: ${value}`
|
|
545
|
+
);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
function formatEmbeddingLiteral(embedding) {
|
|
550
|
+
assertFiniteNumberArray(embedding, "embedding");
|
|
551
|
+
return `[${embedding.join(",")}]`;
|
|
552
|
+
}
|
|
553
|
+
function buildUpsertEmbeddingPostgres(tables, params, timestamp) {
|
|
554
|
+
const { embeddings } = tables;
|
|
555
|
+
const embeddingLiteral = formatEmbeddingLiteral(params.embedding);
|
|
556
|
+
const cols = drizzleOrm.sql.raw(
|
|
557
|
+
`"${embeddings.graphId.name}", "${embeddings.nodeKind.name}", "${embeddings.nodeId.name}", "${embeddings.fieldPath.name}", "${embeddings.embedding.name}", "${embeddings.dimensions.name}", "${embeddings.createdAt.name}", "${embeddings.updatedAt.name}"`
|
|
558
|
+
);
|
|
559
|
+
const conflictCols = drizzleOrm.sql.raw(
|
|
560
|
+
`"${embeddings.graphId.name}", "${embeddings.nodeKind.name}", "${embeddings.nodeId.name}", "${embeddings.fieldPath.name}"`
|
|
561
|
+
);
|
|
562
|
+
const col = (c) => drizzleOrm.sql.raw(`"${c.name}"`);
|
|
563
|
+
return drizzleOrm.sql`
|
|
564
|
+
INSERT INTO ${embeddings} (${cols})
|
|
565
|
+
VALUES (
|
|
566
|
+
${params.graphId}, ${params.nodeKind}, ${params.nodeId}, ${params.fieldPath},
|
|
567
|
+
${embeddingLiteral}::vector, ${params.dimensions}, ${timestamp}, ${timestamp}
|
|
568
|
+
)
|
|
569
|
+
ON CONFLICT (${conflictCols})
|
|
570
|
+
DO UPDATE SET
|
|
571
|
+
${col(embeddings.embedding)} = ${embeddingLiteral}::vector,
|
|
572
|
+
${col(embeddings.dimensions)} = ${params.dimensions},
|
|
573
|
+
${col(embeddings.updatedAt)} = ${timestamp}
|
|
574
|
+
`;
|
|
575
|
+
}
|
|
576
|
+
function buildDeleteEmbedding(tables, params) {
|
|
577
|
+
const { embeddings } = tables;
|
|
578
|
+
return drizzleOrm.sql`
|
|
579
|
+
DELETE FROM ${embeddings}
|
|
580
|
+
WHERE ${embeddings.graphId} = ${params.graphId}
|
|
581
|
+
AND ${embeddings.nodeKind} = ${params.nodeKind}
|
|
582
|
+
AND ${embeddings.nodeId} = ${params.nodeId}
|
|
583
|
+
AND ${embeddings.fieldPath} = ${params.fieldPath}
|
|
584
|
+
`;
|
|
585
|
+
}
|
|
586
|
+
function buildGetEmbedding(tables, graphId, nodeKind, nodeId, fieldPath) {
|
|
587
|
+
const { embeddings } = tables;
|
|
588
|
+
return drizzleOrm.sql`
|
|
589
|
+
SELECT * FROM ${embeddings}
|
|
590
|
+
WHERE ${embeddings.graphId} = ${graphId}
|
|
591
|
+
AND ${embeddings.nodeKind} = ${nodeKind}
|
|
592
|
+
AND ${embeddings.nodeId} = ${nodeId}
|
|
593
|
+
AND ${embeddings.fieldPath} = ${fieldPath}
|
|
594
|
+
`;
|
|
595
|
+
}
|
|
596
|
+
function buildDistanceExpression(embeddingColumn, queryLiteral, metric) {
|
|
597
|
+
const vectorParam = drizzleOrm.sql`${queryLiteral}::vector`;
|
|
598
|
+
switch (metric) {
|
|
599
|
+
case "cosine": {
|
|
600
|
+
return drizzleOrm.sql`(${embeddingColumn} <=> ${vectorParam})`;
|
|
601
|
+
}
|
|
602
|
+
case "l2": {
|
|
603
|
+
return drizzleOrm.sql`(${embeddingColumn} <-> ${vectorParam})`;
|
|
604
|
+
}
|
|
605
|
+
case "inner_product": {
|
|
606
|
+
return drizzleOrm.sql`(${embeddingColumn} <#> ${vectorParam})`;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
function buildVectorSearchPostgres(tables, params) {
|
|
611
|
+
const { embeddings } = tables;
|
|
612
|
+
const queryLiteral = formatEmbeddingLiteral(params.queryEmbedding);
|
|
613
|
+
const embeddingColumn = drizzleOrm.sql`${embeddings.embedding}`;
|
|
614
|
+
const distanceExpr = buildDistanceExpression(
|
|
615
|
+
embeddingColumn,
|
|
616
|
+
queryLiteral,
|
|
617
|
+
params.metric
|
|
618
|
+
);
|
|
619
|
+
const conditions = [
|
|
620
|
+
drizzleOrm.sql`${embeddings.graphId} = ${params.graphId}`,
|
|
621
|
+
drizzleOrm.sql`${embeddings.nodeKind} = ${params.nodeKind}`,
|
|
622
|
+
drizzleOrm.sql`${embeddings.fieldPath} = ${params.fieldPath}`
|
|
623
|
+
];
|
|
624
|
+
if (params.minScore !== void 0) {
|
|
625
|
+
if (!Number.isFinite(params.minScore)) {
|
|
626
|
+
throw new TypeError(`minScore must be a finite number, got: ${params.minScore}`);
|
|
627
|
+
}
|
|
628
|
+
const threshold = 1 - params.minScore;
|
|
629
|
+
conditions.push(drizzleOrm.sql`${distanceExpr} <= ${threshold}`);
|
|
630
|
+
}
|
|
631
|
+
if (!Number.isInteger(params.limit) || params.limit <= 0) {
|
|
632
|
+
throw new Error(`limit must be a positive integer, got: ${params.limit}`);
|
|
633
|
+
}
|
|
634
|
+
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
635
|
+
return drizzleOrm.sql`
|
|
636
|
+
SELECT
|
|
637
|
+
${embeddings.nodeId} as node_id,
|
|
638
|
+
(1 - (${distanceExpr})) as score
|
|
639
|
+
FROM ${embeddings}
|
|
640
|
+
WHERE ${whereClause}
|
|
641
|
+
ORDER BY ${distanceExpr} ASC
|
|
642
|
+
LIMIT ${params.limit}
|
|
643
|
+
`;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
exports.D1_CAPABILITIES = D1_CAPABILITIES;
|
|
647
|
+
exports.POSTGRES_CAPABILITIES = POSTGRES_CAPABILITIES;
|
|
648
|
+
exports.SQLITE_CAPABILITIES = SQLITE_CAPABILITIES;
|
|
649
|
+
exports.buildCheckUnique = buildCheckUnique;
|
|
650
|
+
exports.buildCountEdgesByKind = buildCountEdgesByKind;
|
|
651
|
+
exports.buildCountEdgesFrom = buildCountEdgesFrom;
|
|
652
|
+
exports.buildCountNodesByKind = buildCountNodesByKind;
|
|
653
|
+
exports.buildDeleteEdge = buildDeleteEdge;
|
|
654
|
+
exports.buildDeleteEmbedding = buildDeleteEmbedding;
|
|
655
|
+
exports.buildDeleteNode = buildDeleteNode;
|
|
656
|
+
exports.buildDeleteUnique = buildDeleteUnique;
|
|
657
|
+
exports.buildEdgeExistsBetween = buildEdgeExistsBetween;
|
|
658
|
+
exports.buildFindEdgesByKind = buildFindEdgesByKind;
|
|
659
|
+
exports.buildFindEdgesConnectedTo = buildFindEdgesConnectedTo;
|
|
660
|
+
exports.buildFindNodesByKind = buildFindNodesByKind;
|
|
661
|
+
exports.buildGetActiveSchema = buildGetActiveSchema;
|
|
662
|
+
exports.buildGetEdge = buildGetEdge;
|
|
663
|
+
exports.buildGetEmbedding = buildGetEmbedding;
|
|
664
|
+
exports.buildGetNode = buildGetNode;
|
|
665
|
+
exports.buildGetSchemaVersion = buildGetSchemaVersion;
|
|
666
|
+
exports.buildHardDeleteEdge = buildHardDeleteEdge;
|
|
667
|
+
exports.buildHardDeleteEmbeddingsByNode = buildHardDeleteEmbeddingsByNode;
|
|
668
|
+
exports.buildHardDeleteNode = buildHardDeleteNode;
|
|
669
|
+
exports.buildHardDeleteUniquesByNode = buildHardDeleteUniquesByNode;
|
|
670
|
+
exports.buildInsertEdge = buildInsertEdge;
|
|
671
|
+
exports.buildInsertNode = buildInsertNode;
|
|
672
|
+
exports.buildInsertSchema = buildInsertSchema;
|
|
673
|
+
exports.buildInsertUnique = buildInsertUnique;
|
|
674
|
+
exports.buildSetActiveSchema = buildSetActiveSchema;
|
|
675
|
+
exports.buildUpdateEdge = buildUpdateEdge;
|
|
676
|
+
exports.buildUpdateNode = buildUpdateNode;
|
|
677
|
+
exports.buildUpsertEmbeddingPostgres = buildUpsertEmbeddingPostgres;
|
|
678
|
+
exports.buildVectorSearchPostgres = buildVectorSearchPostgres;
|
|
679
|
+
//# sourceMappingURL=chunk-F32HCHYA.cjs.map
|
|
680
|
+
//# sourceMappingURL=chunk-F32HCHYA.cjs.map
|