import { Field, ID, ObjectType } from 'type-graphql'; import { BaseEntity, Column, CreateDateColumn, DeleteDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import Product from './Product'; import { Page } from '.'; @Entity({ name: 'clicks' }) @ObjectType() export default class Click extends BaseEntity { @Field(() => ID) @PrimaryGeneratedColumn('uuid') id!: string; @Field(() => String) @Column({ type: 'varchar', nullable: false, }) firebaseId!: string; @Field(() => Page, { nullable: true, }) @ManyToOne(() => Page, { nullable: true, onUpdate: 'CASCADE', onDelete: 'CASCADE', }) @JoinColumn({ referencedColumnName: 'firebaseId', }) page?: Page; @Column({ type: 'varchar', nullable: true, }) pageFirebaseId?: string; @Field(() => Product, { nullable: true, }) @ManyToOne(() => Product, { nullable: true, onUpdate: 'CASCADE', onDelete: 'CASCADE', }) @JoinColumn({ referencedColumnName: 'firebaseId', }) product?: Product; @Column({ type: 'varchar', nullable: true, }) productFirebaseId?: string; @Field(() => Page, { nullable: true, }) @ManyToOne(() => Page, { nullable: true, onUpdate: 'CASCADE', onDelete: 'CASCADE', }) @JoinColumn({ referencedColumnName: 'firebaseId', }) refPage?: Page; @Column({ type: 'varchar', nullable: true, }) refPageFirebaseId?: string; @Field(() => String, { nullable: true, }) @Column({ type: 'varchar', nullable: true, }) retailer?: string; @Field(() => String, { nullable: true, }) @Column({ type: 'varchar', nullable: true, }) url?: string; @Field(() => Date) @CreateDateColumn({ type: 'timestamp with time zone', }) createdAt!: Date; @Field(() => Date, { nullable: true, }) @UpdateDateColumn({ type: 'timestamp with time zone', nullable: true, default: null, }) updatedAt!: Date; @Field(() => Date, { nullable: true, }) @DeleteDateColumn({ type: 'timestamp with time zone', nullable: true, default: null, }) deletedAt!: Date; }