Spaces:
Running
Running
File size: 2,989 Bytes
9fd3989 0f78d29 9fd3989 edd1bb3 0f78d29 9fd3989 0f78d29 9fd3989 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | """
PostgreSQL reference models for POS sync.
"""
from sqlalchemy import Column, String, DateTime, Text, Boolean, Float, Integer, JSON, ARRAY
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
from datetime import datetime
Base = declarative_base()
class CustomerRef(Base):
"""PostgreSQL reference table for customers"""
__tablename__ = "customer_ref"
__table_args__ = {"schema": "trans"}
customer_id = Column(String, primary_key=True)
merchant_id = Column(String, nullable=False, index=True)
name = Column(String(150), nullable=False)
phone = Column(String(20), nullable=True, index=True)
email = Column(String(255), nullable=True, index=True)
notes = Column(Text, nullable=True)
status = Column(String(20), nullable=False, default="active")
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
class StaffRef(Base):
"""PostgreSQL reference table for staff"""
__tablename__ = "pos_staff_ref"
__table_args__ = {"schema": "trans"}
staff_id = Column(String, primary_key=True)
merchant_id = Column(String, nullable=False, index=True)
name = Column(String(150), nullable=False)
phone = Column(String(20), nullable=True)
email = Column(String(255), nullable=True)
role = Column(String(50), nullable=True)
specializations = Column(ARRAY(String), nullable=True)
status = Column(String(20), nullable=False, default="active")
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
class CatalogueServiceRef(Base):
"""PostgreSQL reference table for catalogue services"""
__tablename__ = "catalogue_service_ref"
__table_args__ = {"schema": "trans"}
service_id = Column(String, primary_key=True)
merchant_id = Column(String, nullable=False, index=True)
service_name = Column(String(200), nullable=False)
service_code = Column(String(50), nullable=False, index=True)
category_id = Column(String, nullable=True)
category_name = Column(String(100), nullable=True)
description = Column(Text, nullable=True)
duration_mins = Column(Integer, nullable=False, default=30)
price = Column(Float, nullable=False, default=0.0)
currency = Column(String(3), nullable=False, default="INR")
gst_rate = Column(Float, nullable=False, default=18.0)
status = Column(String(20), nullable=False, default="active")
sort_order = Column(Integer, nullable=False, default=0)
pricing = Column(JSON, nullable=True) # Store full pricing JSON
category = Column(JSON, nullable=True) # Store full category JSON
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow) |