devmind 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +148 -0
  3. package/dist/cli.d.ts +6 -0
  4. package/dist/cli.js +232 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/codebase/generators/architecture.d.ts +4 -0
  7. package/dist/codebase/generators/architecture.js +33 -0
  8. package/dist/codebase/generators/architecture.js.map +1 -0
  9. package/dist/codebase/generators/modules.d.ts +9 -0
  10. package/dist/codebase/generators/modules.js +46 -0
  11. package/dist/codebase/generators/modules.js.map +1 -0
  12. package/dist/codebase/generators/overview.d.ts +5 -0
  13. package/dist/codebase/generators/overview.js +34 -0
  14. package/dist/codebase/generators/overview.js.map +1 -0
  15. package/dist/codebase/generators/skeleton.d.ts +8 -0
  16. package/dist/codebase/generators/skeleton.js +57 -0
  17. package/dist/codebase/generators/skeleton.js.map +1 -0
  18. package/dist/codebase/index.d.ts +24 -0
  19. package/dist/codebase/index.js +50 -0
  20. package/dist/codebase/index.js.map +1 -0
  21. package/dist/codebase/parsers/typescript.d.ts +14 -0
  22. package/dist/codebase/parsers/typescript.js +145 -0
  23. package/dist/codebase/parsers/typescript.js.map +1 -0
  24. package/dist/codebase/scanners/filesystem.d.ts +17 -0
  25. package/dist/codebase/scanners/filesystem.js +152 -0
  26. package/dist/codebase/scanners/filesystem.js.map +1 -0
  27. package/dist/codebase/utils/hashing.d.ts +15 -0
  28. package/dist/codebase/utils/hashing.js +50 -0
  29. package/dist/codebase/utils/hashing.js.map +1 -0
  30. package/dist/codebase/utils/stats.d.ts +12 -0
  31. package/dist/codebase/utils/stats.js +55 -0
  32. package/dist/codebase/utils/stats.js.map +1 -0
  33. package/dist/codebase/utils/tree.d.ts +10 -0
  34. package/dist/codebase/utils/tree.js +22 -0
  35. package/dist/codebase/utils/tree.js.map +1 -0
  36. package/dist/commands/analyze.d.ts +6 -0
  37. package/dist/commands/analyze.js +97 -0
  38. package/dist/commands/analyze.js.map +1 -0
  39. package/dist/commands/context.d.ts +4 -0
  40. package/dist/commands/context.js +54 -0
  41. package/dist/commands/context.js.map +1 -0
  42. package/dist/core/config.d.ts +20 -0
  43. package/dist/core/config.js +40 -0
  44. package/dist/core/config.js.map +1 -0
  45. package/dist/core/errors.d.ts +18 -0
  46. package/dist/core/errors.js +53 -0
  47. package/dist/core/errors.js.map +1 -0
  48. package/dist/core/fileio.d.ts +10 -0
  49. package/dist/core/fileio.js +57 -0
  50. package/dist/core/fileio.js.map +1 -0
  51. package/dist/core/index.d.ts +8 -0
  52. package/dist/core/index.js +9 -0
  53. package/dist/core/index.js.map +1 -0
  54. package/dist/core/logger.d.ts +15 -0
  55. package/dist/core/logger.js +40 -0
  56. package/dist/core/logger.js.map +1 -0
  57. package/dist/core/types.d.ts +106 -0
  58. package/dist/core/types.js +5 -0
  59. package/dist/core/types.js.map +1 -0
  60. package/dist/database/cli.d.ts +7 -0
  61. package/dist/database/cli.js +132 -0
  62. package/dist/database/cli.js.map +1 -0
  63. package/dist/database/commands/checkpoint.d.ts +13 -0
  64. package/dist/database/commands/checkpoint.js +136 -0
  65. package/dist/database/commands/checkpoint.js.map +1 -0
  66. package/dist/database/commands/generate.d.ts +21 -0
  67. package/dist/database/commands/generate.js +269 -0
  68. package/dist/database/commands/generate.js.map +1 -0
  69. package/dist/database/commands/handoff.d.ts +15 -0
  70. package/dist/database/commands/handoff.js +332 -0
  71. package/dist/database/commands/handoff.js.map +1 -0
  72. package/dist/database/commands/history.d.ts +13 -0
  73. package/dist/database/commands/history.js +148 -0
  74. package/dist/database/commands/history.js.map +1 -0
  75. package/dist/database/commands/init.d.ts +10 -0
  76. package/dist/database/commands/init.js +28 -0
  77. package/dist/database/commands/init.js.map +1 -0
  78. package/dist/database/commands/learn.d.ts +12 -0
  79. package/dist/database/commands/learn.js +93 -0
  80. package/dist/database/commands/learn.js.map +1 -0
  81. package/dist/database/commands/memory.d.ts +90 -0
  82. package/dist/database/commands/memory.js +353 -0
  83. package/dist/database/commands/memory.js.map +1 -0
  84. package/dist/database/commands/show.d.ts +9 -0
  85. package/dist/database/commands/show.js +136 -0
  86. package/dist/database/commands/show.js.map +1 -0
  87. package/dist/database/commands/validate.d.ts +9 -0
  88. package/dist/database/commands/validate.js +200 -0
  89. package/dist/database/commands/validate.js.map +1 -0
  90. package/dist/database/commands/watch.d.ts +9 -0
  91. package/dist/database/commands/watch.js +77 -0
  92. package/dist/database/commands/watch.js.map +1 -0
  93. package/dist/database/extractors/drizzle.d.ts +62 -0
  94. package/dist/database/extractors/drizzle.js +251 -0
  95. package/dist/database/extractors/drizzle.js.map +1 -0
  96. package/dist/database/extractors/firebase.d.ts +39 -0
  97. package/dist/database/extractors/firebase.js +192 -0
  98. package/dist/database/extractors/firebase.js.map +1 -0
  99. package/dist/database/extractors/index.d.ts +69 -0
  100. package/dist/database/extractors/index.js +345 -0
  101. package/dist/database/extractors/index.js.map +1 -0
  102. package/dist/database/extractors/mongodb.d.ts +44 -0
  103. package/dist/database/extractors/mongodb.js +198 -0
  104. package/dist/database/extractors/mongodb.js.map +1 -0
  105. package/dist/database/extractors/mysql.d.ts +61 -0
  106. package/dist/database/extractors/mysql.js +173 -0
  107. package/dist/database/extractors/mysql.js.map +1 -0
  108. package/dist/database/extractors/postgres.d.ts +47 -0
  109. package/dist/database/extractors/postgres.js +141 -0
  110. package/dist/database/extractors/postgres.js.map +1 -0
  111. package/dist/database/extractors/prisma.d.ts +71 -0
  112. package/dist/database/extractors/prisma.js +270 -0
  113. package/dist/database/extractors/prisma.js.map +1 -0
  114. package/dist/database/extractors/sqlite.d.ts +50 -0
  115. package/dist/database/extractors/sqlite.js +148 -0
  116. package/dist/database/extractors/sqlite.js.map +1 -0
  117. package/dist/database/generators/learning-generator.d.ts +48 -0
  118. package/dist/database/generators/learning-generator.js +221 -0
  119. package/dist/database/generators/learning-generator.js.map +1 -0
  120. package/dist/database/generators/templates.d.ts +103 -0
  121. package/dist/database/generators/templates.js +1557 -0
  122. package/dist/database/generators/templates.js.map +1 -0
  123. package/dist/database/index.d.ts +15 -0
  124. package/dist/database/index.js +16 -0
  125. package/dist/database/index.js.map +1 -0
  126. package/dist/database/utils/json-output.d.ts +26 -0
  127. package/dist/database/utils/json-output.js +37 -0
  128. package/dist/database/utils/json-output.js.map +1 -0
  129. package/dist/generators/unified.d.ts +1 -0
  130. package/dist/generators/unified.js +173 -0
  131. package/dist/generators/unified.js.map +1 -0
  132. package/dist/index.d.ts +4 -0
  133. package/dist/index.js +5 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/utils/config-detector.d.ts +1 -0
  136. package/dist/utils/config-detector.js +40 -0
  137. package/dist/utils/config-detector.js.map +1 -0
  138. package/dist/utils/config-loader.d.ts +16 -0
  139. package/dist/utils/config-loader.js +20 -0
  140. package/dist/utils/config-loader.js.map +1 -0
  141. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/extractors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * MongoDB Schema Extractor
