UNPKG

mvom

Version:

Multivalue Object Mapper

32 lines (31 loc) 1.37 kB
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;