Medisync / models /user.py
anique-1's picture
Deploy MediSync AI Backend with APK to Hugging Face
903c699
Raw
History Blame Contribute Delete
1.74 kB
from pydantic import BaseModel, EmailStr, Field
from typing import List, Optional
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo # For timezone handling
# Define Pakistan Standard Time (PKT)
PKT = ZoneInfo("Asia/Karachi")
class UserBase(BaseModel):
full_name: str
phone_number: str
email: EmailStr
class UserCreate(UserBase):
password: str
class UserInDB(UserBase):
id: str = Field(default_factory=str, alias="_id")
hashed_password: Optional[str] = None
google_id: Optional[str] = None
is_verified: bool = False
# slots: List[str] = [] # Removed slot system
# Subscription fields
subscription_status: str = "trial" # trial, active, expired, pending_approval
subscription_plan: str = "free_trial" # free_trial, monthly, yearly
trial_start_date: datetime = Field(default_factory=lambda: datetime.now(PKT))
trial_end_time: datetime = Field(default_factory=lambda: datetime.now(PKT) + timedelta(days=1)) # Set trial to expire in 1 day for testing
subscription_end_date: Optional[datetime] = None
transaction_id: Optional[str] = None
device_id: Optional[str] = None
created_at: datetime = Field(default_factory=lambda: datetime.now(PKT))
updated_at: datetime = Field(default_factory=lambda: datetime.now(PKT))
class UserPublic(UserBase):
id: str
is_verified: bool
# slots: List[str]
subscription_status: Optional[str] = "trial"
subscription_plan: Optional[str] = "free_trial"
trial_start_date: Optional[datetime] = None
trial_end_time: Optional[datetime] = None
device_id: Optional[str] = None
created_at: datetime
updated_at: datetime # Added for completeness, if needed by frontend