- Add RICH_TEXT_V2 composite type to backend. - Add `bodyV2` field to tasks and notes. - Minimum required frontend changes to avoid errors when creating a note [Testing instructions](https://github.com/twentyhq/twenty/pull/9690#issuecomment-2602378218) --------- Co-authored-by: ad-elias <elias@autodiligence.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
221 lines
5.2 KiB
TypeScript
221 lines
5.2 KiB
TypeScript
import {
|
|
IsArray,
|
|
IsBoolean,
|
|
IsDate,
|
|
IsNotEmpty,
|
|
IsNumber,
|
|
IsNumberString,
|
|
IsObject,
|
|
IsOptional,
|
|
IsString,
|
|
IsUUID,
|
|
Matches,
|
|
ValidateIf,
|
|
} from 'class-validator';
|
|
|
|
import { IsQuotedString } from 'src/engine/metadata-modules/field-metadata/validators/is-quoted-string.validator';
|
|
|
|
export const fieldMetadataDefaultValueFunctionName = {
|
|
UUID: 'uuid',
|
|
NOW: 'now',
|
|
} as const;
|
|
|
|
export type FieldMetadataDefaultValueFunctionNames =
|
|
(typeof fieldMetadataDefaultValueFunctionName)[keyof typeof fieldMetadataDefaultValueFunctionName];
|
|
|
|
export class FieldMetadataDefaultValueString {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
value: string | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueRawJson {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsObject() // TODO: Should this also allow arrays?
|
|
value: object | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueRichTextV2 {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
blocknote: string | null;
|
|
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
markdown: string | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueRichText {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
value: string | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueNumber {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsNumber()
|
|
value: number | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueBoolean {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsBoolean()
|
|
value: boolean | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueStringArray {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsArray()
|
|
@IsQuotedString({ each: true })
|
|
value: string[] | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueDateTime {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsDate()
|
|
value: Date | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueDate {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsDate()
|
|
value: Date | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueCurrency {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsNumberString()
|
|
amountMicros: string | null;
|
|
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
currencyCode: string | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueFullName {
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
firstName: string | null;
|
|
|
|
@ValidateIf((object, value) => value !== null)
|
|
@IsQuotedString()
|
|
lastName: string | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueUuidFunction {
|
|
@Matches(fieldMetadataDefaultValueFunctionName.UUID)
|
|
@IsNotEmpty()
|
|
value: typeof fieldMetadataDefaultValueFunctionName.UUID;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueNowFunction {
|
|
@Matches(fieldMetadataDefaultValueFunctionName.NOW)
|
|
@IsNotEmpty()
|
|
value: typeof fieldMetadataDefaultValueFunctionName.NOW;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueAddress {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressStreet1: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressStreet2: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressCity: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressPostcode: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressState: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
addressCountry: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsNumber()
|
|
addressLat: number | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsNumber()
|
|
addressLng: number | null;
|
|
}
|
|
|
|
class LinkMetadata {
|
|
@IsString()
|
|
label: string;
|
|
|
|
@IsString()
|
|
url: string;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueLinks {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryLinkLabel: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryLinkUrl: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsArray()
|
|
secondaryLinks: LinkMetadata[] | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultActor {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
source: string;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsOptional()
|
|
@IsUUID()
|
|
workspaceMemberId?: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsString()
|
|
name: string;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValueEmails {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryEmail: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsObject()
|
|
additionalEmails: object | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultValuePhones {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryPhoneNumber: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryPhoneCountryCode: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsQuotedString()
|
|
primaryPhoneCallingCode: string | null;
|
|
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsObject()
|
|
additionalPhones: object | null;
|
|
}
|
|
|
|
export class FieldMetadataDefaultArray {
|
|
@ValidateIf((_object, value) => value !== null)
|
|
@IsArray()
|
|
value: string[] | null;
|
|
}
|