@dbcube/cli 1.1.8 → 1.1.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbcube/cli",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "dbcube": "node src/index.js"
@@ -47,8 +47,6 @@ async function main() {
47
47
  for (const config of configuredDatabases) {
48
48
  console.log(`\n${chalk.blue('┌─')} Procesando base de datos: ${chalk.bold(config.name)} ${chalk.gray(`(${config.type})`)}`);
49
49
 
50
- const schema = new Schema(config.name);
51
-
52
50
  // Obtener nombres reales de los seeders desde los archivos .cube
53
51
  const realSeeders = progress.extractSeederNamesFromCubes(cubeFiles);
54
52
 
@@ -57,21 +55,22 @@ async function main() {
57
55
  continue;
58
56
  }
59
57
 
60
- // Procesar cada seeder con indicador de progreso
61
- console.log(` ${chalk.blue('├─')} Ejecutando ${realSeeders.length} seeders:`);
62
-
63
- for (let i = 0; i < realSeeders.length; i++) {
64
- const seederName = realSeeders[i];
65
- await progress.showTableProgress(seederName, 'seeder');
66
- totalSeedersProcessed++;
67
- }
58
+ console.log(` ${chalk.blue('├─')} Seeders encontrados: ${chalk.cyan(realSeeders.join(', '))}`);
59
+ console.log(` ${chalk.blue('├─')} Ejecutando seeders...`);
68
60
 
69
- // Ejecutar los seeders reales
70
- await progress.showProgress('Insertando datos de prueba', async () => {
61
+ // Ejecutar los seeders reales SIN animación para que se vean los mensajes del core
62
+ try {
63
+ const schema = new Schema(config.name);
71
64
  await schema.executeSeeders();
72
- });
65
+
66
+ console.log(` ${chalk.green('├─')} ✅ Seeders completados exitosamente`);
67
+ totalSeedersProcessed += realSeeders.length;
68
+ } catch (schemaError) {
69
+ console.log(` ${chalk.red('├─')} ❌ Error durante seeders: ${schemaError.message}`);
70
+ totalSeedersProcessed = 0;
71
+ }
73
72
 
74
- console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Base de datos ${config.name} completada`);
73
+ console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Procesamiento de ${config.name} completado`);
75
74
  }
76
75
 
77
76
  // Mostrar resumen
@@ -47,8 +47,6 @@ async function main() {
47
47
  for (const config of configuredDatabases) {
48
48
  console.log(`\n${chalk.blue('┌─')} Procesando base de datos: ${chalk.bold(config.name)} ${chalk.gray(`(${config.type})`)}`);
49
49
 
50
- const schema = new Schema(config.name);
51
-
52
50
  // Obtener nombres reales de las tablas desde los archivos .cube
53
51
  const realTables = progress.extractTableNamesFromCubes(cubeFiles);
54
52
 
@@ -57,27 +55,27 @@ async function main() {
57
55
  continue;
58
56
  }
59
57
 
60
- // Procesar cada tabla con indicador de progreso
61
- console.log(` ${chalk.blue('├─')} Ejecutando fresh en ${realTables.length} tablas:`);
62
-
63
- for (let i = 0; i < realTables.length; i++) {
64
- const tableName = realTables[i];
65
- await progress.showTableProgress(tableName, 'refresh');
66
- totalTablesProcessed++;
67
- }
58
+ console.log(` ${chalk.blue('├─')} Tablas encontradas: ${chalk.cyan(realTables.join(', '))}`);
59
+ console.log(` ${chalk.blue('├─')} Ejecutando fresh tables...`);
68
60
 
69
- // Ejecutar el fresh real
70
- await progress.showProgress('Aplicando fresh en la base de datos', async () => {
61
+ // Ejecutar el fresh real SIN animación para que se vean los mensajes del core
62
+ try {
63
+ const schema = new Schema(config.name);
71
64
  const result = await schema.freshTables();
72
65
 
73
66
  if (result === null) {
74
- throw new Error(`Base de datos ${config.name} no existe o no es accesible`);
67
+ console.log(` ${chalk.red('├─')} Error: Base de datos ${config.name} no existe o no es accesible`);
68
+ totalTablesProcessed = 0;
69
+ } else {
70
+ console.log(` ${chalk.green('├─')} ✅ Fresh completado exitosamente`);
71
+ totalTablesProcessed += realTables.length;
75
72
  }
76
-
77
- return result;
78
- });
73
+ } catch (schemaError) {
74
+ console.log(` ${chalk.red('├─')} ❌ Error durante fresh: ${schemaError.message}`);
75
+ totalTablesProcessed = 0;
76
+ }
79
77
 
80
- console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Base de datos ${config.name} completada`);
78
+ console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Procesamiento de ${config.name} completado`);
81
79
  }
82
80
 
83
81
  // Mostrar resumen
