* feat: add enum type (RATING, SELECT, MULTI_SELECT) feat: wip enum type feat: try to alter enum feat: wip enum feat: wip enum feat: schema-builder can handle enum fix: return default value in field metadata response * fix: create fieldMedata with options * fix: lint issues * fix: rename abstract factory * feat: drop `PHONE` and `EMAIL` fieldMetadata types * feat: drop `VARCHAR` fieldMetadata type and rely on `TEXT` * Revert "feat: drop `PHONE` and `EMAIL` fieldMetadata types" This reverts commit 3857539f7d42f17c81f6ab92a6db950140b3c8e5.
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
|
|
|
export interface FieldMetadataTargetColumnMapValue {
|
|
value: string;
|
|
}
|
|
|
|
export interface FieldMetadataTargetColumnMapLink {
|
|
label: string;
|
|
url: string;
|
|
}
|
|
|
|
export interface FieldMetadataTargetColumnMapCurrency {
|
|
amountMicros: string;
|
|
currencyCode: string;
|
|
}
|
|
|
|
export interface FieldMetadataTargetColumnMapFullName {
|
|
firstName: string;
|
|
lastName: string;
|
|
}
|
|
|
|
type AllFieldMetadataTypes = {
|
|
[key: string]: string;
|
|
};
|
|
|
|
type FieldMetadataTypeMapping = {
|
|
[FieldMetadataType.LINK]: FieldMetadataTargetColumnMapLink;
|
|
[FieldMetadataType.CURRENCY]: FieldMetadataTargetColumnMapCurrency;
|
|
[FieldMetadataType.FULL_NAME]: FieldMetadataTargetColumnMapFullName;
|
|
};
|
|
|
|
type TypeByFieldMetadata<T extends FieldMetadataType | 'default'> = [
|
|
T,
|
|
] extends [keyof FieldMetadataTypeMapping]
|
|
? FieldMetadataTypeMapping[T]
|
|
: T extends 'default'
|
|
? AllFieldMetadataTypes
|
|
: FieldMetadataTargetColumnMapValue;
|
|
|
|
export type FieldMetadataTargetColumnMap<
|
|
T extends FieldMetadataType | 'default' = 'default',
|
|
> = TypeByFieldMetadata<T>;
|