menu.entity.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import {
  2. Column,
  3. CreateDateColumn,
  4. Entity,
  5. JoinColumn,
  6. JoinTable,
  7. ManyToMany,
  8. ManyToOne,
  9. OneToMany,
  10. OneToOne,
  11. PrimaryGeneratedColumn,
  12. UpdateDateColumn,
  13. } from 'typeorm';
  14. import { Category } from '../category/category.entity';
  15. import { User } from '../user/user.entity';
  16. import { Article } from '../article/article.entity';
  17. import { MenuTranslation } from './menu.entity.translation';
  18. import { TranslatableEntity, Translation } from 'typeorm-translatable';
  19. @Entity()
  20. export class Menu extends TranslatableEntity<MenuTranslation> {
  21. @PrimaryGeneratedColumn()
  22. id: number;
  23. @Column({ unique: false, default: '', length: 200 })
  24. title: string;
  25. @Column({ default: true })
  26. enable: boolean;
  27. @Column({ default: 0 })
  28. styleType: number;
  29. @Column({ default: 0 })
  30. otherType: number;
  31. @Column({ default: 0 })
  32. order: number;
  33. @Column({ default: '' })
  34. description: string;
  35. @Column({ default: 0 })
  36. level: number;
  37. @Column({ default: '' })
  38. cover: string;
  39. @Column({ default: false })
  40. isPublish: boolean;
  41. @Column({ default: '' })
  42. remark: string;
  43. @OneToOne(() => Category, {
  44. cascade: false,
  45. onDelete: 'CASCADE',
  46. createForeignKeyConstraints: false,
  47. })
  48. @JoinColumn()
  49. category: Category;
  50. @Column({ nullable: true })
  51. categoryId: number;
  52. @OneToOne(() => User, {
  53. createForeignKeyConstraints: false,
  54. onDelete: 'CASCADE',
  55. })
  56. @JoinColumn()
  57. user: User;
  58. @Column({ nullable: true })
  59. userId: number;
  60. @CreateDateColumn()
  61. createTime: Date;
  62. @UpdateDateColumn()
  63. updateTime: Date;
  64. @ManyToOne(() => Menu, (menu) => menu.children, {
  65. createForeignKeyConstraints: false,
  66. })
  67. parent: Menu;
  68. @OneToMany(() => Menu, (menu) => menu.parent, {
  69. createForeignKeyConstraints: false,
  70. })
  71. children: Menu[];
  72. @Column({ nullable: true })
  73. parentId: number;
  74. @Column({ nullable: true, default: 3 })
  75. grid: number;
  76. @OneToOne(() => Article, {
  77. createForeignKeyConstraints: false,
  78. onDelete: 'CASCADE',
  79. })
  80. @JoinColumn()
  81. article: Article;
  82. @Column({ nullable: true })
  83. articleId: number;
  84. @OneToMany(() => MenuTranslation, (menuTranslation) => menuTranslation.source, {
  85. cascade: true,
  86. })
  87. translations?: Translation<MenuTranslation>[] | undefined;
  88. static translatableFields = new Set(['title', 'description']);
  89. }