argos/dmp-frontend/src/app/core/model/description/description.ts

80 lines
1.9 KiB
TypeScript

import { DescriptionStatus } from "@app/core/common/enum/description-status";
import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model";
import { Guid } from "@common/types/guid";
import { DescriptionTemplate } from "../description-template/description-template";
import { Dmp, DmpDescriptionTemplate } from "../dmp/dmp";
import { Reference, ReferencePersist } from "../reference/reference";
import { Tag } from "../tag/tag";
import { User } from "../user/user";
export interface Description extends BaseEntity {
label: string;
properties: PropertyDefinition;
status: DescriptionStatus;
description?: string;
createdBy: User;
finalizedAt: Date;
descriptionReferences: DescriptionReference[];
descriptionTags: DescriptionTag[];
descriptionTemplate: DescriptionTemplate;
dmpDescriptionTemplate: DmpDescriptionTemplate;
dmp: Dmp;
}
export interface PublicDescription extends BaseEntity {
}
export interface PropertyDefinition {
fields?: DescriptionField[];
}
export interface DescriptionField {
key?: string;
value: string;
}
export interface DescriptionReference extends BaseEntity {
description?: Description;
reference?: Reference;
}
export interface DescriptionTag extends BaseEntity {
description?: Description;
tag?: Tag;
}
//
// Persist
//
export interface DescriptionPersist extends BaseEntityPersist {
label: string;
dmpId: Guid;
dmpDescriptionTemplateId: Guid;
descriptionTemplateId: Guid;
status: DescriptionStatus;
description: string;
properties: PropertyDefinitionPersist;
tags: string[];
references: DescriptionReferencePersist[];
}
export interface PropertyDefinitionPersist {
fields: DescriptionFieldPersist[];
}
export interface DescriptionFieldPersist {
key?: string;
value: string;
}
export interface DescriptionReferencePersist {
id: Guid;
reference?: ReferencePersist;
hash: string;
}
export interface DescriptionStatusPersist {
id: Guid;
status: DescriptionStatus;
hash: string;
}