3
+ * Extracts database schema information from MongoDB databases by sampling documents
4
+ */
5
+ export interface MongoDBFieldInfo {
6
+ name: string;
7
+ type: string;
8
+ nullable: boolean;
9
+ isArray: boolean;
10
+ sampleValues?: any[];
11
+ }
12
+ export interface MongoDBCollectionInfo {
13
+ name: string;
14
+ documentCount: number;
15
+ fields: MongoDBFieldInfo[];
16
+ sampleSize: number;
17
+ indexes: {
18
+ name: string;
19
+ keys: Record<string, any>;
20
+ unique: boolean;
21
+ }[];
22
+ }
23
+ export interface MongoDBSchemaInfo {
24
+ collections: MongoDBCollectionInfo[];
25
+ databaseType: 'mongodb';
26
+ databaseName: string;
27
+ connectionString: string;
28
+ }
29
+ export declare class MongoDBExtractor {
30
+ private connectionString;
31
+ private client;
32
+ private db;
33
+ private sampleSize;
34
+ constructor(connectionString: string, sampleSize?: number);
35
+ extract(): Promise<MongoDBSchemaInfo>;
36
+ private extractCollectionSchema;
37
+ private inferSchemaFromDocuments;
38
+ private analyzeObject;
39
+ private getMongoType;
40
+ private determinePrimaryType;
41
+ private extractDatabaseName;
42
+ private sanitizeConnectionString;
43
+ close(): Promise<void>;
44
+ }
@@ -0,0 +1,198 @@
1
+ /**
2
+ * MongoDB Schema Extractor
3
+ * Extracts database schema information from MongoDB databases by sampling documents
4
+ */
5
+ import { MongoClient } from 'mongodb';
6
+ export class MongoDBExtractor {
7
+ connectionString;
8
+ client = null;
9
+ db = null;
10
+ sampleSize = 100;
11
+ constructor(connectionString, sampleSize = 100) {
12
+ this.connectionString = connectionString;
13
+ this.sampleSize = sampleSize;
14
+ }
15
+ async extract() {
16
+ this.client = new MongoClient(this.connectionString);
17
+ try {
18
+ await this.client.connect();
19
+ // Extract database name from connection string
20
+ const dbName = this.extractDatabaseName(this.connectionString);
21
+ this.db = this.client.db(dbName);
22
+ // List all collections
23
+ const collectionsInfo = await this.db.listCollections().toArray();
24
+ const collectionNames = collectionsInfo.map((c) => c.name);
25
+ // Extract schema for each collection
26
+ const collections = await Promise.all(collectionNames.map((name) => this.extractCollectionSchema(name)));
27
+ return {
28
+ collections,
29
+ databaseType: 'mongodb',
30
+ databaseName: dbName,
31
+ connectionString: this.sanitizeConnectionString(this.connectionString),
32
+ };
33
+ }
34
+ catch (error) {
35
+ throw error;
36
+ }
37
+ }
38
+ async extractCollectionSchema(collectionName) {
39
+ if (!this.db)
40
+ throw new Error('Database not connected');
41
+ const collection = this.db.collection(collectionName);
42
+ // Get document count
43
+ const documentCount = await collection.countDocuments();
44
+ // Sample documents
45
+ const sampleDocuments = await collection.find({}).limit(this.sampleSize).toArray();
46
+ // Get indexes
47
+ const indexes = await collection.indexes();
48
+ // Infer schema from sampled documents
49
+ const fields = this.inferSchemaFromDocuments(sampleDocuments);
50
+ return {
51
+ name: collectionName,
52
+ documentCount,
53
+ fields,
54
+ sampleSize: sampleDocuments.length,
55
+ indexes: indexes.map((idx) => ({
56
+ name: idx.name || '',
57
+ keys: idx.key,
58
+ unique: idx.unique || false,
59
+ })),
60
+ };
61
+ }
62
+ inferSchemaFromDocuments(documents) {
63
+ if (documents.length === 0)
64
+ return [];
65
+ const fieldMap = new Map();
66
+ // Analyze all documents
67
+ for (const doc of documents) {
68
+ this.analyzeObject(doc, fieldMap, '');
69
+ }
70
+ // Convert to field info
71
+ const fields = [];
72
+ for (const [fieldName, info] of fieldMap.entries()) {
73
+ const types = Array.from(info.types);
74
+ const primaryType = this.determinePrimaryType(types);
75
+ fields.push({
76
+ name: fieldName,
77
+ type: primaryType,
78
+ nullable: info.nullCount > 0,
79
+ isArray: info.isArray,
80
+ sampleValues: info.samples.slice(0, 3), // Keep first 3 sample values
81
+ });
82
+ }
83
+ return fields.sort((a, b) => a.name.localeCompare(b.name));
84
+ }
85
+ analyzeObject(obj, fieldMap, prefix) {
86
+ for (const [key, value] of Object.entries(obj)) {
87
+ const fieldName = prefix ? `${prefix}.${key}` : key;
88
+ if (!fieldMap.has(fieldName)) {
89
+ fieldMap.set(fieldName, {
90
+ types: new Set(),
91
+ nullCount: 0,
92
+ isArray: false,
93
+ samples: [],
94
+ });
95
+ }
96
+ const fieldInfo = fieldMap.get(fieldName);
97
+ if (value === null || value === undefined) {
98
+ fieldInfo.nullCount++;
99
+ fieldInfo.types.add('null');
100
+ }
101
+ else if (Array.isArray(value)) {
102
+ fieldInfo.isArray = true;
103
+ fieldInfo.types.add('Array');
104
+ // Analyze array elements
105
+ if (value.length > 0) {
106
+ const elementType = this.getMongoType(value[0]);
107
+ fieldInfo.types.add(`Array<${elementType}>`);
108
+ }
109
+ }
110
+ else if (typeof value === 'object') {
111
+ const mongoType = this.getMongoType(value);
112
+ fieldInfo.types.add(mongoType);
113
+ // Don't recurse into ObjectId, Date, etc.
114
+ if (mongoType === 'Object') {
115
+ this.analyzeObject(value, fieldMap, fieldName);
116
+ }
117
+ }
118
+ else {
119
+ const mongoType = this.getMongoType(value);
120
+ fieldInfo.types.add(mongoType);
121
+ // Store sample values
122
+ if (fieldInfo.samples.length < 3 && !['null', 'undefined'].includes(mongoType)) {
123
+ fieldInfo.samples.push(value);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ getMongoType(value) {
129
+ if (value === null)
130
+ return 'null';
131
+ if (value === undefined)
132
+ return 'undefined';
133
+ // Check for MongoDB types
134
+ if (value._bsontype === 'ObjectId' || value.constructor?.name === 'ObjectId') {
135
+ return 'ObjectId';
136
+ }
137
+ if (value instanceof Date)
138
+ return 'Date';
139
+ if (value._bsontype === 'Binary')
140
+ return 'Binary';
141
+ if (value._bsontype === 'Decimal128')
142
+ return 'Decimal128';
143
+ // Check for standard JavaScript types
144
+ if (Array.isArray(value))
145
+ return 'Array';
146
+ if (typeof value === 'string')
147
+ return 'String';
148
+ if (typeof value === 'number') {
149
+ return Number.isInteger(value) ? 'Int' : 'Double';
150
+ }
151
+ if (typeof value === 'boolean')
152
+ return 'Boolean';
153
+ if (typeof value === 'object')
154
+ return 'Object';
155
+ return 'Mixed';
156
+ }
157
+ determinePrimaryType(types) {
158
+ if (types.length === 0)
159
+ return 'Mixed';
160
+ if (types.length === 1)
161
+ return types[0];
162
+ // Filter out null
163
+ const nonNullTypes = types.filter((t) => t !== 'null');
164
+ if (nonNullTypes.length === 1)
165
+ return nonNullTypes[0];
166
+ if (nonNullTypes.length === 0)
167
+ return 'null';
168
+ // If multiple types, return Mixed
169
+ return `Mixed(${nonNullTypes.join('|')})`;
170
+ }
171
+ extractDatabaseName(connectionString) {
172
+ try {
173
+ // Parse connection string to extract database name
174
+ // mongodb://host:port/dbname or mongodb+srv://host/dbname
175
+ const match = connectionString.match(/\/([^/?]+)(\?|$)/);
176
+ if (match && match[1]) {
177
+ return match[1];
178
+ }
179
+ // Default to 'test' if not found
180
+ return 'test';
181
+ }
182
+ catch {
183
+ return 'test';
184
+ }
185
+ }
186
+ sanitizeConnectionString(connectionString) {
187
+ // Remove password from connection string for display
188
+ return connectionString.replace(/mongodb(\+srv)?:\/\/([^:]+):([^@]+)@/, 'mongodb$1://$2:***@');
189
+ }
190
+ async close() {
191
+ if (this.client) {
192
+ await this.client.close();
193
+ this.client = null;
194
+ this.db = null;
195
+ }
196
+ }
197
+ }
198
+ //# sourceMappingURL=mongodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../../src/database/extractors/mongodb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * MySQL Schema Extractor
3
+ * Extracts database schema information from MySQL databases
4
+ */
5
+ export interface MySQLColumnInfo {
6
+ name: string;
7
+ type: string;
8
+ nullable: boolean;
9
+ default: string | null;
10
+ extra: string;
11
+ comment: string;
12
+ }
13
+ export interface MySQLIndexInfo {
14
+ name: string;
15
+ columns: string[];
16
+ unique: boolean;
17
+ isPrimaryKey: boolean;
18
+ indexType: string;
19
+ }
20
+ export interface MySQLForeignKeyInfo {
21
+ column: string;
22
+ referencesTable: string;
23
+ referencesColumn: string;
24
+ onDelete: string | null;
25
+ onUpdate: string | null;
26
+ }
27
+ export interface MySQLTableInfo {
28
+ name: string;
29
+ columns: MySQLColumnInfo[];
30
+ indexes: MySQLIndexInfo[];
31
+ foreignKeys: MySQLForeignKeyInfo[];
32
+ primaryKey: string[];
33
+ engine: string;
34
+ comment: string;
35
+ autoIncrement: string | null;
36
+ }
37
+ export interface MySQLSchemaInfo {
38
+ tables: MySQLTableInfo[];
39
+ databaseType: 'mysql';
40
+ databaseName: string;
41
+ }
42
+ export declare class MySQLExtractor {
43
+ private pool;
44
+ private databaseName;
45
+ constructor(connectionString: string);
46
+ extract(): Promise<MySQLSchemaInfo>;
47
+ private extractTables;
48
+ private extractColumns;
49
+ private extractIndexes;
50
+ private extractForeignKeys;
51
+ close(): Promise<void>;
52
+ }
53
+ export declare const MYSQL_TYPE_MAPPINGS: ({
54
+ dbType: string;
55
+ tsType: string;
56
+ maxLength: string;
57
+ } | {
58
+ dbType: string;
59
+ tsType: string;
60
+ maxLength?: undefined;
61
+ })[];
@@ -0,0 +1,173 @@
1
+ /**
2
+ * MySQL Schema Extractor
3
+ * Extracts database schema information from MySQL databases
4
+ */
5
+ import mysql from 'mysql2/promise';
6
+ export class MySQLExtractor {
7
+ pool;
8
+ databaseName;
9
+ constructor(connectionString) {
10
+ // Parse connection string to extract database name
11
+ const url = new URL(connectionString);
12
+ this.databaseName = url.pathname.slice(1) || 'database';
13
+ this.pool = mysql.createPool({
14
+ host: url.hostname || 'localhost',
15
+ port: parseInt(url.port) || 3306,
16
+ user: url.username || 'root',
17
+ password: url.password || '',
18
+ database: this.databaseName,
19
+ waitForConnections: true,
20
+ connectionLimit: 10,
21
+ queueLimit: 0,
22
+ });
23
+ }
24
+ async extract() {
25
+ const connection = await this.pool.getConnection();
26
+ try {
27
+ const tables = await this.extractTables(connection);
28
+ const tablesWithDetails = await Promise.all(tables.map(async (table) => {
29
+ const tableName = table.name || '';
30
+ const columns = await this.extractColumns(connection, tableName);
31
+ const indexes = await this.extractIndexes(connection, tableName);
32
+ const foreignKeys = await this.extractForeignKeys(connection, tableName);
33
+ const primaryKey = indexes.filter((i) => i.isPrimaryKey).flatMap((i) => i.columns);
34
+ return {
35
+ name: tableName,
36
+ comment: table.comment || '',
37
+ engine: table.engine || 'InnoDB',
38
+ autoIncrement: table.autoIncrement || null,
39
+ columns,
40
+ indexes,
41
+ foreignKeys,
42
+ primaryKey,
43
+ };
44
+ }));
45
+ return {
46
+ tables: tablesWithDetails,
47
+ databaseType: 'mysql',
48
+ databaseName: this.databaseName,
49
+ };
50
+ }
51
+ finally {
52
+ connection.release();
53
+ }
54
+ }
55
+ async extractTables(connection) {
56
+ const [rows] = await connection.query(`
57
+ SELECT
58
+ TABLE_NAME as table_name,
59
+ TABLE_COMMENT as table_comment,
60
+ ENGINE as engine,
61
+ AUTO_INCREMENT as auto_increment
62
+ FROM information_schema.TABLES
63
+ WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'
64
+ ORDER BY TABLE_NAME
65
+ `, [this.databaseName]);
66
+ return rows.map((row) => ({
67
+ name: row.table_name,
68
+ comment: row.table_comment,
69
+ engine: row.engine,
70
+ autoIncrement: row.auto_increment?.toString() || null,
71
+ }));
72
+ }
73
+ async extractColumns(connection, tableName) {
74
+ const [rows] = await connection.query(`
75
+ SELECT
76
+ COLUMN_NAME as column_name,
77
+ COLUMN_TYPE as column_type,
78
+ IS_NULLABLE as is_nullable,
79
+ COLUMN_DEFAULT as column_default,
80
+ EXTRA as extra,
81
+ COLUMN_COMMENT as column_comment
82
+ FROM information_schema.COLUMNS
83
+ WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
84
+ ORDER BY ORDINAL_POSITION
85
+ `, [this.databaseName, tableName]);
86
+ return rows.map((row) => ({
87
+ name: row.column_name,
88
+ type: row.column_type,
89
+ nullable: row.is_nullable === 'YES',
90
+ default: row.column_default,
91
+ extra: row.extra,
92
+ comment: row.column_comment,
93
+ }));
94
+ }
95
+ async extractIndexes(connection, tableName) {
96
+ const [rows] = await connection.query(`
97
+ SELECT
98
+ INDEX_NAME as index_name,
99
+ NON_UNIQUE as non_unique,
100
+ INDEX_TYPE as index_type,
101
+ GROUP_CONcat(COLUMN_NAME ORDER BY SEQ_IN_INDEX) as columns
102
+ FROM information_schema.STATISTICS
103
+ WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
104
+ GROUP BY INDEX_NAME, NON_UNIQUE, INDEX_TYPE
105
+ `, [this.databaseName, tableName]);
106
+ // Also get primary key info
107
+ const [pkRows] = await connection.query(`
108
+ SELECT
109
+ INDEX_NAME as index_name
110
+ FROM information_schema.STATISTICS
111
+ WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND INDEX_NAME = 'PRIMARY'
112
+ `, [this.databaseName, tableName]);
113
+ const primaryKeyIndexNames = pkRows.map((row) => row.index_name);
114
+ return rows.map((row) => {
115
+ const indexName = row.index_name;
116
+ const columns = row.columns.split(',');
117
+ return {
118
+ name: indexName,
119
+ columns,
120
+ unique: row.non_unique === 0,
121
+ isPrimaryKey: indexName === 'PRIMARY',
122
+ indexType: row.index_type,
123
+ };
124
+ });
125
+ }
126
+ async extractForeignKeys(connection, tableName) {
127
+ const [rows] = await connection.query(`
128
+ SELECT
129
+ COLUMN_NAME as column_name,
130
+ REFERENCED_TABLE_NAME as referenced_table_name,
131
+ REFERENCED_COLUMN_NAME as referenced_column_name,
132
+ DELETE_RULE as delete_rule,
133
+ UPDATE_RULE as update_rule
134
+ FROM information_schema.KEY_COLUMN_USAGE
135
+ WHERE TABLE_SCHEMA = ?
136
+ AND TABLE_NAME = ?
137
+ AND REFERENCED_TABLE_NAME IS NOT NULL
138
+ `, [this.databaseName, tableName]);
139
+ return rows.map((row) => ({
140
+ column: row.column_name,
141
+ referencesTable: row.referenced_table_name,
142
+ referencesColumn: row.referenced_column_name,
143
+ onDelete: row.delete_rule,
144
+ onUpdate: row.update_rule,
145
+ }));
146
+ }
147
+ async close() {
148
+ await this.pool.end();
149
+ }
150
+ }
151
+ // MySQL-specific type mappings
152
+ export const MYSQL_TYPE_MAPPINGS = [
153
+ { dbType: 'varchar', tsType: 'string', maxLength: '(n)' },
154
+ { dbType: 'text', tsType: 'string' },
155
+ { dbType: 'longtext', tsType: 'string' },
156
+ { dbType: 'int', tsType: 'number' },
157
+ { dbType: 'bigint', tsType: 'number' },
158
+ { dbType: 'smallint', tsType: 'number' },
159
+ { dbType: 'tinyint', tsType: 'number' },
160
+ { dbType: 'decimal', tsType: 'number' },
161
+ { dbType: 'float', tsType: 'number' },
162
+ { dbType: 'double', tsType: 'number' },
163
+ { dbType: 'boolean', tsType: 'boolean' },
164
+ { dbType: 'tinyint(1)', tsType: 'boolean' },
165
+ { dbType: 'date', tsType: 'Date' },
166
+ { dbType: 'datetime', tsType: 'Date' },
167
+ { dbType: 'timestamp', tsType: 'Date' },
168
+ { dbType: 'json', tsType: 'Record<string, unknown>' },
169
+ { dbType: 'enum', tsType: 'string' },
170
+ { dbType: 'set', tsType: 'string[]' },
171
+ { dbType: 'blob', tsType: 'Buffer' },
172
+ ];
173
+ //# sourceMappingURL=mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../../src/database/extractors/mysql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * PostgreSQL Schema Extractor
3
+ * Extracts database schema information from PostgreSQL databases
4
+ */
5
+ export interface ColumnInfo {
6
+ name: string;
7
+ type: string;
8
+ nullable: boolean;
9
+ default: string | null;
10
+ description: string | null;
11
+ }
12
+ export interface IndexInfo {
13
+ name: string;
14
+ columns: string[];
15
+ unique: boolean;
16
+ isPrimaryKey: boolean;
17
+ }
18
+ export interface ForeignKeyInfo {
19
+ column: string;
20
+ referencesTable: string;
21
+ referencesColumn: string;
22
+ onDelete: string | null;
23
+ onUpdate: string | null;
24
+ }
25
+ export interface TableInfo {
26
+ name: string;
27
+ columns: ColumnInfo[];
28
+ indexes: IndexInfo[];
29
+ foreignKeys: ForeignKeyInfo[];
30
+ primaryKey: string[];
31
+ description: string | null;
32
+ }
33
+ export interface SchemaInfo {
34
+ tables: TableInfo[];
35
+ databaseType: 'postgresql';
36
+ schemaName: string;
37
+ }
38
+ export declare class PostgresExtractor {
39
+ private pool;
40
+ constructor(connectionString: string);
41
+ extract(schemaName?: string): Promise<SchemaInfo>;
42
+ private extractTables;
43
+ private extractColumns;
44
+ private extractIndexes;
45
+ private extractForeignKeys;
46
+ close(): Promise<void>;
47
+ }