Files
twenty/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/default-value.input.ts
eliasylonen b63ae14318 RICH_TEXT_V2 backend (#9848)
- 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>
2025-01-28 14:05:06 +01:00

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;
}