@solidxai/core 0.1.10 → 0.1.11-beta.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/dist/controllers/datasource-introspection.controller.d.ts +234 -0
- package/dist/controllers/datasource-introspection.controller.d.ts.map +1 -0
- package/dist/controllers/datasource-introspection.controller.js +98 -0
- package/dist/controllers/datasource-introspection.controller.js.map +1 -0
- package/dist/controllers/datasource-management.controller.d.ts +18 -0
- package/dist/controllers/datasource-management.controller.d.ts.map +1 -0
- package/dist/controllers/datasource-management.controller.js +55 -0
- package/dist/controllers/datasource-management.controller.js.map +1 -0
- package/dist/dtos/create-datasource-management.dto.d.ts +25 -0
- package/dist/dtos/create-datasource-management.dto.d.ts.map +1 -0
- package/dist/dtos/create-datasource-management.dto.js +169 -0
- package/dist/dtos/create-datasource-management.dto.js.map +1 -0
- package/dist/dtos/datasource-introspection-mapping.dto.d.ts +45 -0
- package/dist/dtos/datasource-introspection-mapping.dto.d.ts.map +1 -0
- package/dist/dtos/datasource-introspection-mapping.dto.js +233 -0
- package/dist/dtos/datasource-introspection-mapping.dto.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/datasource-introspection-provider.interface.d.ts +26 -0
- package/dist/interfaces/datasource-introspection-provider.interface.d.ts.map +1 -0
- package/dist/interfaces/datasource-introspection-provider.interface.js +3 -0
- package/dist/interfaces/datasource-introspection-provider.interface.js.map +1 -0
- package/dist/repository/scheduled-job.repository.d.ts +3 -0
- package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
- package/dist/repository/scheduled-job.repository.js +60 -0
- package/dist/repository/scheduled-job.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +32 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +1011 -230
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +21 -0
- package/dist/services/action-metadata.service.d.ts +7 -0
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +76 -3
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/authentication.service.js +1 -1
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js +2 -2
- package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js +2 -2
- package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts +3 -0
- package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js +71 -0
- package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts.map +1 -1
- package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js +3 -3
- package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js.map +1 -1
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.d.ts +11 -0
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.d.ts.map +1 -0
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js +181 -0
- package/dist/services/datasource-introspection/mssql-datasource-introspection-provider.service.js.map +1 -0
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.d.ts +11 -0
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.d.ts.map +1 -0
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js +90 -0
- package/dist/services/datasource-introspection/mysql-datasource-introspection-provider.service.js.map +1 -0
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.d.ts +11 -0
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.d.ts.map +1 -0
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js +156 -0
- package/dist/services/datasource-introspection/postgres-datasource-introspection-provider.service.js.map +1 -0
- package/dist/services/datasource-introspection.service.d.ts +288 -0
- package/dist/services/datasource-introspection.service.d.ts.map +1 -0
- package/dist/services/datasource-introspection.service.js +1278 -0
- package/dist/services/datasource-introspection.service.js.map +1 -0
- package/dist/services/datasource-management.service.d.ts +60 -0
- package/dist/services/datasource-management.service.d.ts.map +1 -0
- package/dist/services/datasource-management.service.js +461 -0
- package/dist/services/datasource-management.service.js.map +1 -0
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +19 -0
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +1 -3
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +47 -15
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts +5 -0
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +85 -31
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts.map +1 -1
- package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js +2 -3
- package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js.map +1 -1
- package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts.map +1 -1
- package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js +2 -3
- package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +1 -0
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +32 -8
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/solid-ts-morph.service.d.ts +1 -1
- package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
- package/dist/services/solid-ts-morph.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +6 -0
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +66 -1
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +16 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/agent-hub-grooming.md +301 -0
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
- package/docs/datasource-introspection-ddl-analysis.md +326 -0
- package/docs/datasource-introspection-implementation-plan.md +306 -0
- package/docs/grouping-enhancements.md +89 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/docs/module-package-import-handoff.md +691 -0
- package/docs/seed-changes.md +65 -0
- package/docs/test-data-workflow.md +200 -0
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +1 -1
- package/src/controllers/datasource-introspection.controller.ts +58 -0
- package/src/controllers/datasource-management.controller.ts +24 -0
- package/src/dtos/create-datasource-management.dto.ts +139 -0
- package/src/dtos/datasource-introspection-mapping.dto.ts +182 -0
- package/src/index.ts +5 -0
- package/src/interfaces/datasource-introspection-provider.interface.ts +28 -0
- package/src/repository/scheduled-job.repository.ts +73 -0
- package/src/seeders/module-metadata-seeder.service.ts +1223 -262
- package/src/seeders/seed-data/solid-core-metadata.json +22 -1
- package/src/services/action-metadata.service.ts +87 -2
- package/src/services/authentication.service.ts +1 -1
- package/src/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.ts +9 -4
- package/src/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.ts +9 -4
- package/src/services/dashboard-providers/mq-dashboard-provider-utils.ts +82 -0
- package/src/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.ts +10 -4
- package/src/services/datasource-introspection/mssql-datasource-introspection-provider.service.ts +185 -0
- package/src/services/datasource-introspection/mysql-datasource-introspection-provider.service.ts +95 -0
- package/src/services/datasource-introspection/postgres-datasource-introspection-provider.service.ts +160 -0
- package/src/services/datasource-introspection.service.ts +1536 -0
- package/src/services/datasource-management.service.ts +566 -0
- package/src/services/field-metadata.service.ts +21 -1
- package/src/services/model-metadata.service.ts +50 -13
- package/src/services/role-metadata.service.ts +100 -47
- package/src/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.ts +2 -4
- package/src/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.ts +2 -4
- package/src/services/setting.service.ts +43 -12
- package/src/services/solid-ts-morph.service.ts +2 -2
- package/src/services/view-metadata.service.ts +79 -1
- package/src/solid-core.module.ts +16 -0
- package/.claude/settings.local.json +0 -15
- package/src/services/1.js +0 -6
package/src/services/datasource-introspection/postgres-datasource-introspection-provider.service.ts
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Injectable } from "@nestjs/common";
|
|
2
|
+
import { DataSource } from "typeorm";
|
|
3
|
+
import {
|
|
4
|
+
DatasourceIntrospectionColumn,
|
|
5
|
+
DatasourceIntrospectionProvider,
|
|
6
|
+
DatasourceIntrospectionTableRef,
|
|
7
|
+
} from "src/interfaces/datasource-introspection-provider.interface";
|
|
8
|
+
|
|
9
|
+
@Injectable()
|
|
10
|
+
export class PostgresDatasourceIntrospectionProviderService implements DatasourceIntrospectionProvider {
|
|
11
|
+
readonly type = "postgres";
|
|
12
|
+
|
|
13
|
+
supports(type: string) {
|
|
14
|
+
return type?.toLowerCase() === this.type;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async listTables(dataSource: DataSource): Promise<DatasourceIntrospectionTableRef[]> {
|
|
18
|
+
const rows = await dataSource.query(`
|
|
19
|
+
SELECT
|
|
20
|
+
TABLE_SCHEMA AS "tableSchema",
|
|
21
|
+
TABLE_NAME AS "tableName"
|
|
22
|
+
FROM INFORMATION_SCHEMA.TABLES
|
|
23
|
+
WHERE TABLE_TYPE = 'BASE TABLE'
|
|
24
|
+
AND TABLE_SCHEMA NOT IN ('pg_catalog', 'information_schema')
|
|
25
|
+
ORDER BY TABLE_SCHEMA, TABLE_NAME
|
|
26
|
+
`);
|
|
27
|
+
|
|
28
|
+
return rows.map((row: any) => ({
|
|
29
|
+
tableSchema: row.tableSchema ?? null,
|
|
30
|
+
tableName: row.tableName,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async listColumns(dataSource: DataSource): Promise<DatasourceIntrospectionColumn[]> {
|
|
35
|
+
const rows = await dataSource.query(`
|
|
36
|
+
SELECT
|
|
37
|
+
TABLE_SCHEMA AS "tableSchema",
|
|
38
|
+
TABLE_NAME AS "tableName",
|
|
39
|
+
COLUMN_NAME AS "columnName",
|
|
40
|
+
DATA_TYPE AS "dataType",
|
|
41
|
+
CASE
|
|
42
|
+
WHEN is_identity = 'YES' THEN true
|
|
43
|
+
WHEN COLUMN_DEFAULT LIKE 'nextval(%' THEN true
|
|
44
|
+
ELSE false
|
|
45
|
+
END AS "isAutoGenerated",
|
|
46
|
+
IS_NULLABLE AS "isNullable",
|
|
47
|
+
COLUMN_DEFAULT AS "defaultValue",
|
|
48
|
+
CHARACTER_MAXIMUM_LENGTH AS "characterMaximumLength",
|
|
49
|
+
NUMERIC_PRECISION AS "numericPrecision",
|
|
50
|
+
NUMERIC_SCALE AS "numericScale",
|
|
51
|
+
ORDINAL_POSITION AS "ordinalPosition"
|
|
52
|
+
FROM INFORMATION_SCHEMA.COLUMNS
|
|
53
|
+
WHERE TABLE_SCHEMA NOT IN ('pg_catalog', 'information_schema')
|
|
54
|
+
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION
|
|
55
|
+
`);
|
|
56
|
+
|
|
57
|
+
return rows.map((row: any) => ({
|
|
58
|
+
tableSchema: row.tableSchema ?? null,
|
|
59
|
+
tableName: row.tableName,
|
|
60
|
+
columnName: row.columnName,
|
|
61
|
+
dataType: row.dataType,
|
|
62
|
+
isAutoGenerated: Boolean(row.isAutoGenerated),
|
|
63
|
+
isNullable: String(row.isNullable).toUpperCase() === "YES",
|
|
64
|
+
defaultValue: row.defaultValue ?? null,
|
|
65
|
+
characterMaximumLength: this.toNumberOrNull(row.characterMaximumLength),
|
|
66
|
+
numericPrecision: this.toNumberOrNull(row.numericPrecision),
|
|
67
|
+
numericScale: this.toNumberOrNull(row.numericScale),
|
|
68
|
+
ordinalPosition: this.toNumberOrNull(row.ordinalPosition),
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async getTableDefinition(dataSource: DataSource, table: DatasourceIntrospectionTableRef): Promise<string | null> {
|
|
73
|
+
const rows = await dataSource.query(
|
|
74
|
+
`
|
|
75
|
+
WITH target_table AS (
|
|
76
|
+
SELECT c.oid, n.nspname AS schema_name, c.relname AS table_name
|
|
77
|
+
FROM pg_class c
|
|
78
|
+
INNER JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
79
|
+
WHERE c.relkind = 'r'
|
|
80
|
+
AND c.relname = $1
|
|
81
|
+
AND ($2::text IS NULL OR n.nspname = $2)
|
|
82
|
+
LIMIT 1
|
|
83
|
+
),
|
|
84
|
+
column_lines AS (
|
|
85
|
+
SELECT
|
|
86
|
+
a.attnum,
|
|
87
|
+
format(
|
|
88
|
+
' %I %s%s%s%s',
|
|
89
|
+
a.attname,
|
|
90
|
+
format_type(a.atttypid, a.atttypmod),
|
|
91
|
+
CASE
|
|
92
|
+
WHEN a.attidentity = 'a' THEN ' GENERATED ALWAYS AS IDENTITY'
|
|
93
|
+
WHEN a.attidentity = 'd' THEN ' GENERATED BY DEFAULT AS IDENTITY'
|
|
94
|
+
ELSE ''
|
|
95
|
+
END,
|
|
96
|
+
CASE
|
|
97
|
+
WHEN ad.adbin IS NOT NULL THEN ' DEFAULT ' || pg_get_expr(ad.adbin, ad.adrelid)
|
|
98
|
+
ELSE ''
|
|
99
|
+
END,
|
|
100
|
+
CASE
|
|
101
|
+
WHEN a.attnotnull THEN ' NOT NULL'
|
|
102
|
+
ELSE ''
|
|
103
|
+
END
|
|
104
|
+
) AS line
|
|
105
|
+
FROM target_table tt
|
|
106
|
+
INNER JOIN pg_attribute a ON a.attrelid = tt.oid
|
|
107
|
+
LEFT JOIN pg_attrdef ad
|
|
108
|
+
ON ad.adrelid = a.attrelid
|
|
109
|
+
AND ad.adnum = a.attnum
|
|
110
|
+
WHERE a.attnum > 0
|
|
111
|
+
AND NOT a.attisdropped
|
|
112
|
+
),
|
|
113
|
+
constraint_lines AS (
|
|
114
|
+
SELECT
|
|
115
|
+
c.conname,
|
|
116
|
+
format(' CONSTRAINT %I %s', c.conname, pg_get_constraintdef(c.oid, true)) AS line
|
|
117
|
+
FROM target_table tt
|
|
118
|
+
INNER JOIN pg_constraint c ON c.conrelid = tt.oid
|
|
119
|
+
WHERE c.contype IN ('p', 'u', 'f', 'c')
|
|
120
|
+
)
|
|
121
|
+
SELECT format(
|
|
122
|
+
'CREATE TABLE %I.%I (\n%s%s\n);',
|
|
123
|
+
tt.schema_name,
|
|
124
|
+
tt.table_name,
|
|
125
|
+
COALESCE(
|
|
126
|
+
(
|
|
127
|
+
SELECT string_agg(line, ',\n' ORDER BY attnum)
|
|
128
|
+
FROM column_lines
|
|
129
|
+
),
|
|
130
|
+
''
|
|
131
|
+
),
|
|
132
|
+
COALESCE(
|
|
133
|
+
(
|
|
134
|
+
SELECT CASE
|
|
135
|
+
WHEN EXISTS (SELECT 1 FROM constraint_lines)
|
|
136
|
+
THEN ',\n' || string_agg(line, ',\n' ORDER BY conname)
|
|
137
|
+
ELSE ''
|
|
138
|
+
END
|
|
139
|
+
FROM constraint_lines
|
|
140
|
+
),
|
|
141
|
+
''
|
|
142
|
+
)
|
|
143
|
+
) AS ddl
|
|
144
|
+
FROM target_table tt
|
|
145
|
+
`,
|
|
146
|
+
[table.tableName, table.tableSchema],
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
return rows?.[0]?.ddl ?? null;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private toNumberOrNull(value: unknown) {
|
|
153
|
+
if (value === null || value === undefined || value === "") {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const parsed = Number(value);
|
|
158
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
159
|
+
}
|
|
160
|
+
}
|