@jackchuka/gql-ingest
Version:
A CLI tool for ingesting data from files into a GraphQL API. Supports CSV, JSON, JSONL, and YAML file formats.
49 lines • 2.07 kB
TypeScript
import { GraphQLClientWrapper } from "./graphql-client";
import { MetricsCollector } from "./metrics";
import { ParallelProcessingConfig, RetryConfig } from "./config";
import { Logger } from "./logger";
import { EntityStartEventPayload, EntityCompleteEventPayload, RowSuccessEventPayload, RowFailureEventPayload } from "./events";
export interface MappingConfig {
csvFile?: string;
dataFile?: string;
dataFormat?: string;
graphqlFile: string;
mapping: Record<string, unknown>;
}
/**
* Callbacks for entity processing events
*/
export interface EntityProcessingCallbacks {
onEntityStart?: (payload: Omit<EntityStartEventPayload, "waveIndex">) => void;
onEntityComplete?: (payload: EntityCompleteEventPayload) => void;
onRowSuccess?: (payload: RowSuccessEventPayload) => void;
onRowFailure?: (payload: RowFailureEventPayload) => void;
}
export declare class DataMapper {
private client;
private basePath;
private metrics;
private logger;
private formatOverride?;
constructor(client: GraphQLClientWrapper, basePath?: string, metrics?: MetricsCollector, logger?: Logger, formatOverride?: string);
discoverMappings(configDir: string, entityFilter?: string[]): string[];
/**
* Process an entity (backward-compatible method)
*/
processEntity(configPath: string, parallelConfig?: ParallelProcessingConfig, retryConfig?: RetryConfig): Promise<void>;
/**
* Process an entity with event callbacks and abort support
*/
processEntityWithEvents(configPath: string, parallelConfig?: ParallelProcessingConfig, retryConfig?: RetryConfig, signal?: AbortSignal, callbacks?: EntityProcessingCallbacks): Promise<void>;
private processRowsSequentiallyWithEvents;
private processRowsConcurrentlyWithEvents;
private chunkArray;
private mapRowToVariables;
private getValueByPath;
private mapNestedObject;
private extractVariableTypes;
private extractTypeName;
private convertValue;
getMetrics(): MetricsCollector;
}
//# sourceMappingURL=mapper.d.ts.map