-
Notifications
You must be signed in to change notification settings - Fork 487
/
product-variant.entity.ts
56 lines (46 loc) · 1.57 KB
/
product-variant.entity.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { Base } from '../core/entities/base';
import { Entity, Column, ManyToOne, OneToOne, RelationId } from 'typeorm';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { ProductVariant as IProductVariant } from '@gauzy/models';
import { ProductVariantPrice } from '../product-variant-price/product-variant-price.entity';
import { ProductOption } from '../product-option/product-option.entity';
import { ProductVariantSettings } from '../product-settings/product-settings.entity';
import { Product } from '../product/product.entity';
import { IsNumber, IsString, IsOptional } from 'class-validator';
@Entity('product_variant')
export class ProductVariant extends Base implements IProductVariant {
@ApiProperty({ type: Number })
@IsNumber()
@Column()
taxes: number;
@ApiPropertyOptional({ type: String })
@IsString()
@IsOptional()
@Column()
notes: string;
@ApiProperty({ type: String })
@RelationId((productVariant: ProductVariant) => productVariant.product)
@IsString()
@Column()
productId: string;
@ApiProperty({ type: Number })
@IsNumber()
@Column({ default: 0 })
quantity: number;
@ApiProperty({ type: String })
@IsString()
@Column()
billingInvoicingPolicy: string;
@ApiProperty({ type: String })
@IsString()
@Column()
internalReference: string;
// @OneToMany(() => ProductOption, productOption => productOption.variant)
options: ProductOption[];
@OneToOne(() => ProductVariantSettings)
settings: ProductVariantSettings;
@OneToOne(() => ProductVariantPrice)
price: ProductVariantPrice;
@ManyToOne(() => Product)
product?: Product;
}