import { Column, Entity, ManyToOne, OneToMany } from "typeorm"; import { DanakServiceCategory } from "./danak-service-category.entity"; import { DanakServiceImage } from "./danak-service-image.entity"; import { DanakServiceReview } from "./danak-service-review.entity"; import { BaseEntity } from "../../../common/entities/base.entity"; import { Ads } from "../../ads/entities/ads.entity"; import { Announcement } from "../../announcements/entities/announcement.entity"; import { SubscriptionPlan } from "../../subscriptions/entities/subscription.entity"; import { Ticket } from "../../tickets/entities/ticket.entity"; import { ServicesLanguage } from "../enums/services-language.enum"; @Entity() export class DanakService extends BaseEntity { @Column({ type: "varchar", length: 150, nullable: false, unique: true }) name: string; @Column({ type: "varchar", length: 150, nullable: true }) title: string; @Column({ type: "boolean", nullable: false, default: false }) isDanakSuggest: boolean; @Column({ type: "text", nullable: false }) description: string; @Column({ type: "varchar", length: 255, nullable: false }) author: string; @Column({ type: "timestamp", nullable: false, default: () => "CURRENT_TIMESTAMP" }) createDate: Date; @Column({ type: "int", nullable: false, default: 0 }) userCount: number; @Column({ type: "enum", enum: ServicesLanguage, nullable: false }) serviceLanguage: ServicesLanguage; @Column({ type: "varchar", length: 150, nullable: false }) softwareLanguage: string; @Column({ type: "text", nullable: false }) metaDescription: string; @Column({ type: "boolean", default: false }) isActive: boolean; @Column({ type: "varchar", length: 255, nullable: false }) link: string; @Column({ type: "varchar", length: 255, nullable: false }) icon: string; //------------------------------------- @ManyToOne(() => DanakServiceCategory, (danakServiceCategory) => danakServiceCategory.danakServices, { nullable: false, onDelete: "RESTRICT", }) category: DanakServiceCategory; @OneToMany(() => DanakServiceImage, (danakServiceImage) => danakServiceImage.danakService, { cascade: true }) images: DanakServiceImage[]; @OneToMany(() => Announcement, (announcement) => announcement.service) announcements: Announcement[]; @OneToMany(() => Ticket, (ticket) => ticket.danakService) tickets: Ticket[]; @OneToMany(() => SubscriptionPlan, (plan) => plan.service, { cascade: true }) subscriptionPlans: SubscriptionPlan[]; @OneToMany(() => Ads, (ads) => ads.service) ads: Ads[]; @OneToMany(() => DanakServiceReview, (danakServiceReview) => danakServiceReview.service) reviews: DanakServiceReview[]; // @ManyToMany(() => Discount, (discount) => discount.services, { nullable: true }) // discounts?: Discount[]; } // @ManyToMany(() => User, (user) => user.danakServices) // users: User[];