in packages/azure-kusto-ingest/src/ingestionProperties.ts [207:256]
validate() {
if (!this.database) throw new IngestionPropertiesValidationError("Must define a target database");
if (!this.table) throw new IngestionPropertiesValidationError("Must define a target table");
if (!this.format) throw new IngestionPropertiesValidationError("Must define a data format");
if (this.ingestionMappingType && !this.ingestionMappingKind) {
this.ingestionMappingKind = this.ingestionMappingType;
}
if (this.ingestionMapping && !this.ingestionMappingColumns) {
this.ingestionMappingColumns = this.ingestionMapping;
}
if (!this.ingestionMappingColumns && !this.ingestionMappingReference) {
if (this.ingestionMappingKind) {
throw new IngestionPropertiesValidationError(
"Cannot define ingestionMappingKind without either ingestionMappingColumns or" + " ingestionMappingReference",
);
}
} else {
const mappingKind = dataFormatMappingKind(this.format);
if (this.ingestionMappingKind && this.ingestionMappingKind !== mappingKind) {
throw new IngestionPropertiesValidationError(
`Mapping kind '${this.ingestionMappingKind}' does not match format '${this.format}' (should be '${mappingKind}')`,
);
}
if (this.ingestionMappingColumns) {
if (this.ingestionMappingReference) {
throw new IngestionPropertiesValidationError("Cannot define both ingestionMappingColumns and ingestionMappingReference");
}
if (this.ingestionMappingColumns.length === 0) {
throw new IngestionPropertiesValidationError("Must define at least one column mapping");
}
const wrongMappings = this.ingestionMappingColumns
.filter((m) => m.mappingKind !== mappingKind)
.map(
(m) => `Mapping kind mismatch for column '${m.columnName}' - expected data format kind - '${mappingKind}', but was '${m.mappingKind}'`,
);
if (wrongMappings.length > 0) {
throw new IngestionPropertiesValidationError(`Invalid columns:\n${wrongMappings.join("\n")}`);
}
}
}
if (this.reportMethod !== ReportMethod.Queue && this.reportLevel === ReportLevel.FailuresOnly) {
throw new IngestionPropertiesValidationError("ReportLevel.FailuresOnly is not supported with ReportMethod.Table");
}
}