@dpkit/table
Version:
Data Package implementation in TypeScript.
14 lines • 2.48 kB
JavaScript
import { col } from "nodejs-polars";
// TODO: Support schema.primaryKey and schema.uniqueKeys
export function checkCellUnique(field, errorTable) {
const unique = field.constraints?.unique;
if (unique) {
const target = col(`target:${field.name}`);
const errorName = `error:cell/unique:${field.name}`;
errorTable = errorTable
.withColumn(target.isNotNull().and(target.isFirstDistinct().not()).alias(errorName))
.withColumn(col("error").or(col(errorName)).alias("error"));
}
return errorTable;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvY2hlY2tzL3VuaXF1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR25DLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQVksRUFBRSxVQUFpQjtJQUM3RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQTtJQUV4QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDMUMsTUFBTSxTQUFTLEdBQUcscUJBQXFCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUVuRCxVQUFVLEdBQUcsVUFBVTthQUNwQixVQUFVLENBQ1QsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQ3hFO2FBQ0EsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSBcIkBkcGtpdC9jb3JlXCJcbmltcG9ydCB7IGNvbCB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuXG4vLyBUT0RPOiBTdXBwb3J0IHNjaGVtYS5wcmltYXJ5S2V5IGFuZCBzY2hlbWEudW5pcXVlS2V5c1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2VsbFVuaXF1ZShmaWVsZDogRmllbGQsIGVycm9yVGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHVuaXF1ZSA9IGZpZWxkLmNvbnN0cmFpbnRzPy51bmlxdWVcblxuICBpZiAodW5pcXVlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gY29sKGB0YXJnZXQ6JHtmaWVsZC5uYW1lfWApXG4gICAgY29uc3QgZXJyb3JOYW1lID0gYGVycm9yOmNlbGwvdW5pcXVlOiR7ZmllbGQubmFtZX1gXG5cbiAgICBlcnJvclRhYmxlID0gZXJyb3JUYWJsZVxuICAgICAgLndpdGhDb2x1bW4oXG4gICAgICAgIHRhcmdldC5pc05vdE51bGwoKS5hbmQodGFyZ2V0LmlzRmlyc3REaXN0aW5jdCgpLm5vdCgpKS5hbGlhcyhlcnJvck5hbWUpLFxuICAgICAgKVxuICAgICAgLndpdGhDb2x1bW4oY29sKFwiZXJyb3JcIikub3IoY29sKGVycm9yTmFtZSkpLmFsaWFzKFwiZXJyb3JcIikpXG4gIH1cblxuICByZXR1cm4gZXJyb3JUYWJsZVxufVxuIl19