xansql 1.0.1 → 1.0.2
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/dialect/MysqlDialect.d.ts +10 -0
- package/dialect/MysqlDialect.js +72 -0
- package/dialect/MysqlDialect.js.map +1 -0
- package/dialect/MysqlDialect.mjs +72 -0
- package/dialect/MysqlDialect.mjs.map +1 -0
- package/dialect/PostgresDialect.d.ts +10 -0
- package/dialect/PostgresDialect.js +118 -0
- package/dialect/PostgresDialect.js.map +1 -0
- package/dialect/PostgresDialect.mjs +118 -0
- package/dialect/PostgresDialect.mjs.map +1 -0
- package/dialect/SqliteDialect.d.ts +9 -0
- package/dialect/SqliteDialect.js +65 -0
- package/dialect/SqliteDialect.js.map +1 -0
- package/dialect/SqliteDialect.mjs +65 -0
- package/dialect/SqliteDialect.mjs.map +1 -0
- package/file/FileInDirectory.d.ts +12 -0
- package/file/FileInDirectory.js +27 -0
- package/file/FileInDirectory.js.map +1 -0
- package/file/FileInDirectory.mjs +27 -0
- package/file/FileInDirectory.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +1 -18
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PoolOptions } from 'mysql2';
|
|
2
|
+
import { ExecuterResult } from '../core/type.js';
|
|
3
|
+
|
|
4
|
+
declare const MysqlDialect: (config: string | PoolOptions) => {
|
|
5
|
+
engine: "mysql";
|
|
6
|
+
execute: (sql: string, params?: any[]) => Promise<ExecuterResult>;
|
|
7
|
+
getSchema: () => Promise<Record<string, any[]>>;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { MysqlDialect as default };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});let mysql;
|
|
2
|
+
const MysqlDialect = (config) => {
|
|
3
|
+
let pool;
|
|
4
|
+
const getConnection = async () => {
|
|
5
|
+
if (!mysql)
|
|
6
|
+
mysql = await import('mysql2/promise');
|
|
7
|
+
if (!pool)
|
|
8
|
+
pool = mysql.createPool(typeof config === 'string' ? { uri: config } : config);
|
|
9
|
+
return pool.getConnection();
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql, params = []) => {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
const conn = await getConnection();
|
|
14
|
+
try {
|
|
15
|
+
const [rows] = await conn.query(sql, params);
|
|
16
|
+
return {
|
|
17
|
+
results: rows,
|
|
18
|
+
insertId: 'insertId' in rows ? rows.insertId || 0 : 0,
|
|
19
|
+
affectedRows: 'affectedRows' in rows ? rows.affectedRows || 0 : 0,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
conn.release();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
throw new Error('MysqlDialect can only be used in a Node.js environment.');
|
|
27
|
+
};
|
|
28
|
+
const getSchema = async () => {
|
|
29
|
+
const conn = await getConnection();
|
|
30
|
+
const [tablesRes] = await conn.query(`SELECT table_name
|
|
31
|
+
FROM information_schema.tables
|
|
32
|
+
WHERE table_schema = DATABASE();`);
|
|
33
|
+
const schema = {};
|
|
34
|
+
for (const row of tablesRes) {
|
|
35
|
+
const table = row.TABLE_NAME;
|
|
36
|
+
schema[table] = [];
|
|
37
|
+
// Get columns
|
|
38
|
+
const [columns] = await conn.query(`SELECT
|
|
39
|
+
COLUMN_NAME as name,
|
|
40
|
+
COLUMN_TYPE as type,
|
|
41
|
+
IS_NULLABLE,
|
|
42
|
+
COLUMN_DEFAULT,
|
|
43
|
+
COLUMN_KEY
|
|
44
|
+
FROM information_schema.columns
|
|
45
|
+
WHERE table_schema = DATABASE()
|
|
46
|
+
AND table_name = '${table}'`);
|
|
47
|
+
// Get indexes
|
|
48
|
+
const [indexes] = await conn.query(`SHOW INDEX FROM \`${table}\``);
|
|
49
|
+
for (const col of columns) {
|
|
50
|
+
const colName = col.name;
|
|
51
|
+
const isPrimary = col.COLUMN_KEY === "PRI";
|
|
52
|
+
const isIndexed = indexes.some(i => i.Column_name === colName);
|
|
53
|
+
const isUnique = indexes.some(i => i.Column_name === colName && i.Non_unique === 0);
|
|
54
|
+
schema[table].push({
|
|
55
|
+
name: colName,
|
|
56
|
+
type: col.type,
|
|
57
|
+
notnull: col.IS_NULLABLE === "NO",
|
|
58
|
+
default_value: col.COLUMN_DEFAULT,
|
|
59
|
+
pk: isPrimary,
|
|
60
|
+
index: isIndexed,
|
|
61
|
+
unique: isUnique
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return schema;
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
engine: 'mysql',
|
|
69
|
+
execute,
|
|
70
|
+
getSchema
|
|
71
|
+
};
|
|
72
|
+
};exports.default=MysqlDialect;//# sourceMappingURL=MysqlDialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MysqlDialect.js","sources":["../../src/dialect/MysqlDialect.ts"],"sourcesContent":["import { PoolOptions } from 'mysql2';\nimport { ExecuterResult } from '../core/type';\n\nlet mysql: typeof import('mysql2/promise');\n\nconst MysqlDialect = (config: string | PoolOptions) => {\n let pool: import('mysql2/promise').Pool;\n\n const getConnection = async () => {\n if (!mysql) mysql = await import('mysql2/promise')\n if (!pool) pool = mysql.createPool(typeof config === 'string' ? { uri: config } : config);\n return pool.getConnection()\n }\n\n const execute = async (sql: string, params: any[] = []): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n const conn = await getConnection();\n try {\n const [rows] = await conn.query(sql, params);\n return {\n results: rows as any,\n insertId: 'insertId' in rows ? rows.insertId || 0 : 0,\n affectedRows: 'affectedRows' in rows ? rows.affectedRows || 0 : 0,\n };\n } finally {\n conn.release();\n }\n }\n throw new Error('MysqlDialect can only be used in a Node.js environment.');\n };\n\n const getSchema = async () => {\n const conn = await getConnection()\n const [tablesRes] = await conn.query<any[]>(\n `SELECT table_name \n FROM information_schema.tables \n WHERE table_schema = DATABASE();`\n );\n\n const schema: Record<string, any[]> = {};\n\n for (const row of tablesRes) {\n const table = row.TABLE_NAME;\n schema[table] = [];\n\n // Get columns\n const [columns] = await conn.query<any[]>(\n `SELECT \n COLUMN_NAME as name,\n COLUMN_TYPE as type,\n IS_NULLABLE,\n COLUMN_DEFAULT,\n COLUMN_KEY\n FROM information_schema.columns\n WHERE table_schema = DATABASE()\n AND table_name = '${table}'`\n );\n\n // Get indexes\n const [indexes] = await conn.query<any[]>(\n `SHOW INDEX FROM \\`${table}\\``\n );\n\n for (const col of columns) {\n const colName = col.name;\n const isPrimary = col.COLUMN_KEY === \"PRI\";\n const isIndexed = indexes.some(i => i.Column_name === colName);\n const isUnique = indexes.some(i => i.Column_name === colName && i.Non_unique === 0);\n\n schema[table].push({\n name: colName,\n type: col.type,\n notnull: col.IS_NULLABLE === \"NO\",\n default_value: col.COLUMN_DEFAULT,\n pk: isPrimary,\n index: isIndexed,\n unique: isUnique\n });\n }\n }\n\n return schema;\n };\n\n\n return {\n engine: 'mysql' as const,\n execute,\n getSchema\n };\n};\n\nexport default MysqlDialect;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
let mysql;
|
|
2
|
+
const MysqlDialect = (config) => {
|
|
3
|
+
let pool;
|
|
4
|
+
const getConnection = async () => {
|
|
5
|
+
if (!mysql)
|
|
6
|
+
mysql = await import('mysql2/promise');
|
|
7
|
+
if (!pool)
|
|
8
|
+
pool = mysql.createPool(typeof config === 'string' ? { uri: config } : config);
|
|
9
|
+
return pool.getConnection();
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql, params = []) => {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
const conn = await getConnection();
|
|
14
|
+
try {
|
|
15
|
+
const [rows] = await conn.query(sql, params);
|
|
16
|
+
return {
|
|
17
|
+
results: rows,
|
|
18
|
+
insertId: 'insertId' in rows ? rows.insertId || 0 : 0,
|
|
19
|
+
affectedRows: 'affectedRows' in rows ? rows.affectedRows || 0 : 0,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
conn.release();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
throw new Error('MysqlDialect can only be used in a Node.js environment.');
|
|
27
|
+
};
|
|
28
|
+
const getSchema = async () => {
|
|
29
|
+
const conn = await getConnection();
|
|
30
|
+
const [tablesRes] = await conn.query(`SELECT table_name
|
|
31
|
+
FROM information_schema.tables
|
|
32
|
+
WHERE table_schema = DATABASE();`);
|
|
33
|
+
const schema = {};
|
|
34
|
+
for (const row of tablesRes) {
|
|
35
|
+
const table = row.TABLE_NAME;
|
|
36
|
+
schema[table] = [];
|
|
37
|
+
// Get columns
|
|
38
|
+
const [columns] = await conn.query(`SELECT
|
|
39
|
+
COLUMN_NAME as name,
|
|
40
|
+
COLUMN_TYPE as type,
|
|
41
|
+
IS_NULLABLE,
|
|
42
|
+
COLUMN_DEFAULT,
|
|
43
|
+
COLUMN_KEY
|
|
44
|
+
FROM information_schema.columns
|
|
45
|
+
WHERE table_schema = DATABASE()
|
|
46
|
+
AND table_name = '${table}'`);
|
|
47
|
+
// Get indexes
|
|
48
|
+
const [indexes] = await conn.query(`SHOW INDEX FROM \`${table}\``);
|
|
49
|
+
for (const col of columns) {
|
|
50
|
+
const colName = col.name;
|
|
51
|
+
const isPrimary = col.COLUMN_KEY === "PRI";
|
|
52
|
+
const isIndexed = indexes.some(i => i.Column_name === colName);
|
|
53
|
+
const isUnique = indexes.some(i => i.Column_name === colName && i.Non_unique === 0);
|
|
54
|
+
schema[table].push({
|
|
55
|
+
name: colName,
|
|
56
|
+
type: col.type,
|
|
57
|
+
notnull: col.IS_NULLABLE === "NO",
|
|
58
|
+
default_value: col.COLUMN_DEFAULT,
|
|
59
|
+
pk: isPrimary,
|
|
60
|
+
index: isIndexed,
|
|
61
|
+
unique: isUnique
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return schema;
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
engine: 'mysql',
|
|
69
|
+
execute,
|
|
70
|
+
getSchema
|
|
71
|
+
};
|
|
72
|
+
};export{MysqlDialect as default};//# sourceMappingURL=MysqlDialect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MysqlDialect.mjs","sources":["../../src/dialect/MysqlDialect.ts"],"sourcesContent":["import { PoolOptions } from 'mysql2';\nimport { ExecuterResult } from '../core/type';\n\nlet mysql: typeof import('mysql2/promise');\n\nconst MysqlDialect = (config: string | PoolOptions) => {\n let pool: import('mysql2/promise').Pool;\n\n const getConnection = async () => {\n if (!mysql) mysql = await import('mysql2/promise')\n if (!pool) pool = mysql.createPool(typeof config === 'string' ? { uri: config } : config);\n return pool.getConnection()\n }\n\n const execute = async (sql: string, params: any[] = []): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n const conn = await getConnection();\n try {\n const [rows] = await conn.query(sql, params);\n return {\n results: rows as any,\n insertId: 'insertId' in rows ? rows.insertId || 0 : 0,\n affectedRows: 'affectedRows' in rows ? rows.affectedRows || 0 : 0,\n };\n } finally {\n conn.release();\n }\n }\n throw new Error('MysqlDialect can only be used in a Node.js environment.');\n };\n\n const getSchema = async () => {\n const conn = await getConnection()\n const [tablesRes] = await conn.query<any[]>(\n `SELECT table_name \n FROM information_schema.tables \n WHERE table_schema = DATABASE();`\n );\n\n const schema: Record<string, any[]> = {};\n\n for (const row of tablesRes) {\n const table = row.TABLE_NAME;\n schema[table] = [];\n\n // Get columns\n const [columns] = await conn.query<any[]>(\n `SELECT \n COLUMN_NAME as name,\n COLUMN_TYPE as type,\n IS_NULLABLE,\n COLUMN_DEFAULT,\n COLUMN_KEY\n FROM information_schema.columns\n WHERE table_schema = DATABASE()\n AND table_name = '${table}'`\n );\n\n // Get indexes\n const [indexes] = await conn.query<any[]>(\n `SHOW INDEX FROM \\`${table}\\``\n );\n\n for (const col of columns) {\n const colName = col.name;\n const isPrimary = col.COLUMN_KEY === \"PRI\";\n const isIndexed = indexes.some(i => i.Column_name === colName);\n const isUnique = indexes.some(i => i.Column_name === colName && i.Non_unique === 0);\n\n schema[table].push({\n name: colName,\n type: col.type,\n notnull: col.IS_NULLABLE === \"NO\",\n default_value: col.COLUMN_DEFAULT,\n pk: isPrimary,\n index: isIndexed,\n unique: isUnique\n });\n }\n }\n\n return schema;\n };\n\n\n return {\n engine: 'mysql' as const,\n execute,\n getSchema\n };\n};\n\nexport default MysqlDialect;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PoolConfig } from 'pg';
|
|
2
|
+
import { ExecuterResult } from '../core/type.js';
|
|
3
|
+
|
|
4
|
+
declare const PostgresDialect: (config: PoolConfig) => {
|
|
5
|
+
engine: "postgres";
|
|
6
|
+
execute: (sql: string) => Promise<ExecuterResult>;
|
|
7
|
+
getSchema: () => Promise<Record<string, any[]>>;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { PostgresDialect as default };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});let postpres;
|
|
2
|
+
const PostgresDialect = (config) => {
|
|
3
|
+
let pool;
|
|
4
|
+
const getConnection = async () => {
|
|
5
|
+
if (!postpres)
|
|
6
|
+
postpres = await import('pg');
|
|
7
|
+
if (!pool)
|
|
8
|
+
pool = new postpres.Pool(config);
|
|
9
|
+
return pool.connect();
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql) => {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
const client = await getConnection();
|
|
14
|
+
try {
|
|
15
|
+
let results;
|
|
16
|
+
let insertId = 0;
|
|
17
|
+
let affectedRows = 0;
|
|
18
|
+
if (sql.startsWith('SELECT')) {
|
|
19
|
+
const res = await client.query(sql);
|
|
20
|
+
results = res.rows;
|
|
21
|
+
affectedRows = res.rowCount || 0;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const res = await client.query(sql + ' RETURNING *'); // capture inserted rows
|
|
25
|
+
results = res.rows;
|
|
26
|
+
affectedRows = res.rowCount || 0;
|
|
27
|
+
if (results[0] && 'id' in results[0]) {
|
|
28
|
+
insertId = results[0].id; // assumes primary key column is `id`
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { results, insertId, affectedRows };
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
client.release();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
throw new Error("PostgresDialect can only be used in a Node.js environment.");
|
|
38
|
+
};
|
|
39
|
+
const getSchema = async () => {
|
|
40
|
+
var _a;
|
|
41
|
+
// Get tables (only public schema)
|
|
42
|
+
const client = await getConnection();
|
|
43
|
+
const tablesRes = await client.query(`
|
|
44
|
+
SELECT table_name
|
|
45
|
+
FROM information_schema.tables
|
|
46
|
+
WHERE table_schema = 'public';
|
|
47
|
+
`);
|
|
48
|
+
const schema = {};
|
|
49
|
+
for (const row of tablesRes.rows) {
|
|
50
|
+
const table = row.table_name;
|
|
51
|
+
schema[table] = [];
|
|
52
|
+
// Columns
|
|
53
|
+
const columnsRes = await client.query(`
|
|
54
|
+
SELECT
|
|
55
|
+
column_name AS name,
|
|
56
|
+
data_type AS type,
|
|
57
|
+
is_nullable,
|
|
58
|
+
column_default,
|
|
59
|
+
udt_name
|
|
60
|
+
FROM information_schema.columns
|
|
61
|
+
WHERE table_schema = 'public'
|
|
62
|
+
AND table_name = '${table}';
|
|
63
|
+
`);
|
|
64
|
+
// Indexes
|
|
65
|
+
const indexesRes = await client.query(`
|
|
66
|
+
SELECT
|
|
67
|
+
i.relname AS index_name,
|
|
68
|
+
ix.indisunique AS unique,
|
|
69
|
+
a.attname AS column_name
|
|
70
|
+
FROM
|
|
71
|
+
pg_class t,
|
|
72
|
+
pg_class i,
|
|
73
|
+
pg_index ix,
|
|
74
|
+
pg_attribute a
|
|
75
|
+
WHERE
|
|
76
|
+
t.oid = ix.indrelid
|
|
77
|
+
AND i.oid = ix.indexrelid
|
|
78
|
+
AND a.attrelid = t.oid
|
|
79
|
+
AND a.attnum = ANY(ix.indkey)
|
|
80
|
+
AND t.relkind = 'r'
|
|
81
|
+
AND t.relname = '${table}';
|
|
82
|
+
`);
|
|
83
|
+
// Primary keys
|
|
84
|
+
const pkRes = await client.query(`
|
|
85
|
+
SELECT
|
|
86
|
+
kcu.column_name
|
|
87
|
+
FROM
|
|
88
|
+
information_schema.table_constraints tc
|
|
89
|
+
JOIN information_schema.key_column_usage kcu
|
|
90
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
91
|
+
WHERE
|
|
92
|
+
tc.constraint_type = 'PRIMARY KEY'
|
|
93
|
+
AND tc.table_name = '${table}';
|
|
94
|
+
`);
|
|
95
|
+
const pkColumns = pkRes.rows.map(r => r.column_name);
|
|
96
|
+
for (const col of columnsRes.rows) {
|
|
97
|
+
const colName = col.name;
|
|
98
|
+
const isIndexed = indexesRes.rows.some(i => i.column_name === colName);
|
|
99
|
+
const isUnique = indexesRes.rows.some(i => i.column_name === colName && i.unique);
|
|
100
|
+
schema[table].push({
|
|
101
|
+
name: colName,
|
|
102
|
+
type: (_a = col.udt_name) !== null && _a !== void 0 ? _a : col.type,
|
|
103
|
+
notnull: col.is_nullable === "NO",
|
|
104
|
+
default_value: col.column_default,
|
|
105
|
+
pk: pkColumns.includes(colName),
|
|
106
|
+
index: isIndexed,
|
|
107
|
+
unique: isUnique
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return schema;
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
engine: 'postgres',
|
|
115
|
+
execute,
|
|
116
|
+
getSchema
|
|
117
|
+
};
|
|
118
|
+
};exports.default=PostgresDialect;//# sourceMappingURL=PostgresDialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresDialect.js","sources":["../../src/dialect/PostgresDialect.ts"],"sourcesContent":["import { PoolConfig } from 'pg';\nimport { ExecuterResult } from '../core/type';\n\nlet postpres: typeof import('pg');\n\nconst PostgresDialect = (config: PoolConfig) => {\n let pool: import('pg').Pool;\n\n const getConnection = async () => {\n if (!postpres) postpres = await import('pg')\n if (!pool) pool = new postpres.Pool(config);\n return pool.connect()\n }\n\n const execute = async (sql: string): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n const client = await getConnection();\n try {\n let results: any;\n let insertId = 0;\n let affectedRows = 0;\n\n if (sql.startsWith('SELECT')) {\n const res = await client.query(sql);\n results = res.rows;\n affectedRows = res.rowCount || 0;\n } else {\n const res = await client.query(sql + ' RETURNING *'); // capture inserted rows\n results = res.rows;\n affectedRows = res.rowCount || 0;\n if (results[0] && 'id' in results[0]) {\n insertId = results[0].id; // assumes primary key column is `id`\n }\n }\n return { results, insertId, affectedRows };\n } finally {\n client.release();\n }\n }\n throw new Error(\"PostgresDialect can only be used in a Node.js environment.\");\n };\n\n\n\n const getSchema = async () => {\n // Get tables (only public schema)\n const client = await getConnection();\n const tablesRes = await client.query(`\n SELECT table_name \n FROM information_schema.tables\n WHERE table_schema = 'public';\n `);\n\n const schema: Record<string, any[]> = {};\n\n for (const row of tablesRes.rows) {\n const table = row.table_name;\n schema[table] = [];\n\n // Columns\n const columnsRes = await client.query(`\n SELECT \n column_name AS name,\n data_type AS type,\n is_nullable,\n column_default,\n udt_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = '${table}';\n `);\n\n // Indexes\n const indexesRes = await client.query(`\n SELECT\n i.relname AS index_name,\n ix.indisunique AS unique,\n a.attname AS column_name\n FROM \n pg_class t,\n pg_class i,\n pg_index ix,\n pg_attribute a\n WHERE \n t.oid = ix.indrelid\n AND i.oid = ix.indexrelid\n AND a.attrelid = t.oid\n AND a.attnum = ANY(ix.indkey)\n AND t.relkind = 'r'\n AND t.relname = '${table}';\n `);\n\n // Primary keys\n const pkRes = await client.query(`\n SELECT\n kcu.column_name\n FROM \n information_schema.table_constraints tc\n JOIN information_schema.key_column_usage kcu \n ON tc.constraint_name = kcu.constraint_name\n WHERE \n tc.constraint_type = 'PRIMARY KEY'\n AND tc.table_name = '${table}';\n `);\n\n const pkColumns = pkRes.rows.map(r => r.column_name);\n\n for (const col of columnsRes.rows) {\n const colName = col.name;\n\n const isIndexed = indexesRes.rows.some(i => i.column_name === colName);\n const isUnique = indexesRes.rows.some(i => i.column_name === colName && i.unique);\n\n schema[table].push({\n name: colName,\n type: col.udt_name ?? col.type,\n notnull: col.is_nullable === \"NO\",\n default_value: col.column_default,\n pk: pkColumns.includes(colName),\n index: isIndexed,\n unique: isUnique\n });\n }\n }\n\n return schema;\n };\n\n\n return {\n engine: 'postgres' as const,\n execute,\n getSchema\n };\n};\n\nexport default PostgresDialect;\n"],"names":[],"mappings":"sEAGA,IAAI,QAA6B;AAEjC,MAAM,eAAe,GAAG,CAAC,MAAkB,KAAI;AAC5C,IAAA,IAAI,IAAuB;AAE3B,IAAA,MAAM,aAAa,GAAG,YAAW;AAC9B,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,QAAQ,GAAG,MAAM,OAAO,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;AACxB,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,OAAO,GAAW,KAA6B;AAC5D,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE;AACpC,YAAA,IAAI;AACD,gBAAA,IAAI,OAAY;gBAChB,IAAI,QAAQ,GAAG,CAAC;gBAChB,IAAI,YAAY,GAAG,CAAC;AAEpB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,oBAAA,OAAO,GAAG,GAAG,CAAC,IAAI;AAClB,oBAAA,YAAY,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC;gBACnC;qBAAO;AACJ,oBAAA,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;AACrD,oBAAA,OAAO,GAAG,GAAG,CAAC,IAAI;AAClB,oBAAA,YAAY,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC;AAChC,oBAAA,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;wBACnC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5B;gBACH;AACA,gBAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE;YAC7C;oBAAU;gBACP,MAAM,CAAC,OAAO,EAAE;YACnB;QACH;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;AAChF,IAAA,CAAC;AAID,IAAA,MAAM,SAAS,GAAG,YAAW;;;AAE1B,QAAA,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE;AACpC,QAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;AAInC,OAAA,CAAA,CAAC;QAEH,MAAM,MAAM,GAA0B,EAAE;AAExC,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE;AAC/B,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU;AAC5B,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;;AAGlB,YAAA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;4BASnB,KAAK,CAAA;AAC5B,IAAA,CAAA,CAAC;;AAGG,YAAA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;2BAgBpB,KAAK,CAAA;AAC3B,IAAA,CAAA,CAAC;;AAGG,YAAA,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;+BASX,KAAK,CAAA;AAC/B,IAAA,CAAA,CAAC;AAEG,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AAEpD,YAAA,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE;AAChC,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI;AAExB,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC;gBACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC;AAEjF,gBAAA,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAChB,oBAAA,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAA,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG,CAAC,IAAI;AAC9B,oBAAA,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,IAAI;oBACjC,aAAa,EAAE,GAAG,CAAC,cAAc;AACjC,oBAAA,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,MAAM,EAAE;AACV,iBAAA,CAAC;YACL;QACH;AAEA,QAAA,OAAO,MAAM;AAChB,IAAA,CAAC;IAGD,OAAO;AACJ,QAAA,MAAM,EAAE,UAAmB;QAC3B,OAAO;QACP;KACF;AACJ"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
let postpres;
|
|
2
|
+
const PostgresDialect = (config) => {
|
|
3
|
+
let pool;
|
|
4
|
+
const getConnection = async () => {
|
|
5
|
+
if (!postpres)
|
|
6
|
+
postpres = await import('pg');
|
|
7
|
+
if (!pool)
|
|
8
|
+
pool = new postpres.Pool(config);
|
|
9
|
+
return pool.connect();
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql) => {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
const client = await getConnection();
|
|
14
|
+
try {
|
|
15
|
+
let results;
|
|
16
|
+
let insertId = 0;
|
|
17
|
+
let affectedRows = 0;
|
|
18
|
+
if (sql.startsWith('SELECT')) {
|
|
19
|
+
const res = await client.query(sql);
|
|
20
|
+
results = res.rows;
|
|
21
|
+
affectedRows = res.rowCount || 0;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const res = await client.query(sql + ' RETURNING *'); // capture inserted rows
|
|
25
|
+
results = res.rows;
|
|
26
|
+
affectedRows = res.rowCount || 0;
|
|
27
|
+
if (results[0] && 'id' in results[0]) {
|
|
28
|
+
insertId = results[0].id; // assumes primary key column is `id`
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { results, insertId, affectedRows };
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
client.release();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
throw new Error("PostgresDialect can only be used in a Node.js environment.");
|
|
38
|
+
};
|
|
39
|
+
const getSchema = async () => {
|
|
40
|
+
var _a;
|
|
41
|
+
// Get tables (only public schema)
|
|
42
|
+
const client = await getConnection();
|
|
43
|
+
const tablesRes = await client.query(`
|
|
44
|
+
SELECT table_name
|
|
45
|
+
FROM information_schema.tables
|
|
46
|
+
WHERE table_schema = 'public';
|
|
47
|
+
`);
|
|
48
|
+
const schema = {};
|
|
49
|
+
for (const row of tablesRes.rows) {
|
|
50
|
+
const table = row.table_name;
|
|
51
|
+
schema[table] = [];
|
|
52
|
+
// Columns
|
|
53
|
+
const columnsRes = await client.query(`
|
|
54
|
+
SELECT
|
|
55
|
+
column_name AS name,
|
|
56
|
+
data_type AS type,
|
|
57
|
+
is_nullable,
|
|
58
|
+
column_default,
|
|
59
|
+
udt_name
|
|
60
|
+
FROM information_schema.columns
|
|
61
|
+
WHERE table_schema = 'public'
|
|
62
|
+
AND table_name = '${table}';
|
|
63
|
+
`);
|
|
64
|
+
// Indexes
|
|
65
|
+
const indexesRes = await client.query(`
|
|
66
|
+
SELECT
|
|
67
|
+
i.relname AS index_name,
|
|
68
|
+
ix.indisunique AS unique,
|
|
69
|
+
a.attname AS column_name
|
|
70
|
+
FROM
|
|
71
|
+
pg_class t,
|
|
72
|
+
pg_class i,
|
|
73
|
+
pg_index ix,
|
|
74
|
+
pg_attribute a
|
|
75
|
+
WHERE
|
|
76
|
+
t.oid = ix.indrelid
|
|
77
|
+
AND i.oid = ix.indexrelid
|
|
78
|
+
AND a.attrelid = t.oid
|
|
79
|
+
AND a.attnum = ANY(ix.indkey)
|
|
80
|
+
AND t.relkind = 'r'
|
|
81
|
+
AND t.relname = '${table}';
|
|
82
|
+
`);
|
|
83
|
+
// Primary keys
|
|
84
|
+
const pkRes = await client.query(`
|
|
85
|
+
SELECT
|
|
86
|
+
kcu.column_name
|
|
87
|
+
FROM
|
|
88
|
+
information_schema.table_constraints tc
|
|
89
|
+
JOIN information_schema.key_column_usage kcu
|
|
90
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
91
|
+
WHERE
|
|
92
|
+
tc.constraint_type = 'PRIMARY KEY'
|
|
93
|
+
AND tc.table_name = '${table}';
|
|
94
|
+
`);
|
|
95
|
+
const pkColumns = pkRes.rows.map(r => r.column_name);
|
|
96
|
+
for (const col of columnsRes.rows) {
|
|
97
|
+
const colName = col.name;
|
|
98
|
+
const isIndexed = indexesRes.rows.some(i => i.column_name === colName);
|
|
99
|
+
const isUnique = indexesRes.rows.some(i => i.column_name === colName && i.unique);
|
|
100
|
+
schema[table].push({
|
|
101
|
+
name: colName,
|
|
102
|
+
type: (_a = col.udt_name) !== null && _a !== void 0 ? _a : col.type,
|
|
103
|
+
notnull: col.is_nullable === "NO",
|
|
104
|
+
default_value: col.column_default,
|
|
105
|
+
pk: pkColumns.includes(colName),
|
|
106
|
+
index: isIndexed,
|
|
107
|
+
unique: isUnique
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return schema;
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
engine: 'postgres',
|
|
115
|
+
execute,
|
|
116
|
+
getSchema
|
|
117
|
+
};
|
|
118
|
+
};export{PostgresDialect as default};//# sourceMappingURL=PostgresDialect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresDialect.mjs","sources":["../../src/dialect/PostgresDialect.ts"],"sourcesContent":["import { PoolConfig } from 'pg';\nimport { ExecuterResult } from '../core/type';\n\nlet postpres: typeof import('pg');\n\nconst PostgresDialect = (config: PoolConfig) => {\n let pool: import('pg').Pool;\n\n const getConnection = async () => {\n if (!postpres) postpres = await import('pg')\n if (!pool) pool = new postpres.Pool(config);\n return pool.connect()\n }\n\n const execute = async (sql: string): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n const client = await getConnection();\n try {\n let results: any;\n let insertId = 0;\n let affectedRows = 0;\n\n if (sql.startsWith('SELECT')) {\n const res = await client.query(sql);\n results = res.rows;\n affectedRows = res.rowCount || 0;\n } else {\n const res = await client.query(sql + ' RETURNING *'); // capture inserted rows\n results = res.rows;\n affectedRows = res.rowCount || 0;\n if (results[0] && 'id' in results[0]) {\n insertId = results[0].id; // assumes primary key column is `id`\n }\n }\n return { results, insertId, affectedRows };\n } finally {\n client.release();\n }\n }\n throw new Error(\"PostgresDialect can only be used in a Node.js environment.\");\n };\n\n\n\n const getSchema = async () => {\n // Get tables (only public schema)\n const client = await getConnection();\n const tablesRes = await client.query(`\n SELECT table_name \n FROM information_schema.tables\n WHERE table_schema = 'public';\n `);\n\n const schema: Record<string, any[]> = {};\n\n for (const row of tablesRes.rows) {\n const table = row.table_name;\n schema[table] = [];\n\n // Columns\n const columnsRes = await client.query(`\n SELECT \n column_name AS name,\n data_type AS type,\n is_nullable,\n column_default,\n udt_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = '${table}';\n `);\n\n // Indexes\n const indexesRes = await client.query(`\n SELECT\n i.relname AS index_name,\n ix.indisunique AS unique,\n a.attname AS column_name\n FROM \n pg_class t,\n pg_class i,\n pg_index ix,\n pg_attribute a\n WHERE \n t.oid = ix.indrelid\n AND i.oid = ix.indexrelid\n AND a.attrelid = t.oid\n AND a.attnum = ANY(ix.indkey)\n AND t.relkind = 'r'\n AND t.relname = '${table}';\n `);\n\n // Primary keys\n const pkRes = await client.query(`\n SELECT\n kcu.column_name\n FROM \n information_schema.table_constraints tc\n JOIN information_schema.key_column_usage kcu \n ON tc.constraint_name = kcu.constraint_name\n WHERE \n tc.constraint_type = 'PRIMARY KEY'\n AND tc.table_name = '${table}';\n `);\n\n const pkColumns = pkRes.rows.map(r => r.column_name);\n\n for (const col of columnsRes.rows) {\n const colName = col.name;\n\n const isIndexed = indexesRes.rows.some(i => i.column_name === colName);\n const isUnique = indexesRes.rows.some(i => i.column_name === colName && i.unique);\n\n schema[table].push({\n name: colName,\n type: col.udt_name ?? col.type,\n notnull: col.is_nullable === \"NO\",\n default_value: col.column_default,\n pk: pkColumns.includes(colName),\n index: isIndexed,\n unique: isUnique\n });\n }\n }\n\n return schema;\n };\n\n\n return {\n engine: 'postgres' as const,\n execute,\n getSchema\n };\n};\n\nexport default PostgresDialect;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExecuterResult, XansqlDialectSchemaType } from '../core/type.js';
|
|
2
|
+
|
|
3
|
+
declare const SqliteDialect: (filePath?: string) => {
|
|
4
|
+
engine: "sqlite";
|
|
5
|
+
execute: (sql: string) => Promise<ExecuterResult>;
|
|
6
|
+
getSchema: () => Promise<XansqlDialectSchemaType | undefined>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { SqliteDialect as default };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});let sqlite;
|
|
2
|
+
const SqliteDialect = (filePath = ':memory:') => {
|
|
3
|
+
let instance;
|
|
4
|
+
const getDb = async () => {
|
|
5
|
+
if (!sqlite)
|
|
6
|
+
sqlite = (await import('better-sqlite3')).default;
|
|
7
|
+
if (!instance)
|
|
8
|
+
instance = new sqlite(filePath);
|
|
9
|
+
return instance;
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql) => {
|
|
12
|
+
if (typeof window === "undefined") {
|
|
13
|
+
const db = await getDb();
|
|
14
|
+
let results;
|
|
15
|
+
let insertId = 0;
|
|
16
|
+
let affectedRows = 0;
|
|
17
|
+
// Detect query type
|
|
18
|
+
if (sql.startsWith('SELECT')) {
|
|
19
|
+
results = db.prepare(sql).all();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const stmt = db.prepare(sql);
|
|
23
|
+
const info = stmt.run();
|
|
24
|
+
results = info;
|
|
25
|
+
insertId = info.lastInsertRowid ? Number(info.lastInsertRowid) : 0;
|
|
26
|
+
affectedRows = info.changes || 0;
|
|
27
|
+
}
|
|
28
|
+
return { results, insertId, affectedRows };
|
|
29
|
+
}
|
|
30
|
+
throw new Error('SqliteDialect can only be used in a Node.js environment.');
|
|
31
|
+
};
|
|
32
|
+
const getSchema = async () => {
|
|
33
|
+
if (typeof window === "undefined") {
|
|
34
|
+
const db = await getDb();
|
|
35
|
+
const tablesRes = db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';`).all();
|
|
36
|
+
const tables = tablesRes.map((row) => row.name);
|
|
37
|
+
const schema = {};
|
|
38
|
+
for (const table of tables) {
|
|
39
|
+
const columnsRes = db.prepare(`PRAGMA table_info(${table});`).all();
|
|
40
|
+
const indexesRes = db.prepare(`PRAGMA index_list(${table});`).all();
|
|
41
|
+
schema[table] = columnsRes.map((col) => ({
|
|
42
|
+
name: col.name,
|
|
43
|
+
type: col.type,
|
|
44
|
+
notnull: col.notnull,
|
|
45
|
+
default_value: col.dflt_value,
|
|
46
|
+
pk: col.pk,
|
|
47
|
+
index: indexesRes.some((idx) => {
|
|
48
|
+
const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();
|
|
49
|
+
return idxInfo.some((info) => info.name === col.name);
|
|
50
|
+
}),
|
|
51
|
+
unique: indexesRes.some((idx) => idx.unique && (() => {
|
|
52
|
+
const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();
|
|
53
|
+
return idxInfo.some((info) => info.name === col.name);
|
|
54
|
+
})()),
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
return schema;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
engine: 'sqlite',
|
|
62
|
+
execute,
|
|
63
|
+
getSchema
|
|
64
|
+
};
|
|
65
|
+
};exports.default=SqliteDialect;//# sourceMappingURL=SqliteDialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteDialect.js","sources":["../../src/dialect/SqliteDialect.ts"],"sourcesContent":["import Database from 'better-sqlite3';\nimport { ExecuterResult, XansqlDialectSchemaType } from '../core/type';\n\nlet sqlite: typeof import('better-sqlite3');\n\nconst SqliteDialect = (filePath: string = ':memory:') => {\n let instance: Database.Database;\n const getDb = async () => {\n if (!sqlite) sqlite = (await import('better-sqlite3')).default;\n if (!instance) instance = new sqlite(filePath);\n return instance;\n }\n\n const execute = async (sql: string): Promise<ExecuterResult> => {\n if (typeof window === \"undefined\") {\n const db = await getDb()\n let results: any;\n let insertId = 0;\n let affectedRows = 0;\n\n // Detect query type\n if (sql.startsWith('SELECT')) {\n results = db.prepare(sql).all();\n } else {\n const stmt = db.prepare(sql);\n const info = stmt.run();\n results = info;\n insertId = info.lastInsertRowid ? Number(info.lastInsertRowid) : 0;\n affectedRows = info.changes || 0;\n }\n return { results, insertId, affectedRows };\n }\n\n throw new Error('SqliteDialect can only be used in a Node.js environment.');\n };\n\n const getSchema = async () => {\n if (typeof window === \"undefined\") {\n const db = await getDb()\n const tablesRes = db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';`).all();\n const tables = tablesRes.map((row: any) => row.name);\n const schema: XansqlDialectSchemaType = {};\n\n for (const table of tables) {\n const columnsRes = db.prepare(`PRAGMA table_info(${table});`).all();\n const indexesRes = db.prepare(`PRAGMA index_list(${table});`).all();\n\n schema[table] = columnsRes.map((col: any) => ({\n name: col.name,\n type: col.type,\n notnull: col.notnull,\n default_value: col.dflt_value,\n pk: col.pk,\n index: indexesRes.some((idx: any) => {\n const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();\n return idxInfo.some((info: any) => info.name === col.name);\n }),\n unique: indexesRes.some((idx: any) => idx.unique && (() => {\n const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();\n return idxInfo.some((info: any) => info.name === col.name);\n })()),\n }));\n }\n return schema;\n }\n }\n\n return {\n engine: 'sqlite' as const,\n execute,\n getSchema\n };\n};\n\nexport default SqliteDialect;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
let sqlite;
|
|
2
|
+
const SqliteDialect = (filePath = ':memory:') => {
|
|
3
|
+
let instance;
|
|
4
|
+
const getDb = async () => {
|
|
5
|
+
if (!sqlite)
|
|
6
|
+
sqlite = (await import('better-sqlite3')).default;
|
|
7
|
+
if (!instance)
|
|
8
|
+
instance = new sqlite(filePath);
|
|
9
|
+
return instance;
|
|
10
|
+
};
|
|
11
|
+
const execute = async (sql) => {
|
|
12
|
+
if (typeof window === "undefined") {
|
|
13
|
+
const db = await getDb();
|
|
14
|
+
let results;
|
|
15
|
+
let insertId = 0;
|
|
16
|
+
let affectedRows = 0;
|
|
17
|
+
// Detect query type
|
|
18
|
+
if (sql.startsWith('SELECT')) {
|
|
19
|
+
results = db.prepare(sql).all();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const stmt = db.prepare(sql);
|
|
23
|
+
const info = stmt.run();
|
|
24
|
+
results = info;
|
|
25
|
+
insertId = info.lastInsertRowid ? Number(info.lastInsertRowid) : 0;
|
|
26
|
+
affectedRows = info.changes || 0;
|
|
27
|
+
}
|
|
28
|
+
return { results, insertId, affectedRows };
|
|
29
|
+
}
|
|
30
|
+
throw new Error('SqliteDialect can only be used in a Node.js environment.');
|
|
31
|
+
};
|
|
32
|
+
const getSchema = async () => {
|
|
33
|
+
if (typeof window === "undefined") {
|
|
34
|
+
const db = await getDb();
|
|
35
|
+
const tablesRes = db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';`).all();
|
|
36
|
+
const tables = tablesRes.map((row) => row.name);
|
|
37
|
+
const schema = {};
|
|
38
|
+
for (const table of tables) {
|
|
39
|
+
const columnsRes = db.prepare(`PRAGMA table_info(${table});`).all();
|
|
40
|
+
const indexesRes = db.prepare(`PRAGMA index_list(${table});`).all();
|
|
41
|
+
schema[table] = columnsRes.map((col) => ({
|
|
42
|
+
name: col.name,
|
|
43
|
+
type: col.type,
|
|
44
|
+
notnull: col.notnull,
|
|
45
|
+
default_value: col.dflt_value,
|
|
46
|
+
pk: col.pk,
|
|
47
|
+
index: indexesRes.some((idx) => {
|
|
48
|
+
const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();
|
|
49
|
+
return idxInfo.some((info) => info.name === col.name);
|
|
50
|
+
}),
|
|
51
|
+
unique: indexesRes.some((idx) => idx.unique && (() => {
|
|
52
|
+
const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();
|
|
53
|
+
return idxInfo.some((info) => info.name === col.name);
|
|
54
|
+
})()),
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
return schema;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
engine: 'sqlite',
|
|
62
|
+
execute,
|
|
63
|
+
getSchema
|
|
64
|
+
};
|
|
65
|
+
};export{SqliteDialect as default};//# sourceMappingURL=SqliteDialect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteDialect.mjs","sources":["../../src/dialect/SqliteDialect.ts"],"sourcesContent":["import Database from 'better-sqlite3';\nimport { ExecuterResult, XansqlDialectSchemaType } from '../core/type';\n\nlet sqlite: typeof import('better-sqlite3');\n\nconst SqliteDialect = (filePath: string = ':memory:') => {\n let instance: Database.Database;\n const getDb = async () => {\n if (!sqlite) sqlite = (await import('better-sqlite3')).default;\n if (!instance) instance = new sqlite(filePath);\n return instance;\n }\n\n const execute = async (sql: string): Promise<ExecuterResult> => {\n if (typeof window === \"undefined\") {\n const db = await getDb()\n let results: any;\n let insertId = 0;\n let affectedRows = 0;\n\n // Detect query type\n if (sql.startsWith('SELECT')) {\n results = db.prepare(sql).all();\n } else {\n const stmt = db.prepare(sql);\n const info = stmt.run();\n results = info;\n insertId = info.lastInsertRowid ? Number(info.lastInsertRowid) : 0;\n affectedRows = info.changes || 0;\n }\n return { results, insertId, affectedRows };\n }\n\n throw new Error('SqliteDialect can only be used in a Node.js environment.');\n };\n\n const getSchema = async () => {\n if (typeof window === \"undefined\") {\n const db = await getDb()\n const tablesRes = db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';`).all();\n const tables = tablesRes.map((row: any) => row.name);\n const schema: XansqlDialectSchemaType = {};\n\n for (const table of tables) {\n const columnsRes = db.prepare(`PRAGMA table_info(${table});`).all();\n const indexesRes = db.prepare(`PRAGMA index_list(${table});`).all();\n\n schema[table] = columnsRes.map((col: any) => ({\n name: col.name,\n type: col.type,\n notnull: col.notnull,\n default_value: col.dflt_value,\n pk: col.pk,\n index: indexesRes.some((idx: any) => {\n const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();\n return idxInfo.some((info: any) => info.name === col.name);\n }),\n unique: indexesRes.some((idx: any) => idx.unique && (() => {\n const idxInfo = db.prepare(`PRAGMA index_info(${idx.name});`).all();\n return idxInfo.some((info: any) => info.name === col.name);\n })()),\n }));\n }\n return schema;\n }\n }\n\n return {\n engine: 'sqlite' as const,\n execute,\n getSchema\n };\n};\n\nexport default SqliteDialect;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { XansqlFileConfig } from '../core/type.js';
|
|
2
|
+
|
|
3
|
+
type FileInDirectoryOptions = {
|
|
4
|
+
dir?: string;
|
|
5
|
+
maxFilesize?: number;
|
|
6
|
+
checkFileType?: boolean;
|
|
7
|
+
chunkSize?: number;
|
|
8
|
+
};
|
|
9
|
+
declare const FileInDirectory: (options: FileInDirectoryOptions) => XansqlFileConfig;
|
|
10
|
+
|
|
11
|
+
export { FileInDirectory as default };
|
|
12
|
+
export type { FileInDirectoryOptions };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});let fs;
|
|
2
|
+
let path;
|
|
3
|
+
const FileInDirectory = (options) => {
|
|
4
|
+
let dir = options.dir || 'uploads';
|
|
5
|
+
return {
|
|
6
|
+
maxFilesize: options.maxFilesize,
|
|
7
|
+
checkFileType: options.checkFileType,
|
|
8
|
+
chunkSize: options.chunkSize,
|
|
9
|
+
upload: async (chunk, filemeta) => {
|
|
10
|
+
fs = fs || await import('fs');
|
|
11
|
+
path = path || await import('path');
|
|
12
|
+
const uploadDir = path.join(process.cwd(), dir);
|
|
13
|
+
if (!fs.existsSync(uploadDir))
|
|
14
|
+
fs.mkdirSync(uploadDir);
|
|
15
|
+
const filePath = path.join(uploadDir, filemeta.fileId);
|
|
16
|
+
fs.appendFileSync(filePath, Buffer.from(chunk));
|
|
17
|
+
},
|
|
18
|
+
delete: async (fileId) => {
|
|
19
|
+
const fs = await import('fs');
|
|
20
|
+
const path = await import('path');
|
|
21
|
+
const filePath = path.join(process.cwd(), dir, fileId);
|
|
22
|
+
if (fs.existsSync(filePath)) {
|
|
23
|
+
fs.unlinkSync(filePath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};exports.default=FileInDirectory;//# sourceMappingURL=FileInDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileInDirectory.js","sources":["../../src/file/FileInDirectory.ts"],"sourcesContent":["import { XansqlFileConfig, XansqlFileMeta } from '../core/type';\n\nexport type FileInDirectoryOptions = {\n dir?: string;\n maxFilesize?: number;\n checkFileType?: boolean;\n chunkSize?: number;\n};\n\nlet fs: typeof import('fs');\nlet path: typeof import('path');\n\nconst FileInDirectory = (options: FileInDirectoryOptions): XansqlFileConfig => {\n let dir = options.dir || 'uploads';\n return {\n maxFilesize: options.maxFilesize,\n checkFileType: options.checkFileType,\n chunkSize: options.chunkSize,\n upload: async (chunk: Uint8Array, filemeta: XansqlFileMeta) => {\n fs = fs || await import('fs');\n path = path || await import('path');\n\n const uploadDir = path.join(process.cwd(), dir);\n if (!fs.existsSync(uploadDir)) fs.mkdirSync(uploadDir);\n\n const filePath = path.join(uploadDir, filemeta.fileId);\n\n fs.appendFileSync(filePath, Buffer.from(chunk));\n\n },\n delete: async (fileId: string) => {\n const fs = await import('fs');\n const path = await import('path');\n const filePath = path.join(process.cwd(), dir, fileId);\n if (fs.existsSync(filePath)) {\n fs.unlinkSync(filePath);\n }\n }\n };\n};\n\n\nexport default FileInDirectory;"],"names":[],"mappings":"sEASA,IAAI,EAAuB;AAC3B,IAAI,IAA2B;AAE/B,MAAM,eAAe,GAAG,CAAC,OAA+B,KAAsB;AAC3E,IAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS;IAClC,OAAO;QACJ,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,QAAA,MAAM,EAAE,OAAO,KAAiB,EAAE,QAAwB,KAAI;YAC3D,EAAE,GAAG,EAAE,IAAI,MAAM,OAAO,IAAI,CAAC;YAC7B,IAAI,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AAEtD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;AAEtD,YAAA,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,CAAC;AACD,QAAA,MAAM,EAAE,OAAO,MAAc,KAAI;AAC9B,YAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC;AAC7B,YAAA,MAAM,IAAI,GAAG,MAAM,OAAO,MAAM,CAAC;AACjC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1B,gBAAA,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1B;QACH;KACF;AACJ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
let fs;
|
|
2
|
+
let path;
|
|
3
|
+
const FileInDirectory = (options) => {
|
|
4
|
+
let dir = options.dir || 'uploads';
|
|
5
|
+
return {
|
|
6
|
+
maxFilesize: options.maxFilesize,
|
|
7
|
+
checkFileType: options.checkFileType,
|
|
8
|
+
chunkSize: options.chunkSize,
|
|
9
|
+
upload: async (chunk, filemeta) => {
|
|
10
|
+
fs = fs || await import('fs');
|
|
11
|
+
path = path || await import('path');
|
|
12
|
+
const uploadDir = path.join(process.cwd(), dir);
|
|
13
|
+
if (!fs.existsSync(uploadDir))
|
|
14
|
+
fs.mkdirSync(uploadDir);
|
|
15
|
+
const filePath = path.join(uploadDir, filemeta.fileId);
|
|
16
|
+
fs.appendFileSync(filePath, Buffer.from(chunk));
|
|
17
|
+
},
|
|
18
|
+
delete: async (fileId) => {
|
|
19
|
+
const fs = await import('fs');
|
|
20
|
+
const path = await import('path');
|
|
21
|
+
const filePath = path.join(process.cwd(), dir, fileId);
|
|
22
|
+
if (fs.existsSync(filePath)) {
|
|
23
|
+
fs.unlinkSync(filePath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};export{FileInDirectory as default};//# sourceMappingURL=FileInDirectory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileInDirectory.mjs","sources":["../../src/file/FileInDirectory.ts"],"sourcesContent":["import { XansqlFileConfig, XansqlFileMeta } from '../core/type';\n\nexport type FileInDirectoryOptions = {\n dir?: string;\n maxFilesize?: number;\n checkFileType?: boolean;\n chunkSize?: number;\n};\n\nlet fs: typeof import('fs');\nlet path: typeof import('path');\n\nconst FileInDirectory = (options: FileInDirectoryOptions): XansqlFileConfig => {\n let dir = options.dir || 'uploads';\n return {\n maxFilesize: options.maxFilesize,\n checkFileType: options.checkFileType,\n chunkSize: options.chunkSize,\n upload: async (chunk: Uint8Array, filemeta: XansqlFileMeta) => {\n fs = fs || await import('fs');\n path = path || await import('path');\n\n const uploadDir = path.join(process.cwd(), dir);\n if (!fs.existsSync(uploadDir)) fs.mkdirSync(uploadDir);\n\n const filePath = path.join(uploadDir, filemeta.fileId);\n\n fs.appendFileSync(filePath, Buffer.from(chunk));\n\n },\n delete: async (fileId: string) => {\n const fs = await import('fs');\n const path = await import('path');\n const filePath = path.join(process.cwd(), dir, fileId);\n if (fs.existsSync(filePath)) {\n fs.unlinkSync(filePath);\n }\n }\n };\n};\n\n\nexport default FileInDirectory;"],"names":[],"mappings":"AASA,IAAI,EAAuB;AAC3B,IAAI,IAA2B;AAE/B,MAAM,eAAe,GAAG,CAAC,OAA+B,KAAsB;AAC3E,IAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS;IAClC,OAAO;QACJ,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,QAAA,MAAM,EAAE,OAAO,KAAiB,EAAE,QAAwB,KAAI;YAC3D,EAAE,GAAG,EAAE,IAAI,MAAM,OAAO,IAAI,CAAC;YAC7B,IAAI,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AAEtD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;AAEtD,YAAA,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,CAAC;AACD,QAAA,MAAM,EAAE,OAAO,MAAc,KAAI;AAC9B,YAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC;AAC7B,YAAA,MAAM,IAAI,GAAG,MAAM,OAAO,MAAM,CAAC;AACjC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1B,gBAAA,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1B;QACH;KACF;AACJ"}
|
package/index.d.ts
CHANGED
|
@@ -4,3 +4,7 @@ export { default as xt } from './Types/index.js';
|
|
|
4
4
|
export { ExecuterResult, ResultData, RowObject, XansqlCache, XansqlConfigType, XansqlConfigTypeRequired, XansqlConnectionOptions, XansqlDialect, XansqlDialectEngine, XansqlDialectSchemaColumn, XansqlDialectSchemaType, XansqlFetchConfig, XansqlFetchMethod, XansqlFetchPermissionInfo, XansqlFetchUrl, XansqlFileConfig, XansqlFileMeta, XansqlModelOptions, XansqlOnFetchInfo, XansqlOnFetchResponse, XansqlSocket } from './core/type.js';
|
|
5
5
|
export { AggregateArgsType, AggregateFunctions, AggregateSelectArgsColumnType, AggregateSelectArgsType, CreateArgsType, DataArgsType, DataValue, DeleteArgsType, DistinctArgsType, FindArgsAggregate, FindArgsType, LimitArgsType, OrderByArgsType, SelectArgsType, UpdateArgsType, UpdateDataArgsType, UpdateDataRelationArgs, WhereArgsType, WhereArgsTypeValue, WhereSubCondition } from './model/type.js';
|
|
6
6
|
export { XansqlSchemaObject, XqlFields } from './Types/types.js';
|
|
7
|
+
export { default as MysqlDialect } from './dialect/MysqlDialect.js';
|
|
8
|
+
export { default as SqliteDialect } from './dialect/SqliteDialect.js';
|
|
9
|
+
export { default as PostgresDialect } from './dialect/PostgresDialect.js';
|
|
10
|
+
export { default as FileInDirectory } from './file/FileInDirectory.js';
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var Xansql=require('./core/Xansql.js'),index=require('./model/index.js'),index$1=require('./Types/index.js');exports.Xansql=Xansql.default;exports.Model=index.default;exports.xt=index$1.xt;//# sourceMappingURL=index.js.map
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var Xansql=require('./core/Xansql.js'),index=require('./model/index.js'),index$1=require('./Types/index.js'),MysqlDialect=require('./dialect/MysqlDialect.js'),SqliteDialect=require('./dialect/SqliteDialect.js'),PostgresDialect=require('./dialect/PostgresDialect.js'),FileInDirectory=require('./file/FileInDirectory.js');exports.Xansql=Xansql.default;exports.Model=index.default;exports.xt=index$1.xt;exports.MysqlDialect=MysqlDialect.default;exports.SqliteDialect=SqliteDialect.default;exports.PostgresDialect=PostgresDialect.default;exports.FileInDirectory=FileInDirectory.default;//# sourceMappingURL=index.js.map
|
package/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{default as Xansql}from'./core/Xansql.mjs';export{default as Model}from'./model/index.mjs';export{xt}from'./Types/index.mjs';//# sourceMappingURL=index.mjs.map
|
|
1
|
+
export{default as Xansql}from'./core/Xansql.mjs';export{default as Model}from'./model/index.mjs';export{xt}from'./Types/index.mjs';export{default as MysqlDialect}from'./dialect/MysqlDialect.mjs';export{default as SqliteDialect}from'./dialect/SqliteDialect.mjs';export{default as PostgresDialect}from'./dialect/PostgresDialect.mjs';export{default as FileInDirectory}from'./file/FileInDirectory.mjs';//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xansql",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"module": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -28,22 +28,5 @@
|
|
|
28
28
|
"react-dom": "^19.1.0",
|
|
29
29
|
"tslib": "^2.8.1",
|
|
30
30
|
"typescript": "^5.9.3"
|
|
31
|
-
},
|
|
32
|
-
"exports": {
|
|
33
|
-
".": {
|
|
34
|
-
"import": "./index.js",
|
|
35
|
-
"require": "./index.js",
|
|
36
|
-
"types": "./index.d.ts"
|
|
37
|
-
},
|
|
38
|
-
"./Dialect/*": {
|
|
39
|
-
"import": "./Dialect/*.js",
|
|
40
|
-
"require": "./Dialect/*.js",
|
|
41
|
-
"types": "./Dialect/*.d.ts"
|
|
42
|
-
},
|
|
43
|
-
"./FileHandler/*": {
|
|
44
|
-
"import": "./FileHandler/*.js",
|
|
45
|
-
"require": "./FileHandler/*.js",
|
|
46
|
-
"types": "./FileHandler/*.d.ts"
|
|
47
|
-
}
|
|
48
31
|
}
|
|
49
32
|
}
|