Files
dsc-api/src/modules/danak-services/entities/danak-service.entity.ts
T
2025-04-21 12:05:53 +03:30

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;
}