mirror of
https://github.com/dadosfera/maestro.git
synced 2026-08-31 19:58:21 +00:00
The pipeline create body carries `config.tables[].destinations`, which the CDC path in pi-factory needs to honor a user-supplied raw Snowflake table name. The gRPC PipelineV2CreateRequest previously had no `config` field, so `...body` dropped it on the wire. Bump protospack to cdc.3 (adds optional `config` string). Serialize `body.config` into the create request the same way `properties` is handled, and add `config?` to the ICreatePipelineV2Req DTO so it's typed. Add a spec asserting the gRPC request carries a stringified config with the destination intact. Co-Authored-By: WOZCODE <contact@withwoz.com> Claude-Session: https://claude.ai/code/session_01145m1zZMfx8RSJBxAhySdg
169 lines
2.8 KiB
TypeScript
169 lines
2.8 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional, OmitType } from '@nestjs/swagger';
|
|
|
|
export class PipelineInputsDTO {
|
|
@ApiProperty()
|
|
tables: Array<{
|
|
name: string,
|
|
type: string,
|
|
|
|
}>
|
|
}
|
|
|
|
export class IPipelineV2 {
|
|
@ApiProperty()
|
|
id: string;
|
|
|
|
@ApiProperty()
|
|
name: string;
|
|
@ApiProperty()
|
|
description: string;
|
|
@ApiProperty()
|
|
type: string;
|
|
@ApiProperty()
|
|
connection_id: string;
|
|
@ApiProperty()
|
|
cron: string;
|
|
@ApiPropertyOptional()
|
|
input_id?: string;
|
|
@ApiPropertyOptional()
|
|
transformations_ids?: string[];
|
|
@ApiPropertyOptional()
|
|
tags?: string[];
|
|
@ApiPropertyOptional()
|
|
properties?: any;
|
|
@ApiPropertyOptional()
|
|
config?: any;
|
|
|
|
@ApiProperty()
|
|
connector_name: string;
|
|
@ApiProperty()
|
|
connector_plugin: string;
|
|
@ApiProperty()
|
|
connector_version: string;
|
|
@ApiProperty()
|
|
image_url: string;
|
|
|
|
@ApiProperty()
|
|
created_at: string;
|
|
@ApiProperty()
|
|
updated_at: string;
|
|
}
|
|
export class ICreatePipelineV2Req extends OmitType(IPipelineV2, [
|
|
'id',
|
|
'created_at',
|
|
'updated_at',
|
|
]) {}
|
|
|
|
export interface IdRequest {
|
|
id: string;
|
|
}
|
|
|
|
export interface IIdRequest {
|
|
id: string;
|
|
info: Info;
|
|
}
|
|
|
|
export interface Info {
|
|
user_id: string;
|
|
customer_id: string;
|
|
customer: string;
|
|
}
|
|
|
|
export interface IUpdatePipelineRequest {
|
|
input: IdRequest;
|
|
transformations: IdRequest[];
|
|
output: IdRequest;
|
|
tags: string[];
|
|
name: string;
|
|
description: string;
|
|
id: string;
|
|
info: Info;
|
|
}
|
|
|
|
export interface IGetPipelineLogsRequest {
|
|
id: string;
|
|
details: string;
|
|
}
|
|
|
|
export class IInitUploadCSVFile {
|
|
@ApiProperty()
|
|
file_name: string;
|
|
|
|
@ApiProperty()
|
|
parts: number;
|
|
}
|
|
|
|
export class ICompleteUploadCSVFile {
|
|
@ApiProperty()
|
|
upload_id: string;
|
|
|
|
@ApiProperty()
|
|
file_name: string;
|
|
|
|
@ApiProperty()
|
|
parts: { ETag: string; PartNumber: number }[];
|
|
}
|
|
|
|
export class ICreatePipelineCSVFile {
|
|
@ApiProperty()
|
|
name: string;
|
|
|
|
@ApiProperty()
|
|
file_name: string;
|
|
|
|
@ApiProperty()
|
|
description: string;
|
|
|
|
@ApiProperty()
|
|
encoding: string;
|
|
|
|
@ApiProperty()
|
|
sep: string;
|
|
|
|
@ApiProperty()
|
|
header: boolean;
|
|
|
|
@ApiProperty()
|
|
engine: string;
|
|
}
|
|
|
|
export class PipelineFindAllReq {
|
|
@ApiPropertyOptional()
|
|
search?: string | undefined;
|
|
@ApiPropertyOptional()
|
|
filters?: string | undefined;
|
|
@ApiPropertyOptional()
|
|
size?: string | undefined;
|
|
@ApiPropertyOptional()
|
|
page?: string | undefined;
|
|
@ApiPropertyOptional()
|
|
type?: string | undefined;
|
|
}
|
|
|
|
export interface UpdateTableDTO {
|
|
name: string;
|
|
type: string;
|
|
columns: string[];
|
|
destinations: {
|
|
raw: {
|
|
table_schema: string;
|
|
table_name: string;
|
|
};
|
|
qualify: {
|
|
table_schema: string;
|
|
table_name: string;
|
|
};
|
|
};
|
|
identifier_columns: string[];
|
|
reference_column: {
|
|
name: string;
|
|
type: string;
|
|
};
|
|
memory: number;
|
|
}
|
|
|
|
export interface UpdatePlatformInputRequest {
|
|
cron: string;
|
|
tables: Array<UpdateTableDTO>;
|
|
}
|