@wvkit/skevdb 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -0
- package/bin/aldb.js +58 -0
- package/build/client/_app/immutable/assets/0.4921WYCN.css +2 -0
- package/build/client/_app/immutable/assets/0.4921WYCN.css.br +0 -0
- package/build/client/_app/immutable/assets/0.4921WYCN.css.gz +0 -0
- package/build/client/_app/immutable/assets/codicon.ngg6Pgfi.ttf +0 -0
- package/build/client/_app/immutable/assets/editor.DV6jjE6F.css +1 -0
- package/build/client/_app/immutable/assets/editor.DV6jjE6F.css.br +0 -0
- package/build/client/_app/immutable/assets/editor.DV6jjE6F.css.gz +0 -0
- package/build/client/_app/immutable/assets/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2 +0 -0
- package/build/client/_app/immutable/assets/geist-cyrillic-wght-normal.BEAKL7Jp.woff2 +0 -0
- package/build/client/_app/immutable/assets/geist-latin-ext-wght-normal.DC-KSUi6.woff2 +0 -0
- package/build/client/_app/immutable/assets/geist-latin-wght-normal.BgDaEnEv.woff2 +0 -0
- package/build/client/_app/immutable/assets/geist-vietnamese-wght-normal.6IgcOCM7.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/build/client/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-cyrillic-ext-wght-normal.DSNfmdVt.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-cyrillic-wght-normal.B2hlT84T.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-devanagari-wght-normal.Cv-Vwajv.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-greek-ext-wght-normal.12T8GTDR.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-greek-wght-normal.Ymb6dZNd.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-latin-ext-wght-normal.W1qJv59z.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-latin-wght-normal.BYSzYMf3.woff2 +0 -0
- package/build/client/_app/immutable/assets/noto-sans-vietnamese-wght-normal.DLTJy58D.woff2 +0 -0
- package/build/client/_app/immutable/assets/sql.FmGBn3YN.css +1 -0
- package/build/client/_app/immutable/assets/sql.FmGBn3YN.css.br +0 -0
- package/build/client/_app/immutable/assets/sql.FmGBn3YN.css.gz +0 -0
- package/build/client/_app/immutable/chunks/-u0aF6D6.js +1 -0
- package/build/client/_app/immutable/chunks/-u0aF6D6.js.br +2 -0
- package/build/client/_app/immutable/chunks/-u0aF6D6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BZYon8uW.js +1 -0
- package/build/client/_app/immutable/chunks/BZYon8uW.js.br +0 -0
- package/build/client/_app/immutable/chunks/BZYon8uW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CT_ExraQ.js +820 -0
- package/build/client/_app/immutable/chunks/CT_ExraQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CT_ExraQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUXBnqxM.js +53 -0
- package/build/client/_app/immutable/chunks/CUXBnqxM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUXBnqxM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CqQuHtWb.js +1 -0
- package/build/client/_app/immutable/chunks/CqQuHtWb.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqQuHtWb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DDJ7Hsqn.js +1 -0
- package/build/client/_app/immutable/chunks/DDJ7Hsqn.js.br +0 -0
- package/build/client/_app/immutable/chunks/DDJ7Hsqn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D_beq-47.js +3 -0
- package/build/client/_app/immutable/chunks/D_beq-47.js.br +0 -0
- package/build/client/_app/immutable/chunks/D_beq-47.js.gz +0 -0
- package/build/client/_app/immutable/chunks/NEE52Syq.js +1 -0
- package/build/client/_app/immutable/chunks/NEE52Syq.js.br +0 -0
- package/build/client/_app/immutable/chunks/NEE52Syq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/h8jGUf5s.js +1 -0
- package/build/client/_app/immutable/chunks/h8jGUf5s.js.br +0 -0
- package/build/client/_app/immutable/chunks/h8jGUf5s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DmcKZPoo.js +2 -0
- package/build/client/_app/immutable/entry/app.DmcKZPoo.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DmcKZPoo.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.AWD7U8zX.js +1 -0
- package/build/client/_app/immutable/entry/start.AWD7U8zX.js.br +1 -0
- package/build/client/_app/immutable/entry/start.AWD7U8zX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D42BAFic.js +46 -0
- package/build/client/_app/immutable/nodes/0.D42BAFic.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D42BAFic.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.EnR_repC.js +1 -0
- package/build/client/_app/immutable/nodes/1.EnR_repC.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.EnR_repC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Daii4oR8.js +1 -0
- package/build/client/_app/immutable/nodes/2.Daii4oR8.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Daii4oR8.js.gz +0 -0
- package/build/client/_app/immutable/workers/editor.worker-Cn2oRESe.js +26 -0
- package/build/client/_app/immutable/workers/editor.worker-Cn2oRESe.js.br +0 -0
- package/build/client/_app/immutable/workers/editor.worker-Cn2oRESe.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/robots.txt +3 -0
- package/build/client/robots.txt.br +0 -0
- package/build/client/robots.txt.gz +0 -0
- package/build/env.js +94 -0
- package/build/handler.js +1494 -0
- package/build/index.js +345 -0
- package/build/server/chunks/0-2tF2h-sW.js +13 -0
- package/build/server/chunks/0-2tF2h-sW.js.map +1 -0
- package/build/server/chunks/1-uqT1he7Y.js +9 -0
- package/build/server/chunks/1-uqT1he7Y.js.map +1 -0
- package/build/server/chunks/2-WinpGkOi.js +9 -0
- package/build/server/chunks/2-WinpGkOi.js.map +1 -0
- package/build/server/chunks/_layout.svelte-BO0NOSiE.js +43521 -0
- package/build/server/chunks/_layout.svelte-BO0NOSiE.js.map +1 -0
- package/build/server/chunks/_page.svelte-BP2EdQl3.js +5 -0
- package/build/server/chunks/_page.svelte-BP2EdQl3.js.map +1 -0
- package/build/server/chunks/_server.ts-6mqhv5WM.js +30 -0
- package/build/server/chunks/_server.ts-6mqhv5WM.js.map +1 -0
- package/build/server/chunks/_server.ts-B7evxvHU.js +61 -0
- package/build/server/chunks/_server.ts-B7evxvHU.js.map +1 -0
- package/build/server/chunks/_server.ts-BN5QAzfI.js +89 -0
- package/build/server/chunks/_server.ts-BN5QAzfI.js.map +1 -0
- package/build/server/chunks/_server.ts-BWe0PPhA.js +26 -0
- package/build/server/chunks/_server.ts-BWe0PPhA.js.map +1 -0
- package/build/server/chunks/_server.ts-BgrwjIyE.js +84 -0
- package/build/server/chunks/_server.ts-BgrwjIyE.js.map +1 -0
- package/build/server/chunks/_server.ts-CFzBDuF1.js +52 -0
- package/build/server/chunks/_server.ts-CFzBDuF1.js.map +1 -0
- package/build/server/chunks/_server.ts-CHBba1cE.js +55 -0
- package/build/server/chunks/_server.ts-CHBba1cE.js.map +1 -0
- package/build/server/chunks/_server.ts-ChxeqJr9.js +23 -0
- package/build/server/chunks/_server.ts-ChxeqJr9.js.map +1 -0
- package/build/server/chunks/_server.ts-Cq27_8sR.js +40 -0
- package/build/server/chunks/_server.ts-Cq27_8sR.js.map +1 -0
- package/build/server/chunks/_server.ts-DGK-tW9e.js +26 -0
- package/build/server/chunks/_server.ts-DGK-tW9e.js.map +1 -0
- package/build/server/chunks/_server.ts-DNbiBQKI.js +107 -0
- package/build/server/chunks/_server.ts-DNbiBQKI.js.map +1 -0
- package/build/server/chunks/_server.ts-LPl3rTE2.js +42 -0
- package/build/server/chunks/_server.ts-LPl3rTE2.js.map +1 -0
- package/build/server/chunks/_server.ts-WS7E0dC9.js +20 -0
- package/build/server/chunks/_server.ts-WS7E0dC9.js.map +1 -0
- package/build/server/chunks/_server.ts-o5h153l6.js +22 -0
- package/build/server/chunks/_server.ts-o5h153l6.js.map +1 -0
- package/build/server/chunks/error.svelte-WWFmDYfs.js +77 -0
- package/build/server/chunks/error.svelte-WWFmDYfs.js.map +1 -0
- package/build/server/chunks/index-DBqjc0Yf.js +77 -0
- package/build/server/chunks/index-DBqjc0Yf.js.map +1 -0
- package/build/server/chunks/index-Dq7YP_jO.js +134 -0
- package/build/server/chunks/index-Dq7YP_jO.js.map +1 -0
- package/build/server/chunks/internal2-R0fapQ2T.js +1164 -0
- package/build/server/chunks/internal2-R0fapQ2T.js.map +1 -0
- package/build/server/chunks/legacy-client-DEBQKXfT.js +5174 -0
- package/build/server/chunks/legacy-client-DEBQKXfT.js.map +1 -0
- package/build/server/chunks/mysql-DX3ct8Wa.js +74 -0
- package/build/server/chunks/mysql-DX3ct8Wa.js.map +1 -0
- package/build/server/chunks/plantuml-BT_hcRqZ.js +32 -0
- package/build/server/chunks/plantuml-BT_hcRqZ.js.map +1 -0
- package/build/server/chunks/shared-server-DkccXZBX.js +22 -0
- package/build/server/chunks/shared-server-DkccXZBX.js.map +1 -0
- package/build/server/index.js +4421 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +144 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-BP2EdQl3.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.svelte.js"],"sourcesContent":["import \"../../chunks/dev.js\";\n//#region src/routes/+page.svelte\nfunction _page($$renderer) {}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"AACA;AACA,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/triggers/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
const body = await request.json();
|
|
10
|
+
const config = normalizeConfig(body.config);
|
|
11
|
+
const database = String(body.database ?? "").trim();
|
|
12
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
13
|
+
return json({ triggers: await withConnection(config, null, async (connection) => {
|
|
14
|
+
const [rows] = await connection.execute(`SELECT TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE
|
|
15
|
+
FROM information_schema.TRIGGERS
|
|
16
|
+
WHERE TRIGGER_SCHEMA = ?
|
|
17
|
+
ORDER BY EVENT_OBJECT_TABLE, TRIGGER_NAME`, [database]);
|
|
18
|
+
return rows.map((row) => ({
|
|
19
|
+
name: row.TRIGGER_NAME,
|
|
20
|
+
event: row.EVENT_MANIPULATION,
|
|
21
|
+
table: row.EVENT_OBJECT_TABLE
|
|
22
|
+
}));
|
|
23
|
+
}) });
|
|
24
|
+
} catch (error) {
|
|
25
|
+
return json({ message: error instanceof Error ? error.message : "No se pudieron cargar los triggers" }, { status: 400 });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export { POST };
|
|
30
|
+
//# sourceMappingURL=_server.ts-6mqhv5WM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-6mqhv5WM.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/triggers/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/triggers/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\treturn json({ triggers: await withConnection(config, null, async (connection) => {\n\t\t\tconst [rows] = await connection.execute(`SELECT TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE\n\t\t\t\t FROM information_schema.TRIGGERS\n\t\t\t\t WHERE TRIGGER_SCHEMA = ?\n\t\t\t\t ORDER BY EVENT_OBJECT_TABLE, TRIGGER_NAME`, [database]);\n\t\t\treturn rows.map((row) => ({\n\t\t\t\tname: row.TRIGGER_NAME,\n\t\t\t\tevent: row.EVENT_MANIPULATION,\n\t\t\t\ttable: row.EVENT_OBJECT_TABLE\n\t\t\t}));\n\t\t}) });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudieron cargar los triggers\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,UAAU,KAAK;AACnF,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5C;AACA;AACA,8CAA8C,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5D,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,YAAY;AAC1B,IAAI,KAAK,EAAE,GAAG,CAAC,kBAAkB;AACjC,IAAI,KAAK,EAAE,GAAG,CAAC;AACf,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,oCAAoC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC1H,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/diagram/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
const body = await request.json();
|
|
10
|
+
const config = normalizeConfig(body.config);
|
|
11
|
+
const database = String(body.database ?? "").trim();
|
|
12
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
13
|
+
return json(await withConnection(config, null, async (connection) => {
|
|
14
|
+
const [tableRows] = await connection.execute(`SELECT TABLE_NAME
|
|
15
|
+
FROM information_schema.TABLES
|
|
16
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'
|
|
17
|
+
ORDER BY TABLE_NAME`, [database]);
|
|
18
|
+
const [columnRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA
|
|
19
|
+
FROM information_schema.COLUMNS
|
|
20
|
+
WHERE TABLE_SCHEMA = ?
|
|
21
|
+
ORDER BY TABLE_NAME, ORDINAL_POSITION`, [database]);
|
|
22
|
+
const [relationRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, CONSTRAINT_NAME
|
|
23
|
+
FROM information_schema.KEY_COLUMN_USAGE
|
|
24
|
+
WHERE TABLE_SCHEMA = ?
|
|
25
|
+
AND REFERENCED_TABLE_NAME IS NOT NULL
|
|
26
|
+
ORDER BY TABLE_NAME, COLUMN_NAME`, [database]);
|
|
27
|
+
const tablesMap = /* @__PURE__ */ new Map();
|
|
28
|
+
tableRows.forEach((row) => {
|
|
29
|
+
tablesMap.set(row.TABLE_NAME, []);
|
|
30
|
+
});
|
|
31
|
+
columnRows.forEach((row) => {
|
|
32
|
+
if (tablesMap.has(row.TABLE_NAME)) tablesMap.get(row.TABLE_NAME).push({
|
|
33
|
+
name: row.COLUMN_NAME,
|
|
34
|
+
type: row.COLUMN_TYPE,
|
|
35
|
+
nullable: row.IS_NULLABLE === "YES",
|
|
36
|
+
key: row.COLUMN_KEY,
|
|
37
|
+
defaultValue: row.COLUMN_DEFAULT,
|
|
38
|
+
extra: row.EXTRA
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
tables: Array.from(tablesMap.entries()).map(([tableName, fields]) => ({
|
|
43
|
+
tableName,
|
|
44
|
+
fields
|
|
45
|
+
})),
|
|
46
|
+
relations: relationRows.map((row) => ({
|
|
47
|
+
referenceTable: row.TABLE_NAME,
|
|
48
|
+
referenceColumn: row.COLUMN_NAME,
|
|
49
|
+
referencedTable: row.REFERENCED_TABLE_NAME,
|
|
50
|
+
referencedColumn: row.REFERENCED_COLUMN_NAME,
|
|
51
|
+
constraint: row.CONSTRAINT_NAME
|
|
52
|
+
}))
|
|
53
|
+
};
|
|
54
|
+
}));
|
|
55
|
+
} catch (error) {
|
|
56
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo cargar el diagrama" }, { status: 400 });
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { POST };
|
|
61
|
+
//# sourceMappingURL=_server.ts-B7evxvHU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-B7evxvHU.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/diagram/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/diagram/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\treturn json(await withConnection(config, null, async (connection) => {\n\t\t\tconst [tableRows] = await connection.execute(`SELECT TABLE_NAME\n\t\t\t\t FROM information_schema.TABLES\n\t\t\t\t WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'\n\t\t\t\t ORDER BY TABLE_NAME`, [database]);\n\t\t\tconst [columnRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA\n\t\t\t\t FROM information_schema.COLUMNS\n\t\t\t\t WHERE TABLE_SCHEMA = ?\n\t\t\t\t ORDER BY TABLE_NAME, ORDINAL_POSITION`, [database]);\n\t\t\tconst [relationRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, CONSTRAINT_NAME\n\t\t\t\t FROM information_schema.KEY_COLUMN_USAGE\n\t\t\t\t WHERE TABLE_SCHEMA = ?\n\t\t\t\t AND REFERENCED_TABLE_NAME IS NOT NULL\n\t\t\t\t ORDER BY TABLE_NAME, COLUMN_NAME`, [database]);\n\t\t\tconst tablesMap = /* @__PURE__ */ new Map();\n\t\t\ttableRows.forEach((row) => {\n\t\t\t\ttablesMap.set(row.TABLE_NAME, []);\n\t\t\t});\n\t\t\tcolumnRows.forEach((row) => {\n\t\t\t\tif (tablesMap.has(row.TABLE_NAME)) tablesMap.get(row.TABLE_NAME).push({\n\t\t\t\t\tname: row.COLUMN_NAME,\n\t\t\t\t\ttype: row.COLUMN_TYPE,\n\t\t\t\t\tnullable: row.IS_NULLABLE === \"YES\",\n\t\t\t\t\tkey: row.COLUMN_KEY,\n\t\t\t\t\tdefaultValue: row.COLUMN_DEFAULT,\n\t\t\t\t\textra: row.EXTRA\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn {\n\t\t\t\ttables: Array.from(tablesMap.entries()).map(([tableName, fields]) => ({\n\t\t\t\t\ttableName,\n\t\t\t\t\tfields\n\t\t\t\t})),\n\t\t\t\trelations: relationRows.map((row) => ({\n\t\t\t\t\treferenceTable: row.TABLE_NAME,\n\t\t\t\t\treferenceColumn: row.COLUMN_NAME,\n\t\t\t\t\treferencedTable: row.REFERENCED_TABLE_NAME,\n\t\t\t\t\treferencedColumn: row.REFERENCED_COLUMN_NAME,\n\t\t\t\t\tconstraint: row.CONSTRAINT_NAME\n\t\t\t\t}))\n\t\t\t};\n\t\t}));\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo cargar el diagrama\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,OAAO,IAAI,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,UAAU,KAAK;AACvE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AACjD;AACA;AACA,wBAAwB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAClD;AACA;AACA,0CAA0C,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxD,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD;AACA;AACA;AACA,qCAAqC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACnD,GAAG,MAAM,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAC9C,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9B,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;AACrC,GAAG,CAAC,CAAC;AACL,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC/B,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AAC1E,KAAK,IAAI,EAAE,GAAG,CAAC,WAAW;AAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,WAAW;AAC1B,KAAK,QAAQ,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;AACxC,KAAK,GAAG,EAAE,GAAG,CAAC,UAAU;AACxB,KAAK,YAAY,EAAE,GAAG,CAAC,cAAc;AACrC,KAAK,KAAK,EAAE,GAAG,CAAC;AAChB,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,GAAG,OAAO;AACV,IAAI,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM;AAC1E,KAAK,SAAS;AACd,KAAK;AACL,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC1C,KAAK,cAAc,EAAE,GAAG,CAAC,UAAU;AACnC,KAAK,eAAe,EAAE,GAAG,CAAC,WAAW;AACrC,KAAK,eAAe,EAAE,GAAG,CAAC,qBAAqB;AAC/C,KAAK,gBAAgB,EAAE,GAAG,CAAC,sBAAsB;AACjD,KAAK,UAAU,EAAE,GAAG,CAAC;AACrB,KAAK,CAAC;AACN,IAAI;AACJ,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,+BAA+B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrH,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { w as withConnection, q as quoteIdentifier, a as normalizeValues, g as getColumns, b as getPrimaryColumn, n as normalizeConfig } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/rows/+server.ts
|
|
7
|
+
function getContext(body) {
|
|
8
|
+
const config = normalizeConfig(body.config);
|
|
9
|
+
const database = String(body.database ?? "").trim();
|
|
10
|
+
const table = String(body.table ?? "").trim();
|
|
11
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
12
|
+
if (!table) throw new Error("Selecciona una tabla");
|
|
13
|
+
return {
|
|
14
|
+
config,
|
|
15
|
+
database,
|
|
16
|
+
table
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var POST = async ({ request }) => {
|
|
20
|
+
try {
|
|
21
|
+
const { config, database, table } = getContext(await request.json());
|
|
22
|
+
const columns = await getColumns(config, database, table);
|
|
23
|
+
const primaryColumn = getPrimaryColumn(columns);
|
|
24
|
+
return json({
|
|
25
|
+
columns,
|
|
26
|
+
rows: await withConnection(config, database, async (connection) => {
|
|
27
|
+
const [result] = await connection.query(`SELECT * FROM ${quoteIdentifier(table)} LIMIT 100`);
|
|
28
|
+
return result;
|
|
29
|
+
}),
|
|
30
|
+
primaryKey: primaryColumn?.name ?? null
|
|
31
|
+
});
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return json({ message: error instanceof Error ? error.message : "No se pudieron cargar los registros" }, { status: 400 });
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var PUT = async ({ request }) => {
|
|
37
|
+
try {
|
|
38
|
+
const body = await request.json();
|
|
39
|
+
const { config, database, table } = getContext(body);
|
|
40
|
+
const values = normalizeValues(body.values ?? {});
|
|
41
|
+
const entries = Object.entries(values).filter(([, value]) => value !== void 0);
|
|
42
|
+
if (!entries.length) throw new Error("Agrega al menos un valor");
|
|
43
|
+
const columns = entries.map(([column]) => quoteIdentifier(column)).join(", ");
|
|
44
|
+
const placeholders = entries.map(() => "?").join(", ");
|
|
45
|
+
await withConnection(config, database, async (connection) => {
|
|
46
|
+
await connection.execute(`INSERT INTO ${quoteIdentifier(table)} (${columns}) VALUES (${placeholders})`, entries.map(([, value]) => value));
|
|
47
|
+
});
|
|
48
|
+
return json({ ok: true });
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo agregar el registro" }, { status: 400 });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var PATCH = async ({ request }) => {
|
|
54
|
+
try {
|
|
55
|
+
const body = await request.json();
|
|
56
|
+
const { config, database, table } = getContext(body);
|
|
57
|
+
const primaryKey = String(body.primaryKey ?? "").trim();
|
|
58
|
+
const primaryValue = body.primaryValue;
|
|
59
|
+
const values = normalizeValues(body.values ?? {});
|
|
60
|
+
const entries = Object.entries(values).filter(([column]) => column !== primaryKey);
|
|
61
|
+
if (!primaryKey) throw new Error("La tabla no tiene columna editable para identificar filas");
|
|
62
|
+
if (!entries.length) throw new Error("No hay cambios para guardar");
|
|
63
|
+
const assignments = entries.map(([column]) => `${quoteIdentifier(column)} = ?`).join(", ");
|
|
64
|
+
await withConnection(config, database, async (connection) => {
|
|
65
|
+
await connection.execute(`UPDATE ${quoteIdentifier(table)} SET ${assignments} WHERE ${quoteIdentifier(primaryKey)} = ? LIMIT 1`, [...entries.map(([, value]) => value), primaryValue]);
|
|
66
|
+
});
|
|
67
|
+
return json({ ok: true });
|
|
68
|
+
} catch (error) {
|
|
69
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo editar el registro" }, { status: 400 });
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var DELETE = async ({ request }) => {
|
|
73
|
+
try {
|
|
74
|
+
const body = await request.json();
|
|
75
|
+
const { config, database, table } = getContext(body);
|
|
76
|
+
const primaryKey = String(body.primaryKey ?? "").trim();
|
|
77
|
+
const primaryValue = body.primaryValue;
|
|
78
|
+
if (!primaryKey) throw new Error("La tabla no tiene columna para identificar filas");
|
|
79
|
+
await withConnection(config, database, async (connection) => {
|
|
80
|
+
await connection.execute(`DELETE FROM ${quoteIdentifier(table)} WHERE ${quoteIdentifier(primaryKey)} = ? LIMIT 1`, [primaryValue]);
|
|
81
|
+
});
|
|
82
|
+
return json({ ok: true });
|
|
83
|
+
} catch (error) {
|
|
84
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo eliminar el registro" }, { status: 400 });
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export { DELETE, PATCH, POST, PUT };
|
|
89
|
+
//# sourceMappingURL=_server.ts-BN5QAzfI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BN5QAzfI.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/rows/_server.ts.js"],"sourcesContent":["import { a as quoteIdentifier, i as normalizeValues, n as getPrimaryColumn, o as withConnection, r as normalizeConfig, t as getColumns } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/rows/+server.ts\nfunction getContext(body) {\n\tconst config = normalizeConfig(body.config);\n\tconst database = String(body.database ?? \"\").trim();\n\tconst table = String(body.table ?? \"\").trim();\n\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\tif (!table) throw new Error(\"Selecciona una tabla\");\n\treturn {\n\t\tconfig,\n\t\tdatabase,\n\t\ttable\n\t};\n}\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst { config, database, table } = getContext(await request.json());\n\t\tconst columns = await getColumns(config, database, table);\n\t\tconst primaryColumn = getPrimaryColumn(columns);\n\t\treturn json({\n\t\t\tcolumns,\n\t\t\trows: await withConnection(config, database, async (connection) => {\n\t\t\t\tconst [result] = await connection.query(`SELECT * FROM ${quoteIdentifier(table)} LIMIT 100`);\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t\tprimaryKey: primaryColumn?.name ?? null\n\t\t});\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudieron cargar los registros\" }, { status: 400 });\n\t}\n};\nvar PUT = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst { config, database, table } = getContext(body);\n\t\tconst values = normalizeValues(body.values ?? {});\n\t\tconst entries = Object.entries(values).filter(([, value]) => value !== void 0);\n\t\tif (!entries.length) throw new Error(\"Agrega al menos un valor\");\n\t\tconst columns = entries.map(([column]) => quoteIdentifier(column)).join(\", \");\n\t\tconst placeholders = entries.map(() => \"?\").join(\", \");\n\t\tawait withConnection(config, database, async (connection) => {\n\t\t\tawait connection.execute(`INSERT INTO ${quoteIdentifier(table)} (${columns}) VALUES (${placeholders})`, entries.map(([, value]) => value));\n\t\t});\n\t\treturn json({ ok: true });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo agregar el registro\" }, { status: 400 });\n\t}\n};\nvar PATCH = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst { config, database, table } = getContext(body);\n\t\tconst primaryKey = String(body.primaryKey ?? \"\").trim();\n\t\tconst primaryValue = body.primaryValue;\n\t\tconst values = normalizeValues(body.values ?? {});\n\t\tconst entries = Object.entries(values).filter(([column]) => column !== primaryKey);\n\t\tif (!primaryKey) throw new Error(\"La tabla no tiene columna editable para identificar filas\");\n\t\tif (!entries.length) throw new Error(\"No hay cambios para guardar\");\n\t\tconst assignments = entries.map(([column]) => `${quoteIdentifier(column)} = ?`).join(\", \");\n\t\tawait withConnection(config, database, async (connection) => {\n\t\t\tawait connection.execute(`UPDATE ${quoteIdentifier(table)} SET ${assignments} WHERE ${quoteIdentifier(primaryKey)} = ? LIMIT 1`, [...entries.map(([, value]) => value), primaryValue]);\n\t\t});\n\t\treturn json({ ok: true });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo editar el registro\" }, { status: 400 });\n\t}\n};\nvar DELETE = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst { config, database, table } = getContext(body);\n\t\tconst primaryKey = String(body.primaryKey ?? \"\").trim();\n\t\tconst primaryValue = body.primaryValue;\n\t\tif (!primaryKey) throw new Error(\"La tabla no tiene columna para identificar filas\");\n\t\tawait withConnection(config, database, async (connection) => {\n\t\t\tawait connection.execute(`DELETE FROM ${quoteIdentifier(table)} WHERE ${quoteIdentifier(primaryKey)} = ? LIMIT 1`, [primaryValue]);\n\t\t});\n\t\treturn json({ ok: true });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo eliminar el registro\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { DELETE, PATCH, POST, PUT };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/functions/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
const body = await request.json();
|
|
10
|
+
const config = normalizeConfig(body.config);
|
|
11
|
+
const database = String(body.database ?? "").trim();
|
|
12
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
13
|
+
return json({ functions: await withConnection(config, null, async (connection) => {
|
|
14
|
+
const [rows] = await connection.execute(`SELECT ROUTINE_NAME
|
|
15
|
+
FROM information_schema.ROUTINES
|
|
16
|
+
WHERE ROUTINE_SCHEMA = ? AND ROUTINE_TYPE = 'FUNCTION'
|
|
17
|
+
ORDER BY ROUTINE_NAME`, [database]);
|
|
18
|
+
return rows.map((row) => row.ROUTINE_NAME);
|
|
19
|
+
}) });
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return json({ message: error instanceof Error ? error.message : "No se pudieron cargar las funciones" }, { status: 400 });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { POST };
|
|
26
|
+
//# sourceMappingURL=_server.ts-BWe0PPhA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BWe0PPhA.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/functions/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/functions/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\treturn json({ functions: await withConnection(config, null, async (connection) => {\n\t\t\tconst [rows] = await connection.execute(`SELECT ROUTINE_NAME\n\t\t\t\t FROM information_schema.ROUTINES\n\t\t\t\t WHERE ROUTINE_SCHEMA = ? AND ROUTINE_TYPE = 'FUNCTION'\n\t\t\t\t ORDER BY ROUTINE_NAME`, [database]);\n\t\t\treturn rows.map((row) => row.ROUTINE_NAME);\n\t\t}) });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudieron cargar las funciones\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,OAAO,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,UAAU,KAAK;AACpF,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5C;AACA;AACA,0BAA0B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,YAAY,CAAC;AAC7C,EAAE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,qCAAqC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3H,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection, g as getColumns } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { r as renderPlantUmlSvg } from './plantuml-BT_hcRqZ.js';
|
|
3
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
4
|
+
import 'mysql2/promise';
|
|
5
|
+
import './shared-server-DkccXZBX.js';
|
|
6
|
+
import 'node:zlib';
|
|
7
|
+
import './index-DBqjc0Yf.js';
|
|
8
|
+
|
|
9
|
+
//#region src/routes/api/plantuml/database/+server.ts
|
|
10
|
+
function renderPlantUmlSource(entities, relations) {
|
|
11
|
+
const lines = [
|
|
12
|
+
"@startuml",
|
|
13
|
+
"left to right direction",
|
|
14
|
+
"skinparam linetype polygon",
|
|
15
|
+
""
|
|
16
|
+
];
|
|
17
|
+
for (const entity of entities) {
|
|
18
|
+
lines.push(`entity "${entity.name}" as ${quoteAlias(entity.name)} {`);
|
|
19
|
+
for (const field of entity.fields) {
|
|
20
|
+
const marker = field.primary ? "*" : field.foreign ? "+" : field.nullable ? " " : "!";
|
|
21
|
+
lines.push(` ${marker} ${field.name} : ${field.type}`);
|
|
22
|
+
}
|
|
23
|
+
lines.push("}", "");
|
|
24
|
+
}
|
|
25
|
+
for (const relation of relations) lines.push(`${quoteAlias(relation.referencedTable)} ||---o{ ${quoteAlias(relation.table)}`);
|
|
26
|
+
lines.push("@enduml");
|
|
27
|
+
return lines.join("\n");
|
|
28
|
+
}
|
|
29
|
+
function quoteAlias(name) {
|
|
30
|
+
return `E_${name.replace(/[^a-zA-Z0-9_]/g, "_")}`;
|
|
31
|
+
}
|
|
32
|
+
var POST = async ({ request }) => {
|
|
33
|
+
try {
|
|
34
|
+
const body = await request.json();
|
|
35
|
+
const config = normalizeConfig(body.config);
|
|
36
|
+
const database = String(body.database ?? "").trim();
|
|
37
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
38
|
+
const data = await withConnection(config, null, async (connection) => {
|
|
39
|
+
const [tableRows] = await connection.execute(`SELECT TABLE_NAME
|
|
40
|
+
FROM information_schema.TABLES
|
|
41
|
+
WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'
|
|
42
|
+
ORDER BY TABLE_NAME`, [database]);
|
|
43
|
+
const [relationRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, CONSTRAINT_NAME
|
|
44
|
+
FROM information_schema.KEY_COLUMN_USAGE
|
|
45
|
+
WHERE TABLE_SCHEMA = ?
|
|
46
|
+
AND REFERENCED_TABLE_NAME IS NOT NULL
|
|
47
|
+
ORDER BY TABLE_NAME, COLUMN_NAME`, [database]);
|
|
48
|
+
const tables = tableRows.map((row) => row.TABLE_NAME);
|
|
49
|
+
return {
|
|
50
|
+
entities: await Promise.all(tables.map(async (table) => {
|
|
51
|
+
return {
|
|
52
|
+
name: table,
|
|
53
|
+
fields: (await getColumns(config, database, table)).map((column) => ({
|
|
54
|
+
name: column.name,
|
|
55
|
+
type: column.type,
|
|
56
|
+
primary: column.key === "PRI",
|
|
57
|
+
foreign: Boolean(column.foreignKey),
|
|
58
|
+
nullable: column.nullable
|
|
59
|
+
}))
|
|
60
|
+
};
|
|
61
|
+
})),
|
|
62
|
+
relations: relationRows.map((row) => ({
|
|
63
|
+
table: row.TABLE_NAME,
|
|
64
|
+
column: row.COLUMN_NAME,
|
|
65
|
+
referencedTable: row.REFERENCED_TABLE_NAME,
|
|
66
|
+
referencedColumn: row.REFERENCED_COLUMN_NAME,
|
|
67
|
+
constraint: row.CONSTRAINT_NAME
|
|
68
|
+
}))
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
const source = renderPlantUmlSource(data.entities, data.relations);
|
|
72
|
+
const svg = await renderPlantUmlSvg(source);
|
|
73
|
+
return json({
|
|
74
|
+
...data,
|
|
75
|
+
source,
|
|
76
|
+
svg
|
|
77
|
+
});
|
|
78
|
+
} catch (error) {
|
|
79
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo generar la preview" }, { status: 400 });
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export { POST };
|
|
84
|
+
//# sourceMappingURL=_server.ts-BgrwjIyE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-BgrwjIyE.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/plantuml/database/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig, t as getColumns } from \"../../../../../chunks/mysql.js\";\nimport { t as renderPlantUmlSvg } from \"../../../../../chunks/plantuml.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/plantuml/database/+server.ts\nfunction renderPlantUmlSource(entities, relations) {\n\tconst lines = [\n\t\t\"@startuml\",\n\t\t\"left to right direction\",\n\t\t\"skinparam linetype polygon\",\n\t\t\"\"\n\t];\n\tfor (const entity of entities) {\n\t\tlines.push(`entity \"${entity.name}\" as ${quoteAlias(entity.name)} {`);\n\t\tfor (const field of entity.fields) {\n\t\t\tconst marker = field.primary ? \"*\" : field.foreign ? \"+\" : field.nullable ? \" \" : \"!\";\n\t\t\tlines.push(` ${marker} ${field.name} : ${field.type}`);\n\t\t}\n\t\tlines.push(\"}\", \"\");\n\t}\n\tfor (const relation of relations) lines.push(`${quoteAlias(relation.referencedTable)} ||---o{ ${quoteAlias(relation.table)}`);\n\tlines.push(\"@enduml\");\n\treturn lines.join(\"\\n\");\n}\nfunction quoteAlias(name) {\n\treturn `E_${name.replace(/[^a-zA-Z0-9_]/g, \"_\")}`;\n}\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\tconst data = await withConnection(config, null, async (connection) => {\n\t\t\tconst [tableRows] = await connection.execute(`SELECT TABLE_NAME\n\t\t\t\t FROM information_schema.TABLES\n\t\t\t\t WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'\n\t\t\t\t ORDER BY TABLE_NAME`, [database]);\n\t\t\tconst [relationRows] = await connection.execute(`SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME, CONSTRAINT_NAME\n\t\t\t\t FROM information_schema.KEY_COLUMN_USAGE\n\t\t\t\t WHERE TABLE_SCHEMA = ?\n\t\t\t\t AND REFERENCED_TABLE_NAME IS NOT NULL\n\t\t\t\t ORDER BY TABLE_NAME, COLUMN_NAME`, [database]);\n\t\t\tconst tables = tableRows.map((row) => row.TABLE_NAME);\n\t\t\treturn {\n\t\t\t\tentities: await Promise.all(tables.map(async (table) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: table,\n\t\t\t\t\t\tfields: (await getColumns(config, database, table)).map((column) => ({\n\t\t\t\t\t\t\tname: column.name,\n\t\t\t\t\t\t\ttype: column.type,\n\t\t\t\t\t\t\tprimary: column.key === \"PRI\",\n\t\t\t\t\t\t\tforeign: Boolean(column.foreignKey),\n\t\t\t\t\t\t\tnullable: column.nullable\n\t\t\t\t\t\t}))\n\t\t\t\t\t};\n\t\t\t\t})),\n\t\t\t\trelations: relationRows.map((row) => ({\n\t\t\t\t\ttable: row.TABLE_NAME,\n\t\t\t\t\tcolumn: row.COLUMN_NAME,\n\t\t\t\t\treferencedTable: row.REFERENCED_TABLE_NAME,\n\t\t\t\t\treferencedColumn: row.REFERENCED_COLUMN_NAME,\n\t\t\t\t\tconstraint: row.CONSTRAINT_NAME\n\t\t\t\t}))\n\t\t\t};\n\t\t});\n\t\tconst source = renderPlantUmlSource(data.entities, data.relations);\n\t\tconst svg = await renderPlantUmlSvg(source);\n\t\treturn json({\n\t\t\t...data,\n\t\t\tsource,\n\t\t\tsvg\n\t\t});\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo generar la preview\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection, q as quoteIdentifier } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/databases/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
return json({ databases: await withConnection(normalizeConfig((await request.json()).config), null, async (connection) => {
|
|
10
|
+
const [rows] = await connection.query("SHOW DATABASES");
|
|
11
|
+
return rows.map((row) => Object.values(row)[0]).filter((name) => typeof name === "string").filter((name) => ![
|
|
12
|
+
"information_schema",
|
|
13
|
+
"mysql",
|
|
14
|
+
"performance_schema",
|
|
15
|
+
"sys"
|
|
16
|
+
].includes(name));
|
|
17
|
+
}) });
|
|
18
|
+
} catch (error) {
|
|
19
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo conectar a MySQL" }, { status: 400 });
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var PUT = async ({ request }) => {
|
|
23
|
+
try {
|
|
24
|
+
const body = await request.json();
|
|
25
|
+
const config = normalizeConfig(body.config);
|
|
26
|
+
const database = String(body.database ?? "").trim();
|
|
27
|
+
if (!database) throw new Error("El nombre de la base de datos es obligatorio");
|
|
28
|
+
await withConnection(config, null, async (connection) => {
|
|
29
|
+
await connection.query(`CREATE DATABASE ${quoteIdentifier(database)}`);
|
|
30
|
+
});
|
|
31
|
+
return json({ ok: true });
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo crear la base de datos" }, { status: 400 });
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var DELETE = async ({ request }) => {
|
|
37
|
+
try {
|
|
38
|
+
const body = await request.json();
|
|
39
|
+
const config = normalizeConfig(body.config);
|
|
40
|
+
const database = String(body.database ?? "").trim();
|
|
41
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
42
|
+
await withConnection(config, null, async (connection) => {
|
|
43
|
+
await connection.query(`DROP DATABASE ${quoteIdentifier(database)}`);
|
|
44
|
+
});
|
|
45
|
+
return json({ ok: true });
|
|
46
|
+
} catch (error) {
|
|
47
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo eliminar la base de datos" }, { status: 400 });
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { DELETE, POST, PUT };
|
|
52
|
+
//# sourceMappingURL=_server.ts-CFzBDuF1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CFzBDuF1.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/databases/_server.ts.js"],"sourcesContent":["import { a as quoteIdentifier, o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/databases/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\treturn json({ databases: await withConnection(normalizeConfig((await request.json()).config), null, async (connection) => {\n\t\t\tconst [rows] = await connection.query(\"SHOW DATABASES\");\n\t\t\treturn rows.map((row) => Object.values(row)[0]).filter((name) => typeof name === \"string\").filter((name) => ![\n\t\t\t\t\"information_schema\",\n\t\t\t\t\"mysql\",\n\t\t\t\t\"performance_schema\",\n\t\t\t\t\"sys\"\n\t\t\t].includes(name));\n\t\t}) });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo conectar a MySQL\" }, { status: 400 });\n\t}\n};\nvar PUT = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"El nombre de la base de datos es obligatorio\");\n\t\tawait withConnection(config, null, async (connection) => {\n\t\t\tawait connection.query(`CREATE DATABASE ${quoteIdentifier(database)}`);\n\t\t});\n\t\treturn json({ ok: true });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo crear la base de datos\" }, { status: 400 });\n\t}\n};\nvar DELETE = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\tawait withConnection(config, null, async (connection) => {\n\t\t\tawait connection.query(`DROP DATABASE ${quoteIdentifier(database)}`);\n\t\t});\n\t\treturn json({ ok: true });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo eliminar la base de datos\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { DELETE, POST, PUT };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import { createConnection } from 'node:net';
|
|
4
|
+
import 'mysql2/promise';
|
|
5
|
+
import './index-DBqjc0Yf.js';
|
|
6
|
+
|
|
7
|
+
//#region src/routes/api/connections/test/+server.ts
|
|
8
|
+
function normalizeType(value) {
|
|
9
|
+
if (value === "postgresql" || value === "redis" || value === "mysql") return value;
|
|
10
|
+
return "mysql";
|
|
11
|
+
}
|
|
12
|
+
function testTcpConnection(config) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const socket = createConnection({
|
|
15
|
+
host: config.host,
|
|
16
|
+
port: config.port
|
|
17
|
+
});
|
|
18
|
+
const timeout = setTimeout(() => {
|
|
19
|
+
socket.destroy();
|
|
20
|
+
reject(/* @__PURE__ */ new Error("Tiempo de espera agotado"));
|
|
21
|
+
}, 5e3);
|
|
22
|
+
socket.once("connect", () => {
|
|
23
|
+
clearTimeout(timeout);
|
|
24
|
+
socket.end();
|
|
25
|
+
resolve();
|
|
26
|
+
});
|
|
27
|
+
socket.once("error", (error) => {
|
|
28
|
+
clearTimeout(timeout);
|
|
29
|
+
reject(error);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
var POST = async ({ request }) => {
|
|
34
|
+
try {
|
|
35
|
+
const body = await request.json();
|
|
36
|
+
const connection = body.connection ?? body;
|
|
37
|
+
const config = normalizeConfig(connection);
|
|
38
|
+
if (normalizeType(connection.type) === "mysql") await withConnection(config, null, async (client) => {
|
|
39
|
+
await client.ping();
|
|
40
|
+
});
|
|
41
|
+
else await testTcpConnection(config);
|
|
42
|
+
return json({
|
|
43
|
+
ok: true,
|
|
44
|
+
message: "Conexion exitosa"
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
return json({
|
|
48
|
+
ok: false,
|
|
49
|
+
message: error instanceof Error ? error.message : "No se pudo probar la conexion"
|
|
50
|
+
}, { status: 400 });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { POST };
|
|
55
|
+
//# sourceMappingURL=_server.ts-CHBba1cE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-CHBba1cE.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/connections/test/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { createConnection } from \"node:net\";\n//#region src/routes/api/connections/test/+server.ts\nfunction normalizeType(value) {\n\tif (value === \"postgresql\" || value === \"redis\" || value === \"mysql\") return value;\n\treturn \"mysql\";\n}\nfunction testTcpConnection(config) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst socket = createConnection({\n\t\t\thost: config.host,\n\t\t\tport: config.port\n\t\t});\n\t\tconst timeout = setTimeout(() => {\n\t\t\tsocket.destroy();\n\t\t\treject(/* @__PURE__ */ new Error(\"Tiempo de espera agotado\"));\n\t\t}, 5e3);\n\t\tsocket.once(\"connect\", () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tsocket.end();\n\t\t\tresolve();\n\t\t});\n\t\tsocket.once(\"error\", (error) => {\n\t\t\tclearTimeout(timeout);\n\t\t\treject(error);\n\t\t});\n\t});\n}\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst connection = body.connection ?? body;\n\t\tconst config = normalizeConfig(connection);\n\t\tif (normalizeType(connection.type) === \"mysql\") await withConnection(config, null, async (client) => {\n\t\t\tawait client.ping();\n\t\t});\n\t\telse await testTcpConnection(config);\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tmessage: \"Conexion exitosa\"\n\t\t});\n\t} catch (error) {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\tmessage: error instanceof Error ? error.message : \"No se pudo probar la conexion\"\n\t\t}, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;AAGA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,CAAC,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,OAAO,KAAK;AACnF,CAAC,OAAO,OAAO;AACf;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzC,EAAE,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAClC,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI;AACpB,GAAG,IAAI,EAAE,MAAM,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACnC,GAAG,MAAM,CAAC,OAAO,EAAE;AACnB,GAAG,MAAM,iBAAiB,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAChE,EAAE,CAAC,EAAE,GAAG,CAAC;AACT,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAC/B,GAAG,YAAY,CAAC,OAAO,CAAC;AACxB,GAAG,MAAM,CAAC,GAAG,EAAE;AACf,GAAG,OAAO,EAAE;AACZ,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AAClC,GAAG,YAAY,CAAC,OAAO,CAAC;AACxB,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI;AAC5C,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC;AAC5C,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,MAAM,KAAK;AACvG,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;AACtB,EAAE,CAAC,CAAC;AACJ,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC;AACtC,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,OAAO,EAAE;AACZ,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG;AACrD,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/views/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
const body = await request.json();
|
|
10
|
+
const config = normalizeConfig(body.config);
|
|
11
|
+
const database = String(body.database ?? "").trim();
|
|
12
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
13
|
+
return json({ views: await withConnection(config, database, async (connection) => {
|
|
14
|
+
const [rows] = await connection.query("SHOW FULL TABLES WHERE Table_type = \"VIEW\"");
|
|
15
|
+
return rows.map((row) => Object.values(row)[0]).filter((name) => typeof name === "string");
|
|
16
|
+
}) });
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return json({ message: error instanceof Error ? error.message : "No se pudieron cargar las vistas" }, { status: 400 });
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { POST };
|
|
23
|
+
//# sourceMappingURL=_server.ts-ChxeqJr9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-ChxeqJr9.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/views/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/views/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\treturn json({ views: await withConnection(config, database, async (connection) => {\n\t\t\tconst [rows] = await connection.query(\"SHOW FULL TABLES WHERE Table_type = \\\"VIEW\\\"\");\n\t\t\treturn rows.map((row) => Object.values(row)[0]).filter((name) => typeof name === \"string\");\n\t\t}) });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudieron cargar las vistas\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,UAAU,KAAK;AACpF,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,8CAA8C,CAAC;AACxF,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC7F,EAAE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,kCAAkC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACxH,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/query/+server.ts
|
|
7
|
+
function isResultSet(rows) {
|
|
8
|
+
return Array.isArray(rows);
|
|
9
|
+
}
|
|
10
|
+
var POST = async ({ request }) => {
|
|
11
|
+
try {
|
|
12
|
+
const body = await request.json();
|
|
13
|
+
const config = normalizeConfig(body.config);
|
|
14
|
+
const database = String(body.database ?? "").trim();
|
|
15
|
+
const sql = String(body.sql ?? "").trim();
|
|
16
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
17
|
+
if (!sql) throw new Error("Escribe una sentencia SQL");
|
|
18
|
+
return json(await withConnection(config, database, async (connection) => {
|
|
19
|
+
const [rows, fields] = await connection.query(sql);
|
|
20
|
+
if (isResultSet(rows)) return {
|
|
21
|
+
type: "rows",
|
|
22
|
+
columns: fields.map((field) => field.name),
|
|
23
|
+
rows
|
|
24
|
+
};
|
|
25
|
+
const header = rows;
|
|
26
|
+
return {
|
|
27
|
+
type: "result",
|
|
28
|
+
affectedRows: header.affectedRows ?? 0,
|
|
29
|
+
changedRows: header.changedRows ?? 0,
|
|
30
|
+
insertId: header.insertId ?? 0,
|
|
31
|
+
warningStatus: header.warningStatus ?? 0
|
|
32
|
+
};
|
|
33
|
+
}));
|
|
34
|
+
} catch (error) {
|
|
35
|
+
return json({ message: error instanceof Error ? error.message : "No se pudo ejecutar SQL" }, { status: 400 });
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { POST };
|
|
40
|
+
//# sourceMappingURL=_server.ts-Cq27_8sR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Cq27_8sR.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/query/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/query/+server.ts\nfunction isResultSet(rows) {\n\treturn Array.isArray(rows);\n}\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tconst sql = String(body.sql ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\tif (!sql) throw new Error(\"Escribe una sentencia SQL\");\n\t\treturn json(await withConnection(config, database, async (connection) => {\n\t\t\tconst [rows, fields] = await connection.query(sql);\n\t\t\tif (isResultSet(rows)) return {\n\t\t\t\ttype: \"rows\",\n\t\t\t\tcolumns: fields.map((field) => field.name),\n\t\t\t\trows\n\t\t\t};\n\t\t\tconst header = rows;\n\t\t\treturn {\n\t\t\t\ttype: \"result\",\n\t\t\t\taffectedRows: header.affectedRows ?? 0,\n\t\t\t\tchangedRows: header.changedRows ?? 0,\n\t\t\t\tinsertId: header.insertId ?? 0,\n\t\t\t\twarningStatus: header.warningStatus ?? 0\n\t\t\t};\n\t\t}));\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudo ejecutar SQL\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACxD,EAAE,OAAO,IAAI,CAAC,MAAM,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,UAAU,KAAK;AAC3E,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO;AACjC,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAC9C,IAAI;AACJ,IAAI;AACJ,GAAG,MAAM,MAAM,GAAG,IAAI;AACtB,GAAG,OAAO;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;AAC1C,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;AACxC,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;AAClC,IAAI,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI;AAC3C,IAAI;AACJ,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/G,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { n as normalizeConfig, w as withConnection } from './mysql-DX3ct8Wa.js';
|
|
2
|
+
import { j as json } from './index-Dq7YP_jO.js';
|
|
3
|
+
import 'mysql2/promise';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/routes/api/mysql/procedures/+server.ts
|
|
7
|
+
var POST = async ({ request }) => {
|
|
8
|
+
try {
|
|
9
|
+
const body = await request.json();
|
|
10
|
+
const config = normalizeConfig(body.config);
|
|
11
|
+
const database = String(body.database ?? "").trim();
|
|
12
|
+
if (!database) throw new Error("Selecciona una base de datos");
|
|
13
|
+
return json({ procedures: await withConnection(config, null, async (connection) => {
|
|
14
|
+
const [rows] = await connection.execute(`SELECT ROUTINE_NAME
|
|
15
|
+
FROM information_schema.ROUTINES
|
|
16
|
+
WHERE ROUTINE_SCHEMA = ? AND ROUTINE_TYPE = 'PROCEDURE'
|
|
17
|
+
ORDER BY ROUTINE_NAME`, [database]);
|
|
18
|
+
return rows.map((row) => row.ROUTINE_NAME);
|
|
19
|
+
}) });
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return json({ message: error instanceof Error ? error.message : "No se pudieron cargar los procedimientos" }, { status: 400 });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { POST };
|
|
26
|
+
//# sourceMappingURL=_server.ts-DGK-tW9e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-DGK-tW9e.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/mysql/procedures/_server.ts.js"],"sourcesContent":["import { o as withConnection, r as normalizeConfig } from \"../../../../../chunks/mysql.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/mysql/procedures/+server.ts\nvar POST = async ({ request }) => {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst config = normalizeConfig(body.config);\n\t\tconst database = String(body.database ?? \"\").trim();\n\t\tif (!database) throw new Error(\"Selecciona una base de datos\");\n\t\treturn json({ procedures: await withConnection(config, null, async (connection) => {\n\t\t\tconst [rows] = await connection.execute(`SELECT ROUTINE_NAME\n\t\t\t\t FROM information_schema.ROUTINES\n\t\t\t\t WHERE ROUTINE_SCHEMA = ? AND ROUTINE_TYPE = 'PROCEDURE'\n\t\t\t\t ORDER BY ROUTINE_NAME`, [database]);\n\t\t\treturn rows.map((row) => row.ROUTINE_NAME);\n\t\t}) });\n\t} catch (error) {\n\t\treturn json({ message: error instanceof Error ? error.message : \"No se pudieron cargar los procedimientos\" }, { status: 400 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;AAEA;AACG,IAAC,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAChE,EAAE,OAAO,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,UAAU,KAAK;AACrF,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5C;AACA;AACA,0BAA0B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,YAAY,CAAC;AAC7C,EAAE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,0CAA0C,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChI,CAAC;AACD;;;;"}
|