v1
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from sqlalchemy import DateTime, ForeignKey, JSON, String, Text, func
|
||||
from sqlalchemy import Uuid
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.models.base import Base, UUIDMixin, TimestampMixin
|
||||
|
||||
|
||||
class ContactLead(Base, UUIDMixin, TimestampMixin):
|
||||
__tablename__ = "contact_leads"
|
||||
|
||||
full_name: Mapped[str] = mapped_column(String(255), nullable=False)
|
||||
email: Mapped[str] = mapped_column(String(255), nullable=False, index=True)
|
||||
phone: Mapped[Optional[str]] = mapped_column(String(50), nullable=True)
|
||||
requested_services: Mapped[Optional[str]] = mapped_column(String(255), nullable=True)
|
||||
pet_name: Mapped[Optional[str]] = mapped_column(String(100), nullable=True)
|
||||
pet_breed: Mapped[Optional[str]] = mapped_column(String(100), nullable=True)
|
||||
suburb: Mapped[Optional[str]] = mapped_column(String(100), nullable=True)
|
||||
service_area_status: Mapped[Optional[str]] = mapped_column(String(32), nullable=True)
|
||||
message: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
||||
source: Mapped[str] = mapped_column(String(50), nullable=False, default="contact_form")
|
||||
status: Mapped[str] = mapped_column(String(32), nullable=False, default="invite", index=True)
|
||||
notes: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
||||
metadata_json: Mapped[Optional[dict]] = mapped_column("metadata", JSON, nullable=True)
|
||||
invited_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
invited_member_id: Mapped[Optional[uuid.UUID]] = mapped_column(
|
||||
Uuid(as_uuid=True),
|
||||
ForeignKey("members.id", ondelete="SET NULL"),
|
||||
nullable=True,
|
||||
index=True,
|
||||
)
|
||||
Reference in New Issue
Block a user