web-service/apps/catalog/src/database/entities/content-relation.entity.ts

44 lines
1.1 KiB
TypeScript

import { UserMetaEntity } from '@freeblox/shared';
import { Exclude } from 'class-transformer';
import {
Column,
Entity,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { ContentRelation } from '../../enums/content-relation.enum';
import { ContentEntity } from './content.entity';
/**
* Content-to-content relation.
*
* `secondContent` is `relation` of `firstContent`.
*/
@Entity('content_relation')
@Exclude()
export class ContentRelationEntity extends UserMetaEntity {
@PrimaryGeneratedColumn()
id: number;
@Column({ name: 'first_content_id' })
firstContentId: number;
@Column({ name: 'second_content_id' })
secondContentId: number;
@Column({ type: 'enum', enum: ContentRelation })
relation: ContentRelation;
@Column({ name: 'relation_name', nullable: true })
relationName?: string;
@ManyToOne(() => ContentEntity, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'first_content_id' })
firstContent: ContentEntity;
@ManyToOne(() => ContentEntity, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'second_content_id' })
secondContent: ContentEntity;
}