product.entity.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import {
  2. Column,
  3. CreateDateColumn,
  4. Entity,
  5. JoinTable,
  6. ManyToMany,
  7. OneToMany,
  8. PrimaryGeneratedColumn,
  9. UpdateDateColumn,
  10. } from 'typeorm';
  11. import { Translatable, Translation } from '../../locale/locale-types';
  12. import { ProductOptionGroupEntity } from '../product-option-group/product-option-group.entity';
  13. import { ProductOptionGroup } from '../product-option-group/product-option-group.interface';
  14. import { ProductOptionEntity } from '../product-option/product-option.entity';
  15. import { ProductOption } from '../product-option/product-option.interface';
  16. import { ProductVariantEntity } from '../product-variant/product-variant.entity';
  17. import { ProductVariant } from '../product-variant/product-variant.interface';
  18. import { ProductTranslationEntity } from './product-translation.entity';
  19. import { Product } from './product.interface';
  20. @Entity('product')
  21. export class ProductEntity implements Translatable<Product> {
  22. @PrimaryGeneratedColumn() id: number;
  23. @Column() image: string;
  24. @CreateDateColumn() createdAt: string;
  25. @UpdateDateColumn() updatedAt: string;
  26. @OneToMany(type => ProductTranslationEntity, translation => translation.base)
  27. translations: Translation<Product>[];
  28. @OneToMany(type => ProductVariantEntity, variant => variant.product)
  29. variants: ProductVariantEntity[];
  30. @ManyToMany(type => ProductOptionGroupEntity)
  31. @JoinTable()
  32. optionGroups: ProductOptionGroupEntity[];
  33. }