ordder init

This commit is contained in:
2025-11-30 23:36:23 +03:30
parent dc6a528150
commit e5ad2e3b3a
10 changed files with 173 additions and 0 deletions
@@ -0,0 +1,25 @@
import { Entity, ManyToOne, Property } from '@mikro-orm/core';
import { BaseEntity } from '../../../common/entities/base.entity';
import { Order } from './order.entity';
import { Food } from '../../foods/entities/food.entity';
@Entity({ tableName: 'order_items' })
export class OrderItem extends BaseEntity {
@ManyToOne(() => Order)
order!: Order;
@ManyToOne(() => Food)
food!: Food;
@Property({ type: 'int' })
quantity!: number;
@Property({ type: 'decimal', precision: 10, scale: 0 })
unitPrice!: number;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
discount: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0 })
totalPrice!: number;
}
@@ -0,0 +1,60 @@
import { Entity, ManyToOne, OneToMany, Property, Collection, Cascade, Enum } from '@mikro-orm/core';
import { BaseEntity } from '../../../common/entities/base.entity';
import { PaymentStatus } from '../../payments/interface/payment-status';
import { OrderStatus } from '../interface/order-status';
import { User } from '../../users/entities/user.entity';
import { Restaurant } from '../../restaurants/entities/restaurant.entity';
import { UserAddress } from '../../users/entities/user-address.entity';
import { RestaurantPaymentMethod } from '../../payments/entities/restaurant-payment-method.entity';
import { OrderItem } from './order-item.entity';
@Entity({ tableName: 'orders' })
export class Order extends BaseEntity {
@ManyToOne(() => User)
user!: User;
@ManyToOne(() => Restaurant)
restaurant!: Restaurant;
@OneToMany(() => OrderItem, item => item.order, {
cascade: [Cascade.ALL],
orphanRemoval: true,
})
items = new Collection<OrderItem>(this);
@ManyToOne(() => UserAddress, { nullable: true })
address?: UserAddress;
@ManyToOne(() => RestaurantPaymentMethod, { nullable: true })
paymentMethod?: RestaurantPaymentMethod;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
couponDiscount: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
itemsDiscount: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
totalDiscount: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0 })
subTotal!: number;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
tax: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
deliveryFee: number = 0;
@Property({ type: 'decimal', precision: 10, scale: 0 })
total!: number;
@Property({ type: 'int', default: 0 })
totalItems: number = 0;
@Enum(() => OrderStatus)
status!: OrderStatus;
@Enum(() => PaymentStatus)
paymentStatus!: PaymentStatus;
}