validate()

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");
        }
    }