| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { Column, Entity, JoinColumn, JoinTable, ManyToMany, OneToMany, OneToOne } from 'typeorm';
- import { DeepPartial } from '../../../../shared/shared-types';
- import { HasCustomFields } from '../../../../shared/shared-types';
- import { SoftDeletable } from '../../common/types/common-types';
- import { Address } from '../address/address.entity';
- import { VendureEntity } from '../base/base.entity';
- import { CustomCustomerFields } from '../custom-entity-fields';
- import { CustomerGroup } from '../customer-group/customer-group.entity';
- import { Order } from '../order/order.entity';
- import { User } from '../user/user.entity';
- /**
- * @description
- * This entity represents a customer of the store, typically an individual person. A Customer can be
- * a guest, in which case it has no associated {@link User}. Customers with registered account will
- * have an associated User entity.
- *
- * @docsCategory entities
- */
- @Entity()
- export class Customer extends VendureEntity implements HasCustomFields, SoftDeletable {
- constructor(input?: DeepPartial<Customer>) {
- super(input);
- }
- @Column({ type: Date, nullable: true, default: null })
- deletedAt: Date | null;
- @Column({ nullable: true })
- title: string;
- @Column() firstName: string;
- @Column() lastName: string;
- @Column({ nullable: true })
- phoneNumber: string;
- @Column({ unique: true })
- emailAddress: string;
- @ManyToMany(type => CustomerGroup)
- @JoinTable()
- groups: CustomerGroup[];
- @OneToMany(type => Address, address => address.customer)
- addresses: Address[];
- @OneToMany(type => Order, order => order.customer)
- orders: Order[];
- @OneToOne(type => User, { eager: true })
- @JoinColumn()
- user?: User;
- @Column(type => CustomCustomerFields)
- customFields: CustomCustomerFields;
- }
|