GetSchemaStatisticsUseCase.ts•1.17 kB
import { SchemaRepository } from '../../domain/schema/services/SchemaDomainService.js';
export interface GetSchemaStatisticsRequest {
  includeSystemTables?: boolean;
}
export interface SchemaStatistics {
  totalTables: number;
  totalViews: number;
  totalProcedures: number;
  totalFunctions: number;
  totalColumns: number;
  totalIndexes: number;
  averageColumnsPerTable: number;
  largestTable?: {
    name: string;
    columns?: any[];
    type: string;
  };
}
export interface GetSchemaStatisticsResponse {
  success: boolean;
  statistics?: SchemaStatistics;
  error?: string;
}
export class GetSchemaStatisticsUseCase {
  constructor(private readonly schemaRepository: SchemaRepository) {}
  async execute(request: GetSchemaStatisticsRequest): Promise<GetSchemaStatisticsResponse> {
    try {
      const statistics = await this.schemaRepository.getSchemaStatistics(
        request.includeSystemTables || false
      );
      return {
        success: true,
        statistics,
      };
    } catch (error) {
      return {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error occurred',
      };
    }
  }
}