import { Column, Entity, Index, JoinColumn, ManyToMany, ManyToOne, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { Product } from "./Product"; import { Partner } from "./Partner"; import { UserSubscription } from "./UserSubscription"; @Index("uq_promocode_code", ["code"], { unique: true }) @Index("PK_promocode", ["id"], { unique: true }) @Index("IX_promocode_partner_id", ["partnerId"], {}) @Entity("promocode", { schema: "core" }) export class Promocode { @PrimaryGeneratedColumn({ type: "integer", name: "id" }) id: number; @Column("timestamp without time zone", { name: "created_date" }) createdDate: Date; @Column("integer", { name: "created_by" }) createdBy: number; @Column("timestamp without time zone", { name: "modified_date" }) modifiedDate: Date; @Column("integer", { name: "modified_by" }) modifiedBy: number; @Column("smallint", { name: "state" }) state: number; @Column("character varying", { name: "code", length: 128 }) code: string; @Column("character varying", { name: "name", length: 255 }) name: string; @Column("text", { name: "description", nullable: true }) description: string | null; @Column("integer", { name: "total_number", nullable: true }) totalNumber: number | null; @Column("integer", { name: "used_number" }) usedNumber: number; @Column("timestamp without time zone", { name: "start_date" }) startDate: Date; @Column("timestamp without time zone", { name: "end_date" }) endDate: Date; @Column("integer", { name: "partner_id" }) partnerId: number; @Column("smallint", { name: "type", default: () => "1" }) type: number; @Column("bigint", { name: "user_duration", nullable: true }) userDuration: string | null; @ManyToMany(() => Product, (product) => product.promocodes) products: Product[]; @ManyToOne(() => Partner, (partner) => partner.promocodes, { onDelete: "RESTRICT", }) @JoinColumn([{ name: "partner_id", referencedColumnName: "id" }]) partner: Partner; @OneToMany( () => UserSubscription, (userSubscription) => userSubscription.promocode ) userSubscriptions: UserSubscription[]; }