mvom
Version:
Multivalue Object Mapper
32 lines (31 loc) • 1.37 kB
TypeScript
import type { ForeignKeyDbDefinition } from '../ForeignKeyDbTransformer';
import type { MvAttribute, MvRecord } from '../types';
export type SchemaTypeDefinitionPath = `${number}` | `${number}.${number}` | `${number}.${number}.${number}` | number;
export interface SchemaTypeDefinitionBase {
path: SchemaTypeDefinitionPath;
dictionary?: string;
required?: boolean;
encrypted?: boolean;
}
type ValidationFunction = (value: unknown) => boolean;
export interface Validator {
validationFn: ValidationFunction;
message: string;
}
/** Abstract Base Schema Type */
declare abstract class BaseSchemaType {
protected readonly validators: Validator[];
/** Create an array of foreign key definitions that will be validated before save */
transformForeignKeyDefinitionsToDb(value: unknown): ForeignKeyDbDefinition[];
/** Cast to complex data type (when applicable) */
cast(value: unknown): unknown;
/** Get data from a multivalue array at a given path */
getFromMvArray(path: number[], record?: MvRecord): MvAttribute;
/** Get value from mv data */
abstract get(record: MvRecord): unknown;
/** Set value into mv data */
abstract set(record: MvRecord, value: unknown): MvRecord;
/** Validate value */
abstract validate(value: unknown): string[] | Map<string, string[]>;
}
export default BaseSchemaType;