gemercheung 6 месяцев назад
Родитель
Сommit
75f46d3044

+ 30 - 0
packages/backend/src/modules/menu/menu.entity.tranlation.ts

@@ -0,0 +1,30 @@
+import {
+  Column,
+  CreateDateColumn,
+  Entity,
+  JoinColumn,
+  JoinTable,
+  ManyToMany,
+  ManyToOne,
+  OneToMany,
+  OneToOne,
+  PrimaryGeneratedColumn,
+  UpdateDateColumn,
+} from 'typeorm';
+import { TranslationEntity } from 'typeorm-translatable';
+import { Menu } from './menu.entity';
+
+@Entity()
+export class MenuTranslation extends TranslationEntity<Menu> {
+  @Column({ unique: false, default: '', length: 200 })
+  title?: string;
+
+  @Column({ default: '' })
+  remark?: string;
+
+  @ManyToOne(() => Menu, (menu) => menu.translations, {
+    onDelete: 'CASCADE',
+    createForeignKeyConstraints: false,
+  })
+  source?: Menu | undefined;
+}

+ 10 - 2
packages/backend/src/modules/menu/menu.entity.ts

@@ -14,9 +14,10 @@ import {
 import { Category } from '../category/category.entity';
 import { User } from '../user/user.entity';
 import { Article } from '../article/article.entity';
-
+import { MenuTranslation } from './menu.entity.tranlation';
+import { TranslatableEntity, Translation } from 'typeorm-translatable';
 @Entity()
-export class Menu {
+export class Menu extends TranslatableEntity<MenuTranslation> {
   @PrimaryGeneratedColumn()
   id: number;
 
@@ -99,4 +100,11 @@ export class Menu {
 
   @Column({ nullable: true })
   articleId: number;
+  @OneToMany(() => MenuTranslation, (menuTranslation) => menuTranslation.source, {
+    cascade: true,
+    onDelete: 'CASCADE',
+  })
+  translations?: Translation<MenuTranslation>[] | undefined;
+
+  static translatableFields = new Set(['title', 'remark']);
 }

+ 3 - 2
packages/backend/src/modules/menu/menu.module.ts

@@ -2,10 +2,11 @@ import { Module } from '@nestjs/common';
 import { MenuController } from './menu.controller';
 import { MenuService } from './menu.service';
 import { Menu } from './menu.entity';
+import { MenuTranslation } from './menu.entity.tranlation';
 import { TypeOrmModule } from '@nestjs/typeorm';
 @Module({
-  imports: [TypeOrmModule.forFeature([Menu])],
+  imports: [TypeOrmModule.forFeature([Menu, MenuTranslation])],
   controllers: [MenuController],
   providers: [MenuService],
 })
-export class MenuModule {}
+export class MenuModule { }

+ 6 - 0
packages/web/global.d.ts

@@ -0,0 +1,6 @@
+export { }
+declare global {
+    interface Window {
+        [key: string]: any 
+    }
+}

+ 3 - 1
packages/web/tsconfig.app.json

@@ -1,6 +1,7 @@
 {
   "extends": "@vue/tsconfig/tsconfig.dom.json",
   "include": [
+    "global.d.ts",
     "env.d.ts",
     "src/**/*",
     "src/**/*.vue",
@@ -17,5 +18,6 @@
     "paths": {
       "@/*": ["./src/*"]
     }
-  }
+  },
+
 }

+ 3 - 0
packages/web/tsconfig.json

@@ -13,5 +13,8 @@
   ],
   "compilerOptions": {
     "module": "NodeNext"
+  },
+  "rules": {
+    "@typescript-eslint/no-explicit-any": "off"
   }
 }