27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
import uuid
|
|
from datetime import date, datetime
|
|
|
|
from sqlalchemy import Date, DateTime, ForeignKey, String
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.core.db import Base
|
|
from app.models.mixins import TimestampMixin, UUIDPrimaryKeyMixin
|
|
|
|
|
|
class Customer(UUIDPrimaryKeyMixin, TimestampMixin, Base):
|
|
__tablename__ = "customers"
|
|
|
|
public_ref: Mapped[str] = mapped_column(String(20), unique=True, nullable=False)
|
|
first_name: Mapped[str] = mapped_column(String(80), nullable=False)
|
|
last_name: Mapped[str] = mapped_column(String(80), nullable=False)
|
|
email: Mapped[str | None] = mapped_column(String(200))
|
|
phone: Mapped[str | None] = mapped_column(String(40))
|
|
postal_code: Mapped[str | None] = mapped_column(String(20))
|
|
city: Mapped[str | None] = mapped_column(String(120))
|
|
date_of_birth: Mapped[date | None] = mapped_column(Date)
|
|
merged_into_customer_id: Mapped[uuid.UUID | None] = mapped_column(
|
|
UUID(as_uuid=True), ForeignKey("customers.id")
|
|
)
|
|
anonymized_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), index=True)
|