typeorm хранит серию журналов и текущий статус - PullRequest
0 голосов
/ 15 октября 2019

Я думаю, вопрос довольно типичный, но никогда не сталкивался с такой проблемой. Итак, у меня есть 2 объекта, Hub и Hub статус. На стороне клиента я хочу получить Hub и его текущий статус или Hub его журнал состояния в разных случаях.

Вот сущности:

@Entity('hubs')
export class Hub {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @Column()
    port: number;

    @Column()
    limit: number;

    @Column()
    enabled: boolean;

    @Column()
    isOnline: boolean;

    @Column("simple-json")
    slots: { free: number, total: number, freePercent: number};

    @OneToMany(type => HubStatus, statusLog => statusLog.hub, { cascade: true })
    statusLog: Array<HubStatus>;

    @UpdateDateColumn()
    updatedAt: Date;
}

@Entity('hub-status')
export class HubStatus {

    @PrimaryGeneratedColumn()
    id: string;

    @Column()
    isOnline: boolean;

    @Column("simple-json")
    slots: { free: number, total: number, freePercent: number};

    @ManyToOne(type => Hub, hub => hub.statusLog)
    hub: Hub;

    @CreateDateColumn()
    createdAt: Date;
}

если я скопирую

    @Column()
    isOnline: boolean;

    @Column("simple-json")
    slots: { free: number, total: number, freePercent: number};

для сущности Hub, как, например, для сохранения последнего статуса в Hub и HubStatus или для запроса последнего состояния из hub-status каждый раз, когда я получаю сущность Hubи добавить его в мой интерфейс DTO? Интерфейс DTO:

export interface IHub {
    id: string;
    ip: string;
    port: number;
    limit?: number;
    slots?: {
        free: number;
        total: number;
        freePercent: number;
    },
    enabled: boolean;
    isOnline?:boolean;
}

массив HubStatus для каждого концентратора может достигать 259200 объектов журнала

...