import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; export class ValidationTableDTO { @ApiProperty() tables: Array<{ table_name: string; table_schema: string; }>; } export class DeleteTableBody { @ApiProperty() table_name: string; } export class DeleteTablesBody { @ApiProperty({ type: [String] }) table_names: string[]; } export class CdcTableDestination { @ApiProperty() table_schema: string; @ApiProperty() table_name: string; } export class CdcTableDestinations { @ApiProperty({ type: CdcTableDestination }) raw: CdcTableDestination; @ApiProperty({ type: CdcTableDestination }) qualify: CdcTableDestination; } export class CdcColumnBody { @ApiProperty() name: string; @ApiProperty() type: string; @ApiProperty() is_primary_key: boolean; } export class AddCdcTableBody { @ApiProperty() table_name: string; @ApiProperty() table_schema: string; @ApiProperty({ type: [String] }) primary_keys: string[]; @ApiProperty({ type: CdcTableDestinations }) destinations: CdcTableDestinations; // Iceberg destination only (protospack CdcTable.iceberg_table_name); // absent for snowflake, back-compat. @ApiPropertyOptional() iceberg_table_name?: string; // Per-table deduped (qualify) Iceberg table name; absent => same as raw. @ApiPropertyOptional() iceberg_qualify_table_name?: string; // Source column schema for iceberg deduped table pre-create. @ApiPropertyOptional({ type: [CdcColumnBody] }) columns?: CdcColumnBody[]; // Columns the user chose to ignore -> Debezium column.exclude.list. @ApiPropertyOptional({ type: [String] }) column_exclude_list?: string[]; }