mirror of
https://github.com/dadosfera/maestro.git
synced 2026-08-31 19:58:21 +00:00
FIX: address review round 2 on the CDC refactor
- toCdcTable accepts the source table named either table_name (platform bodies) or name (create DTO), so call sites pass it point-free: body.tables.map(toCdcTable). The identity is still derived in one place. - PipelineTablesService declares its logger like every other maestro service (logger: DadosferaLogger assigned from the injected instance). Co-Authored-By: WOZCODE <contact@withwoz.com>
This commit is contained in:
@@ -3,11 +3,15 @@ import {
|
||||
CdcTable,
|
||||
} from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities';
|
||||
|
||||
/** What a caller knows about a CDC table before it is stored. */
|
||||
/** What a caller knows about a CDC table before it is stored. The source
|
||||
* table is named `table_name` on the platform-facing bodies and `name` on
|
||||
* the create DTO (CdcTableReq); either works — deriving one from the other
|
||||
* happens only here. */
|
||||
export interface CdcTableInput {
|
||||
// Optional on the create DTO (CdcTableReq); the platform validates it.
|
||||
table_schema?: string;
|
||||
table_name: string;
|
||||
table_name?: string;
|
||||
name?: string;
|
||||
primary_keys?: string[];
|
||||
iceberg_table_name?: string;
|
||||
iceberg_qualify_table_name?: string;
|
||||
@@ -25,10 +29,11 @@ export interface CdcTableInput {
|
||||
* `name ?? table_name`).
|
||||
*/
|
||||
export function toCdcTable(table: CdcTableInput): CdcTable {
|
||||
const tableName = table.table_name ?? table.name;
|
||||
return {
|
||||
table_schema: table.table_schema,
|
||||
table_name: table.table_name,
|
||||
name: table.table_name,
|
||||
table_name: tableName,
|
||||
name: tableName,
|
||||
primary_keys: table.primary_keys ?? [],
|
||||
iceberg_table_name: table.iceberg_table_name,
|
||||
iceberg_qualify_table_name: table.iceberg_qualify_table_name,
|
||||
|
||||
@@ -196,9 +196,7 @@ export class InputsService {
|
||||
name: body.name,
|
||||
plugin: body.plugin,
|
||||
read_only: body.read_only ?? true,
|
||||
tables: body.tables.map((t) =>
|
||||
toCdcTable({ ...t, table_name: t.name }),
|
||||
),
|
||||
tables: body.tables.map(toCdcTable),
|
||||
destination: body.destination,
|
||||
},
|
||||
info,
|
||||
|
||||
@@ -30,7 +30,7 @@ interface PlatformPipeline {
|
||||
*/
|
||||
@Injectable()
|
||||
export class PipelineTablesService {
|
||||
private logger: DadosferaLogger['logger'];
|
||||
logger: DadosferaLogger;
|
||||
|
||||
constructor(
|
||||
private readonly platformApiService: PlatformApiService,
|
||||
|
||||
Reference in New Issue
Block a user