UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

14 lines 2.48 kB
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