import {Column, Entity, OneToOne, PrimaryGeneratedColumn} from "../../../src/index"; import {PostDetails} from "./PostDetails"; import {PostCategory} from "./PostCategory"; import {PostAuthor} from "./PostAuthor"; import {PostInformation} from "./PostInformation"; import {PostImage} from "./PostImage"; import {PostMetadata} from "./PostMetadata"; import {JoinColumn} from "../../../src/decorator/relations/JoinColumn"; @Entity("sample2_post") export class Post { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() text: string; // post has relation with category, however inverse relation is not set (category does not have relation with post set) @OneToOne(type => PostCategory, { cascade: true }) @JoinColumn() category: PostCategory; // post has relation with details. cascade inserts here means if new PostDetails instance will be set to this // relation it will be inserted automatically to the db when you save this Post entity @OneToOne(type => PostDetails, details => details.post, { cascade: ["insert"] }) @JoinColumn() details: PostDetails; // post has relation with details. cascade update here means if new PostDetail instance will be set to this relation // it will be inserted automatically to the db when you save this Post entity @OneToOne(type => PostImage, image => image.post, { cascade: ["update"] }) @JoinColumn() image: PostImage; // post has relation with details. cascade update here means if new PostDetail instance will be set to this relation // it will be inserted automatically to the db when you save this Post entity @OneToOne(type => PostMetadata, metadata => metadata.post) @JoinColumn() metadata: PostMetadata|null; // post has relation with details. full cascades here @OneToOne(type => PostInformation, information => information.post, { cascade: true }) @JoinColumn() information: PostInformation; // post has relation with details. not cascades here. means cannot be persisted, updated or removed @OneToOne(type => PostAuthor, author => author.post) @JoinColumn() author: PostAuthor; }