@ -9,6 +9,7 @@ import { WorkspaceHealthOptions } from 'src/workspace/workspace-health/interface
|
||||
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
|
||||
import { validName } from 'src/workspace/workspace-health/utils/valid-name.util';
|
||||
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
|
||||
import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util';
|
||||
|
||||
@Injectable()
|
||||
export class ObjectMetadataHealthService {
|
||||
@ -54,14 +55,17 @@ export class ObjectMetadataHealthService {
|
||||
|
||||
// Check if the table exist in database
|
||||
const tableExist = await mainDataSource.query(
|
||||
`SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema = '${schemaName}' AND table_name = '${objectMetadata.targetTableName}')`,
|
||||
`SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema = '${schemaName}'
|
||||
AND table_name = '${computeObjectTargetTable(objectMetadata)}')`,
|
||||
);
|
||||
|
||||
if (!tableExist) {
|
||||
issues.push({
|
||||
type: WorkspaceHealthIssueType.MISSING_TABLE,
|
||||
objectMetadata,
|
||||
message: `Table ${objectMetadata.targetTableName} not found in schema ${schemaName}`,
|
||||
message: `Table ${computeObjectTargetTable(
|
||||
objectMetadata,
|
||||
)} not found in schema ${schemaName}`,
|
||||
});
|
||||
|
||||
return issues;
|
||||
@ -80,30 +84,13 @@ export class ObjectMetadataHealthService {
|
||||
): WorkspaceHealthIssue[] {
|
||||
const issues: WorkspaceHealthIssue[] = [];
|
||||
|
||||
if (
|
||||
objectMetadata.isCustom &&
|
||||
!objectMetadata.targetTableName.startsWith('_')
|
||||
) {
|
||||
issues.push({
|
||||
type: WorkspaceHealthIssueType.TABLE_NAME_SHOULD_BE_CUSTOM,
|
||||
objectMetadata,
|
||||
message: `Table ${objectMetadata.targetTableName} is marked as custom but doesn't start with "_"`,
|
||||
});
|
||||
}
|
||||
|
||||
if (!objectMetadata.targetTableName) {
|
||||
issues.push({
|
||||
type: WorkspaceHealthIssueType.TABLE_TARGET_TABLE_NAME_NOT_VALID,
|
||||
objectMetadata,
|
||||
message: `Table ${objectMetadata.targetTableName} doesn't have a valid target table name`,
|
||||
});
|
||||
}
|
||||
|
||||
if (!objectMetadata.dataSourceId) {
|
||||
issues.push({
|
||||
type: WorkspaceHealthIssueType.TABLE_DATA_SOURCE_ID_NOT_VALID,
|
||||
objectMetadata,
|
||||
message: `Table ${objectMetadata.targetTableName} doesn't have a data source`,
|
||||
message: `Table ${computeObjectTargetTable(
|
||||
objectMetadata,
|
||||
)} doesn't have a data source`,
|
||||
});
|
||||
}
|
||||
|
||||
@ -118,7 +105,9 @@ export class ObjectMetadataHealthService {
|
||||
issues.push({
|
||||
type: WorkspaceHealthIssueType.TABLE_NAME_NOT_VALID,
|
||||
objectMetadata,
|
||||
message: `Table ${objectMetadata.targetTableName} doesn't have a valid name or label`,
|
||||
message: `Table ${computeObjectTargetTable(
|
||||
objectMetadata,
|
||||
)} doesn't have a valid name or label`,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metad
|
||||
import { WorkspaceDataSourceService } from 'src/workspace/workspace-datasource/workspace-datasource.service';
|
||||
import { ObjectMetadataHealthService } from 'src/workspace/workspace-health/services/object-metadata-health.service';
|
||||
import { FieldMetadataHealthService } from 'src/workspace/workspace-health/services/field-metadata-health.service';
|
||||
import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceHealthService {
|
||||
@ -68,7 +69,7 @@ export class WorkspaceHealthService {
|
||||
// Check fields metadata health
|
||||
const fieldIssues = await this.fieldMetadataHealthService.healthCheck(
|
||||
schemaName,
|
||||
objectMetadata.targetTableName,
|
||||
computeObjectTargetTable(objectMetadata),
|
||||
objectMetadata.fields,
|
||||
options,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user