import { autoserializeAs, Command, deserialize, inheritSerialization, serializable, serialize, Validators } from '@my-devkit/core'; import { CreateRelationCommand } from './create-relation-command'; import { DeleteRelationCommand } from './delete-relation-command'; import { UpdateRelationCommand } from './update-relation-command'; type CommandType = CreateRelationCommand | UpdateRelationCommand | DeleteRelationCommand; @serializable @inheritSerialization(Command) export class CreateRelationChangeCommand extends Command { @Validators.IsNotEmpty() @Validators.IsString() @autoserializeAs(String) public projectId: string = null; @Validators.IsNotEmpty() @Validators.IsString() @autoserializeAs(String) public storyId: string = null; @Validators.IsNotEmpty() @Validators.IsString() @autoserializeAs(String) public sectionId: string = null; @Validators.IsArray() @Validators.ArrayNotEmpty() public commands: CommandType[] = []; @Validators.IsNotEmpty() @Validators.IsString() @autoserializeAs(String) public handlerName: string = null; @Validators.IsNotEmpty() @Validators.IsString() @autoserializeAs(String) public boundedContext: string = null; @Validators.IsOptional() @Validators.IsString() @autoserializeAs(String) public subscriptionName: string = null; @Validators.IsOptional() @Validators.IsString() @autoserializeAs(String) public description: string = null; constructor() { super('CreateRelationChangeCommand'); } public static OnDeserialized(instance: CreateRelationChangeCommand, json: Record): void { if (json.commands) { instance.commands = json.commands.map((c: any) => deserialize(c)); } } public static OnSerialized(instance: CreateRelationChangeCommand, json: Record): void { if (instance.commands) { json.commands = instance.commands.map((c) => serialize(c)); } } }