import { Entity, Index, Property, OneToMany, Collection, Cascade, PrimaryKey } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; import { UserAddress } from './user-address.entity'; import { Order } from 'src/modules/order/entities/order.entity'; import { normalizePhone } from '../../util/phone.util'; import { ulid } from 'ulid'; @Entity({ tableName: 'users' }) export class User extends BaseEntity { @OneToMany(() => Order, order => order.user) orders = new Collection(this); @PrimaryKey({ type: 'string', columnType: 'char(26)' }) id: string = ulid(); @Property() firstName!: string; @Property({ nullable: true }) lastName?: string; private _phone!: string; @Property({ unique: true }) get phone(): string { return this._phone; } set phone(value: string) { this._phone = normalizePhone(value); } @Property({ default: true }) isActive?: boolean = true; @Property({ default: true, nullable: true }) gender?: boolean; @Property({ default: 0 }) maxCredit: number; @OneToMany(() => UserAddress, address => address.user, { cascade: [Cascade.ALL], orphanRemoval: true, }) addresses = new Collection(this); }