Spaces:
Sleeping
Sleeping
File size: 2,189 Bytes
e8f820d ce1e080 5dc2d03 e8f820d 5dc2d03 87c52f8 5dc2d03 e8f820d 5dc2d03 e8f820d 679dfd8 e8f820d 5dc2d03 e8f820d 5dc2d03 87c52f8 e8f820d 5dc2d03 e8f820d 5dc2d03 e8f820d 679dfd8 e8f820d 5dc2d03 e8f820d 87c52f8 e8f820d 9797175 |
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 67 |
from sqlalchemy.dialects.postgresql import ARRAY
from sqlalchemy import Column, String
import uuid
from datetime import date, datetime
from enum import Enum
from typing import List, Optional
from sqlalchemy.dialects.postgresql import UUID
from sqlmodel import Field, Relationship, SQLModel, ForeignKey
class LeaveType(str, Enum):
SICK = "Sick"
CASUAL = "Casual"
EMERGENCY = "Emergency"
class LeaveStatus(str, Enum):
APPROVED = "Approved"
REJECTED = "Rejected"
CANCELLED = "Cancelled"
PENDING = "Pending"
class Leave(SQLModel, table=True):
__tablename__ = "leave"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
user_id: uuid.UUID = Field(
sa_column=Column(UUID(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False
)
)
mentor_id: uuid.UUID = Field(
sa_column=Column(UUID(as_uuid=True),
ForeignKey("users.id", ondelete="SET NULL"),
nullable=True
)
)
lead_id: uuid.UUID = Field(
sa_column=Column(UUID(as_uuid=True),
ForeignKey("users.id", ondelete="SET NULL"),
nullable=True
)
)
leave_type: LeaveType = Field(default=LeaveType.SICK)
from_date: date = Field(nullable=False)
to_date: date = Field(nullable=False)
days: Optional[int] = 1
reason: str = Field(nullable=True)
status: LeaveStatus = Field(default=LeaveStatus.PENDING)
is_delivered: bool = Field(default= False)
is_read: bool = Field(default=False)
requested_at: date = Field(default_factory=date.today)
updated_at: date = Field(default_factory=date.today)
reject_reason: Optional[str] = None
class UserDevices(SQLModel, table=True):
__tablename__ = "user_devices"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
user_id: uuid.UUID = Field(
sa_column=Column(UUID(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False
)
)
device_token: str
last_seen: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(default_factory=datetime.now)
|