import chalk from 'chalk'; import { IEntitySearchResult } from './@types/IEntitySearchResult'; export function setSchemaColumnsConstraint( schema: IEntitySearchResult, columns: string[], constraint: 'KEY' | 'PRIMARY_KEY' | 'VALUE_COMPARABLE', ) { var schemaContent = schema.override?.content ? { ...schema.override.content } : { ...schema.content }; var hasChanged = false; for (var i = 0; i < schemaContent.columns.length; i++) { var key = schemaContent.columns[i].dbName; schemaContent.columns[i].constraints = schemaContent.columns[i].constraints || []; if (!columns.find((c) => c === key)) { if (schemaContent.columns[i].constraints.includes(constraint)) { hasChanged = true; console.log( `${chalk.red('✗')} Removing constraint ${chalk.green(constraint)} from column ${chalk.green(key)}`, ); } schemaContent.columns[i].constraints = schemaContent.columns[i].constraints.filter((g) => g !== constraint) || []; continue; } if (!schemaContent.columns[i].constraints.includes(constraint)) { hasChanged = true; console.log( `${chalk.green('✓')} Adding constraint ${chalk.green(constraint)} to column ${chalk.green(key)}`, ); schemaContent.columns[i].constraints.push(constraint); } } if (!hasChanged) { console.log(`${chalk.green('✓')} Nothing has changed...`); } return { ...schemaContent, filePath: schema.override?.content ? schema.override.filePath : schema.filePath, }; } export function selectSchemaColumnsVisibility( schema: IEntitySearchResult, columns: string[], ) { var schemaContent = schema.override?.content ? { ...schema.override.content } : { ...schema.content }; let hasChanged = false; for (var i = 0; i < schemaContent.columns.length; i++) { var key = schemaContent.columns[i].dbName; var visibility = columns.find((c) => c === key) ? 'Visible' : 0; if (visibility === 0 && schemaContent.columns[i].visibility !== 0) { hasChanged = true; console.log(`${chalk.red('✗')} Hiding column ${chalk.green(i)}`); } else if ( visibility === 'Visible' && schemaContent.columns[i].visibility === 0 ) { hasChanged = true; console.log(`${chalk.green('✓')} Showing column ${chalk.green(key)}`); } schemaContent.columns[i].visibility = visibility; } if (!hasChanged) { console.log(`${chalk.green('✓')} Nothing has changed...`); } return { ...schemaContent, filePath: schema.override?.content ? schema.override.filePath : schema.filePath, }; }