import { createUnionType, Field, Int, ObjectType, registerEnumType } from "@nestjs/graphql"; import { BaseDTO } from "../utils/base.dto"; import { DescriptionChecklistObjectType } from "./description-types/description-checklist/description-checklist.dto"; import { DescriptionTextObjectType } from "./description-types/description-text/description-text.dto"; export enum DescriptionType { Text = 'Text', Checklist = 'Checklist' } registerEnumType(DescriptionType, { name: 'DescriptionType', }); @ObjectType() export class DescriptionObjectType extends BaseDTO { @Field(() => Int) description_id: number; @Field(() => DescriptionType) description_type: DescriptionType; @Field(() => Int) task_id: number; } export const DescriptionableUnion = createUnionType({ name: 'DescriptionableUnion', types: () => [DescriptionTextObjectType, DescriptionChecklistObjectType] as const, resolveType(value) { if (value['__UnionDescriminator__'] === DescriptionType.Text) { return DescriptionTextObjectType; } else { return DescriptionChecklistObjectType; } }, });