@@ -47,8 +47,6 @@ async function main() {
47
47
  for (const config of configuredDatabases) {
48
48
  console.log(`\n${chalk.blue('┌─')} Procesando base de datos: ${chalk.bold(config.name)} ${chalk.gray(`(${config.type})`)}`);
49
49
 
50
- const schema = new Schema(config.name);
51
-
52
50
  // Obtener nombres reales de las tablas desde los archivos .cube
53
51
  const realTables = progress.extractTableNamesFromCubes(cubeFiles);
54
52
 
@@ -57,21 +55,22 @@ async function main() {
57
55
  continue;
58
56
  }
59
57
 
60
- // Procesar cada tabla con indicador de progreso
61
- console.log(` ${chalk.blue('├─')} Refrescando ${realTables.length} tablas:`);
62
-
63
- for (let i = 0; i < realTables.length; i++) {
64
- const tableName = realTables[i];
65
- await progress.showTableProgress(tableName, 'refresh');
66
- totalTablesProcessed++;
67
- }
58
+ console.log(` ${chalk.blue('├─')} Tablas encontradas: ${chalk.cyan(realTables.join(', '))}`);
59
+ console.log(` ${chalk.blue('├─')} Ejecutando refresh tables...`);
68
60
 
69
- // Ejecutar el refresh real
70
- await progress.showProgress('Aplicando cambios en la base de datos', async () => {
61
+ // Ejecutar el refresh real SIN animación para que se vean los mensajes del core
62
+ try {
63
+ const schema = new Schema(config.name);
71
64
  await schema.refreshTables();
72
- });
65
+
66
+ console.log(` ${chalk.green('├─')} ✅ Refresh completado exitosamente`);
67
+ totalTablesProcessed += realTables.length;
68
+ } catch (schemaError) {
69
+ console.log(` ${chalk.red('├─')} ❌ Error durante refresh: ${schemaError.message}`);
70
+ totalTablesProcessed = 0;
71
+ }
73
72
 
74
- console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Base de datos ${config.name} completada`);
73
+ console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Procesamiento de ${config.name} completado`);
75
74
  }
76
75
 
77
76
  // Mostrar resumen
@@ -47,8 +47,6 @@ async function main() {
47
47
  for (const config of configuredDatabases) {
48
48
  console.log(`\n${chalk.blue('┌─')} Procesando base de datos: ${chalk.bold(config.name)} ${chalk.gray(`(${config.type})`)}`);
49
49
 
50
- const schema = new Schema(config.name);
51
-
52
50
  // Obtener nombres reales de los triggers desde los archivos .cube
53
51
  const realTriggers = progress.extractTriggerNamesFromCubes(cubeFiles);
54
52
 
@@ -57,21 +55,22 @@ async function main() {
57
55
  continue;
58
56
  }
59
57
 
60
- // Procesar cada trigger con indicador de progreso
61
- console.log(` ${chalk.blue('├─')} Ejecutando ${realTriggers.length} triggers:`);
62
-
63
- for (let i = 0; i < realTriggers.length; i++) {
64
- const triggerName = realTriggers[i];
65
- await progress.showTableProgress(triggerName, 'trigger');
66
- totalTriggersProcessed++;
67
- }
58
+ console.log(` ${chalk.blue('├─')} Triggers encontrados: ${chalk.cyan(realTriggers.join(', '))}`);
59
+ console.log(` ${chalk.blue('├─')} Ejecutando triggers...`);
68
60
 
69
- // Ejecutar los triggers reales
70
- await progress.showProgress('Aplicando triggers en la base de datos', async () => {
61
+ // Ejecutar los triggers reales SIN animación para que se vean los mensajes del core
62
+ try {
63
+ const schema = new Schema(config.name);
71
64
  await schema.executeTriggers();
72
- });
65
+
66
+ console.log(` ${chalk.green('├─')} ✅ Triggers completados exitosamente`);
67
+ totalTriggersProcessed += realTriggers.length;
68
+ } catch (schemaError) {
69
+ console.log(` ${chalk.red('├─')} ❌ Error durante triggers: ${schemaError.message}`);
70
+ totalTriggersProcessed = 0;
71
+ }
73
72
 
74
- console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Base de datos ${config.name} completada`);
73
+ console.log(` ${chalk.blue('└─')} ${chalk.green('✓')} Procesamiento de ${config.name} completado`);
75
74
  }
76
75
 
77
76
  // Mostrar resumen
@@ -153,22 +153,28 @@ class ProgressIndicator {
153
153
  try {
154
154
  const content = fs.readFileSync(filePath, 'utf8');
155
155
 
156
- // Buscar patrones de nombre de tabla en el archivo .cube
157
- // Patrón 1: @table("nombre_tabla") o @table('nombre_tabla')
156
+ // Patrón principal: @meta({ name: "nombre_tabla"; }) o @meta({ name: 'nombre_tabla'; })
157
+ const metaMatch = content.match(/@meta\s*\(\s*\{\s*name\s*:\s*["']([^"']+)["']\s*;?\s*[^}]*\}\s*\)/);
158
+ if (metaMatch) {
159
+ tableNames.push(metaMatch[1]);
160
+ continue;
161
+ }
162
+
163
+ // Patrón alternativo: @table("nombre_tabla") o @table('nombre_tabla')
158
164
  const tableMatch = content.match(/@table\(\s*["']([^"']+)["']\s*\)/);
159
165
  if (tableMatch) {
160
166
  tableNames.push(tableMatch[1]);
161
167
  continue;
162
168
  }
163
169
 
164
- // Patrón 2: table: "nombre_tabla" o table: 'nombre_tabla'
170
+ // Patrón 3: table: "nombre_tabla" o table: 'nombre_tabla'
165
171
  const tableMatch2 = content.match(/table\s*:\s*["']([^"']+)["']/);
166
172
  if (tableMatch2) {
167
173
  tableNames.push(tableMatch2[1]);
168
174
  continue;
169
175
  }
170
176
 
171
- // Patrón 3: usar el nombre del archivo sin la extensión .cube
177
+ // Fallback: usar el nombre del archivo sin la extensión .cube
172
178
  const fileName = path.basename(filePath, '.table.cube');
173
179
  if (fileName && fileName !== 'table') {
174
180
  // Si el archivo tiene un número al principio, quitarlo
@@ -188,7 +194,7 @@ class ProgressIndicator {
188
194
  }
189
195
  }
190
196
 
191
- return tableNames;
197
+ return [...new Set(tableNames)]; // Eliminar duplicados
192
198
  }
193
199
 
194
200
  /**