85 lines
2.8 KiB
TypeScript
Executable File
85 lines
2.8 KiB
TypeScript
Executable File
import { Column, DeleteDateColumn, 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: "timestamptz", 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: "boolean", default: false })
|
|
showInSlider: 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.targetService)
|
|
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[];
|
|
|
|
@DeleteDateColumn()
|
|
deletedAt?: Date;
|
|
}
|