export enum RelationType { single, multiple, } export enum SingleRelationOperationType { set, unset, } export enum MultipleRelationOperationType { add, remove, } export interface ISingleRelationOperation { id: number | string; type: SingleRelationOperationType; } export interface IMultipleRelationOperation { id: number | string; type: MultipleRelationOperationType; } export type IRelationOperations = ISingleRelationOperation | IMultipleRelationOperation[]; export interface IBaseRelation { type: RelationType; property: string; } export interface IRelation extends IBaseRelation { singleOperation?: ISingleRelationOperation; multipleOperations?: IMultipleRelationOperation[]; } export interface ISingleRelation extends IBaseRelation { operation: ISingleRelationOperation; } export interface IMultipleRelation extends IBaseRelation { operations: IMultipleRelationOperation[]; }