lokicms-plugin-sql 1.0.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/dist/federation/cache-layer.d.ts +58 -0
- package/dist/federation/cache-layer.d.ts.map +1 -0
- package/dist/federation/cache-layer.js +210 -0
- package/dist/federation/cache-layer.js.map +1 -0
- package/dist/federation/index.d.ts +12 -0
- package/dist/federation/index.d.ts.map +1 -0
- package/dist/federation/index.js +9 -0
- package/dist/federation/index.js.map +1 -0
- package/dist/federation/source-manager.d.ts +57 -0
- package/dist/federation/source-manager.d.ts.map +1 -0
- package/dist/federation/source-manager.js +238 -0
- package/dist/federation/source-manager.js.map +1 -0
- package/dist/federation/sync-engine.d.ts +68 -0
- package/dist/federation/sync-engine.d.ts.map +1 -0
- package/dist/federation/sync-engine.js +288 -0
- package/dist/federation/sync-engine.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +28 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +798 -0
- package/dist/plugin.js.map +1 -0
- package/dist/providers/base.d.ts +142 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +161 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +22 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +74 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/mariadb.d.ts +83 -0
- package/dist/providers/mariadb.d.ts.map +1 -0
- package/dist/providers/mariadb.js +293 -0
- package/dist/providers/mariadb.js.map +1 -0
- package/dist/providers/mysql.d.ts +78 -0
- package/dist/providers/mysql.d.ts.map +1 -0
- package/dist/providers/mysql.js +284 -0
- package/dist/providers/mysql.js.map +1 -0
- package/dist/providers/postgresql.d.ts +77 -0
- package/dist/providers/postgresql.d.ts.map +1 -0
- package/dist/providers/postgresql.js +296 -0
- package/dist/providers/postgresql.js.map +1 -0
- package/dist/providers/sqlite.d.ts +80 -0
- package/dist/providers/sqlite.d.ts.map +1 -0
- package/dist/providers/sqlite.js +283 -0
- package/dist/providers/sqlite.js.map +1 -0
- package/dist/query/builder.d.ts +74 -0
- package/dist/query/builder.d.ts.map +1 -0
- package/dist/query/builder.js +279 -0
- package/dist/query/builder.js.map +1 -0
- package/dist/query/index.d.ts +10 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +8 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/transformer.d.ts +74 -0
- package/dist/query/transformer.d.ts.map +1 -0
- package/dist/query/transformer.js +236 -0
- package/dist/query/transformer.js.map +1 -0
- package/dist/types.d.ts +350 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +38 -0
- package/dist/types.js.map +1 -0
- package/dist/vectors/adapter.d.ts +128 -0
- package/dist/vectors/adapter.d.ts.map +1 -0
- package/dist/vectors/adapter.js +79 -0
- package/dist/vectors/adapter.js.map +1 -0
- package/dist/vectors/index.d.ts +41 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +87 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/lokijs-vector.d.ts +112 -0
- package/dist/vectors/lokijs-vector.d.ts.map +1 -0
- package/dist/vectors/lokijs-vector.js +217 -0
- package/dist/vectors/lokijs-vector.js.map +1 -0
- package/dist/vectors/mariadb-vector.d.ts +56 -0
- package/dist/vectors/mariadb-vector.d.ts.map +1 -0
- package/dist/vectors/mariadb-vector.js +263 -0
- package/dist/vectors/mariadb-vector.js.map +1 -0
- package/dist/vectors/mysql-vector.d.ts +56 -0
- package/dist/vectors/mysql-vector.d.ts.map +1 -0
- package/dist/vectors/mysql-vector.js +235 -0
- package/dist/vectors/mysql-vector.js.map +1 -0
- package/dist/vectors/pgvector.d.ts +52 -0
- package/dist/vectors/pgvector.d.ts.map +1 -0
- package/dist/vectors/pgvector.js +190 -0
- package/dist/vectors/pgvector.js.map +1 -0
- package/dist/vectors/sqlite-vec.d.ts +80 -0
- package/dist/vectors/sqlite-vec.d.ts.map +1 -0
- package/dist/vectors/sqlite-vec.js +362 -0
- package/dist/vectors/sqlite-vec.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Provider
|
|
3
|
+
*
|
|
4
|
+
* PostgreSQL database provider with pgvector support detection.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderCapabilities, QueryResult, DatabaseSchema, TableInfo } from '../types.js';
|
|
7
|
+
import { BaseProvider, BaseProviderOptions } from './base.js';
|
|
8
|
+
/**
|
|
9
|
+
* PostgreSQL Provider
|
|
10
|
+
*/
|
|
11
|
+
export declare class PostgreSQLProvider extends BaseProvider {
|
|
12
|
+
private pool;
|
|
13
|
+
private client;
|
|
14
|
+
private capabilities;
|
|
15
|
+
constructor(options: BaseProviderOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Connect to PostgreSQL
|
|
18
|
+
*/
|
|
19
|
+
connect(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Disconnect from PostgreSQL
|
|
22
|
+
*/
|
|
23
|
+
disconnect(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Detect database capabilities
|
|
26
|
+
*/
|
|
27
|
+
private detectCapabilities;
|
|
28
|
+
/**
|
|
29
|
+
* Get capabilities
|
|
30
|
+
*/
|
|
31
|
+
getCapabilities(): Promise<ProviderCapabilities>;
|
|
32
|
+
/**
|
|
33
|
+
* Execute a query
|
|
34
|
+
*/
|
|
35
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
36
|
+
/**
|
|
37
|
+
* Execute a non-query statement
|
|
38
|
+
*/
|
|
39
|
+
execute(sql: string, params?: unknown[]): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Begin transaction
|
|
42
|
+
*/
|
|
43
|
+
beginTransaction(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Commit transaction
|
|
46
|
+
*/
|
|
47
|
+
commit(): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Rollback transaction
|
|
50
|
+
*/
|
|
51
|
+
rollback(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Get database schema
|
|
54
|
+
*/
|
|
55
|
+
getSchema(): Promise<DatabaseSchema>;
|
|
56
|
+
/**
|
|
57
|
+
* Get table info
|
|
58
|
+
*/
|
|
59
|
+
getTableInfo(tableName: string, schema?: string): Promise<TableInfo | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Escape identifier
|
|
62
|
+
*/
|
|
63
|
+
escapeIdentifier(name: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Get parameter placeholder
|
|
66
|
+
*/
|
|
67
|
+
getPlaceholder(index: number): string;
|
|
68
|
+
/**
|
|
69
|
+
* Map column type
|
|
70
|
+
*/
|
|
71
|
+
protected mapColumnType(type: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Enable pgvector extension
|
|
74
|
+
*/
|
|
75
|
+
enableVectors(): Promise<boolean>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=postgresql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../src/providers/postgresql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,SAAS,EAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAkB9D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,YAAY,CAAqC;gBAE7C,OAAO,EAAE,mBAAmB;IAIxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAOtD;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAiB1B;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAgC1C;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA2DnF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC;;OAEG;cACgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmBtD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAaxC"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Provider
|
|
3
|
+
*
|
|
4
|
+
* PostgreSQL database provider with pgvector support detection.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseProvider } from './base.js';
|
|
7
|
+
// Dynamic import for pg
|
|
8
|
+
let pg = null;
|
|
9
|
+
async function getPg() {
|
|
10
|
+
if (!pg) {
|
|
11
|
+
try {
|
|
12
|
+
pg = await import('pg');
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error('pg package not installed. Install with: npm install pg');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return pg;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* PostgreSQL Provider
|
|
22
|
+
*/
|
|
23
|
+
export class PostgreSQLProvider extends BaseProvider {
|
|
24
|
+
pool = null;
|
|
25
|
+
client = null;
|
|
26
|
+
capabilities = null;
|
|
27
|
+
constructor(options) {
|
|
28
|
+
super({ ...options, type: 'postgresql' });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Connect to PostgreSQL
|
|
32
|
+
*/
|
|
33
|
+
async connect() {
|
|
34
|
+
if (this.connected)
|
|
35
|
+
return;
|
|
36
|
+
const { Pool } = await getPg();
|
|
37
|
+
const config = this.config;
|
|
38
|
+
this.pool = new Pool({
|
|
39
|
+
connectionString: config.connectionString,
|
|
40
|
+
host: config.host,
|
|
41
|
+
port: config.port ?? 5432,
|
|
42
|
+
database: config.database,
|
|
43
|
+
user: config.user,
|
|
44
|
+
password: config.password,
|
|
45
|
+
ssl: config.ssl,
|
|
46
|
+
max: 10,
|
|
47
|
+
idleTimeoutMillis: 30000,
|
|
48
|
+
connectionTimeoutMillis: 5000,
|
|
49
|
+
});
|
|
50
|
+
// Test connection
|
|
51
|
+
const testClient = await this.pool.connect();
|
|
52
|
+
testClient.release();
|
|
53
|
+
this.connected = true;
|
|
54
|
+
this.logger.info('PostgreSQL connected');
|
|
55
|
+
// Detect capabilities
|
|
56
|
+
this.capabilities = await this.detectCapabilities();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Disconnect from PostgreSQL
|
|
60
|
+
*/
|
|
61
|
+
async disconnect() {
|
|
62
|
+
if (this.client) {
|
|
63
|
+
this.client.release();
|
|
64
|
+
this.client = null;
|
|
65
|
+
}
|
|
66
|
+
if (this.pool) {
|
|
67
|
+
await this.pool.end();
|
|
68
|
+
this.pool = null;
|
|
69
|
+
}
|
|
70
|
+
this.connected = false;
|
|
71
|
+
this.logger.info('PostgreSQL disconnected');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Detect database capabilities
|
|
75
|
+
*/
|
|
76
|
+
async detectCapabilities() {
|
|
77
|
+
const caps = {
|
|
78
|
+
json: true, // PostgreSQL has native JSONB
|
|
79
|
+
vectors: false,
|
|
80
|
+
fullText: true,
|
|
81
|
+
fullTextMethod: 'tsvector',
|
|
82
|
+
transactions: true,
|
|
83
|
+
};
|
|
84
|
+
// Check for pgvector extension
|
|
85
|
+
try {
|
|
86
|
+
const result = await this.query("SELECT extversion FROM pg_extension WHERE extname = 'vector'");
|
|
87
|
+
if (result.rows.length > 0) {
|
|
88
|
+
caps.vectors = true;
|
|
89
|
+
caps.vectorInfo = `pgvector ${result.rows[0].extversion}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Extension not available
|
|
94
|
+
}
|
|
95
|
+
// Get max connections
|
|
96
|
+
try {
|
|
97
|
+
const result = await this.query('SHOW max_connections');
|
|
98
|
+
if (result.rows.length > 0) {
|
|
99
|
+
caps.maxConnections = parseInt(result.rows[0].max_connections, 10);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Ignore
|
|
104
|
+
}
|
|
105
|
+
return caps;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get capabilities
|
|
109
|
+
*/
|
|
110
|
+
async getCapabilities() {
|
|
111
|
+
if (!this.capabilities) {
|
|
112
|
+
this.capabilities = await this.detectCapabilities();
|
|
113
|
+
}
|
|
114
|
+
return this.capabilities;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Execute a query
|
|
118
|
+
*/
|
|
119
|
+
async query(sql, params) {
|
|
120
|
+
this.assertConnected();
|
|
121
|
+
this.logQuery(sql, params);
|
|
122
|
+
const client = this.client ?? this.pool;
|
|
123
|
+
const result = await client.query(sql, params);
|
|
124
|
+
return {
|
|
125
|
+
rows: result.rows,
|
|
126
|
+
rowCount: result.rowCount ?? 0,
|
|
127
|
+
fields: result.fields?.map((f) => ({
|
|
128
|
+
name: f.name,
|
|
129
|
+
dataType: String(f.dataTypeID),
|
|
130
|
+
})),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Execute a non-query statement
|
|
135
|
+
*/
|
|
136
|
+
async execute(sql, params) {
|
|
137
|
+
this.assertConnected();
|
|
138
|
+
this.assertWritable();
|
|
139
|
+
this.logQuery(sql, params);
|
|
140
|
+
const client = this.client ?? this.pool;
|
|
141
|
+
const result = await client.query(sql, params);
|
|
142
|
+
return result.rowCount ?? 0;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Begin transaction
|
|
146
|
+
*/
|
|
147
|
+
async beginTransaction() {
|
|
148
|
+
this.assertConnected();
|
|
149
|
+
if (this.inTransaction) {
|
|
150
|
+
throw new Error('Transaction already in progress');
|
|
151
|
+
}
|
|
152
|
+
this.client = await this.pool.connect();
|
|
153
|
+
await this.client.query('BEGIN');
|
|
154
|
+
this.inTransaction = true;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Commit transaction
|
|
158
|
+
*/
|
|
159
|
+
async commit() {
|
|
160
|
+
if (!this.inTransaction || !this.client) {
|
|
161
|
+
throw new Error('No transaction in progress');
|
|
162
|
+
}
|
|
163
|
+
await this.client.query('COMMIT');
|
|
164
|
+
this.client.release();
|
|
165
|
+
this.client = null;
|
|
166
|
+
this.inTransaction = false;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Rollback transaction
|
|
170
|
+
*/
|
|
171
|
+
async rollback() {
|
|
172
|
+
if (!this.inTransaction || !this.client) {
|
|
173
|
+
throw new Error('No transaction in progress');
|
|
174
|
+
}
|
|
175
|
+
await this.client.query('ROLLBACK');
|
|
176
|
+
this.client.release();
|
|
177
|
+
this.client = null;
|
|
178
|
+
this.inTransaction = false;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get database schema
|
|
182
|
+
*/
|
|
183
|
+
async getSchema() {
|
|
184
|
+
this.assertConnected();
|
|
185
|
+
// Get tables
|
|
186
|
+
const tablesResult = await this.query(`SELECT table_name, table_schema
|
|
187
|
+
FROM information_schema.tables
|
|
188
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
189
|
+
AND table_type = 'BASE TABLE'
|
|
190
|
+
ORDER BY table_schema, table_name`);
|
|
191
|
+
const tables = [];
|
|
192
|
+
for (const row of tablesResult.rows) {
|
|
193
|
+
const info = await this.getTableInfo(row.table_name, row.table_schema);
|
|
194
|
+
if (info)
|
|
195
|
+
tables.push(info);
|
|
196
|
+
}
|
|
197
|
+
// Get views
|
|
198
|
+
const viewsResult = await this.query(`SELECT table_name
|
|
199
|
+
FROM information_schema.views
|
|
200
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
201
|
+
ORDER BY table_name`);
|
|
202
|
+
return {
|
|
203
|
+
tables,
|
|
204
|
+
views: viewsResult.rows.map((r) => r.table_name),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get table info
|
|
209
|
+
*/
|
|
210
|
+
async getTableInfo(tableName, schema = 'public') {
|
|
211
|
+
this.assertConnected();
|
|
212
|
+
// Get columns
|
|
213
|
+
const columnsResult = await this.query(`SELECT column_name, data_type, is_nullable, column_default
|
|
214
|
+
FROM information_schema.columns
|
|
215
|
+
WHERE table_name = $1 AND table_schema = $2
|
|
216
|
+
ORDER BY ordinal_position`, [tableName, schema]);
|
|
217
|
+
if (columnsResult.rows.length === 0) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
// Get primary key columns
|
|
221
|
+
const pkResult = await this.query(`SELECT a.attname as column_name
|
|
222
|
+
FROM pg_index i
|
|
223
|
+
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
|
|
224
|
+
JOIN pg_class c ON c.oid = i.indrelid
|
|
225
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
226
|
+
WHERE c.relname = $1 AND n.nspname = $2 AND i.indisprimary`, [tableName, schema]);
|
|
227
|
+
const pkColumns = new Set(pkResult.rows.map((r) => r.column_name));
|
|
228
|
+
// Get row count estimate
|
|
229
|
+
const countResult = await this.query(`SELECT reltuples::bigint as estimate
|
|
230
|
+
FROM pg_class c
|
|
231
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
232
|
+
WHERE c.relname = $1 AND n.nspname = $2`, [tableName, schema]);
|
|
233
|
+
const columns = columnsResult.rows.map((row) => ({
|
|
234
|
+
name: row.column_name,
|
|
235
|
+
type: row.data_type,
|
|
236
|
+
nullable: row.is_nullable === 'YES',
|
|
237
|
+
primaryKey: pkColumns.has(row.column_name),
|
|
238
|
+
defaultValue: row.column_default,
|
|
239
|
+
}));
|
|
240
|
+
return {
|
|
241
|
+
name: tableName,
|
|
242
|
+
schema,
|
|
243
|
+
columns,
|
|
244
|
+
rowCount: countResult.rows[0]?.estimate ?? 0,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Escape identifier
|
|
249
|
+
*/
|
|
250
|
+
escapeIdentifier(name) {
|
|
251
|
+
return `"${name.replace(/"/g, '""')}"`;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get parameter placeholder
|
|
255
|
+
*/
|
|
256
|
+
getPlaceholder(index) {
|
|
257
|
+
return `$${index + 1}`;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Map column type
|
|
261
|
+
*/
|
|
262
|
+
mapColumnType(type) {
|
|
263
|
+
const typeMap = {
|
|
264
|
+
string: 'VARCHAR(255)',
|
|
265
|
+
text: 'TEXT',
|
|
266
|
+
integer: 'INTEGER',
|
|
267
|
+
bigint: 'BIGINT',
|
|
268
|
+
float: 'REAL',
|
|
269
|
+
double: 'DOUBLE PRECISION',
|
|
270
|
+
boolean: 'BOOLEAN',
|
|
271
|
+
date: 'DATE',
|
|
272
|
+
datetime: 'TIMESTAMP WITH TIME ZONE',
|
|
273
|
+
json: 'JSONB',
|
|
274
|
+
blob: 'BYTEA',
|
|
275
|
+
vector: 'vector', // pgvector type
|
|
276
|
+
};
|
|
277
|
+
return typeMap[type.toLowerCase()] ?? type;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Enable pgvector extension
|
|
281
|
+
*/
|
|
282
|
+
async enableVectors() {
|
|
283
|
+
this.assertConnected();
|
|
284
|
+
this.assertWritable();
|
|
285
|
+
try {
|
|
286
|
+
await this.execute('CREATE EXTENSION IF NOT EXISTS vector');
|
|
287
|
+
this.capabilities = await this.detectCapabilities();
|
|
288
|
+
return this.capabilities.vectors;
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
this.logger.error(`Failed to enable pgvector: ${error}`);
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=postgresql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../src/providers/postgresql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Provider
|
|
3
|
+
*
|
|
4
|
+
* SQLite database provider with sqlite-vec support detection.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderCapabilities, QueryResult, DatabaseSchema, TableInfo } from '../types.js';
|
|
7
|
+
import { BaseProvider, BaseProviderOptions } from './base.js';
|
|
8
|
+
/**
|
|
9
|
+
* SQLite Provider
|
|
10
|
+
*/
|
|
11
|
+
export declare class SQLiteProvider extends BaseProvider {
|
|
12
|
+
private db;
|
|
13
|
+
private capabilities;
|
|
14
|
+
constructor(options: BaseProviderOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Connect to SQLite
|
|
17
|
+
*/
|
|
18
|
+
connect(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Disconnect from SQLite
|
|
21
|
+
*/
|
|
22
|
+
disconnect(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Detect database capabilities
|
|
25
|
+
*/
|
|
26
|
+
private detectCapabilities;
|
|
27
|
+
/**
|
|
28
|
+
* Get capabilities
|
|
29
|
+
*/
|
|
30
|
+
getCapabilities(): Promise<ProviderCapabilities>;
|
|
31
|
+
/**
|
|
32
|
+
* Execute a query
|
|
33
|
+
*/
|
|
34
|
+
query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;
|
|
35
|
+
/**
|
|
36
|
+
* Execute a non-query statement
|
|
37
|
+
*/
|
|
38
|
+
execute(sql: string, params?: unknown[]): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Begin transaction
|
|
41
|
+
*/
|
|
42
|
+
beginTransaction(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Commit transaction
|
|
45
|
+
*/
|
|
46
|
+
commit(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Rollback transaction
|
|
49
|
+
*/
|
|
50
|
+
rollback(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get database schema
|
|
53
|
+
*/
|
|
54
|
+
getSchema(): Promise<DatabaseSchema>;
|
|
55
|
+
/**
|
|
56
|
+
* Get table info
|
|
57
|
+
*/
|
|
58
|
+
getTableInfo(tableName: string): Promise<TableInfo | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Escape identifier
|
|
61
|
+
*/
|
|
62
|
+
escapeIdentifier(name: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Get parameter placeholder
|
|
65
|
+
*/
|
|
66
|
+
getPlaceholder(_index: number): string;
|
|
67
|
+
/**
|
|
68
|
+
* Map column type
|
|
69
|
+
*/
|
|
70
|
+
protected mapColumnType(type: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Load sqlite-vec extension
|
|
73
|
+
*/
|
|
74
|
+
loadVecExtension(path: string): Promise<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Create FTS5 virtual table
|
|
77
|
+
*/
|
|
78
|
+
createFTS5Table(tableName: string, columns: string[], contentTable?: string): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/providers/sqlite.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,SAAS,EAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AA8C9D;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,EAAE,CAAsC;IAChD,OAAO,CAAC,YAAY,CAAqC;gBAE7C,OAAO,EAAE,mBAAmB;IAIxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;OAEG;YACW,kBAAkB;IAgChC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAOtD;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAyB1B;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IA6B1C;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAqChE;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;cACgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAoBtD;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatD;;OAEG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;CAkBjB"}
|