File size: 4,295 Bytes
5dc2d03 ce1e080 5a5f1de 5dc2d03 5a5f1de 87c52f8 119d5fc 5a5f1de 119d5fc 5a5f1de 7d3bfe5 f5bcfa6 7d3bfe5 fa1cbc5 51f598e cc20cd4 7d3bfe5 ce1e080 5a5f1de 973406c 5a5f1de 5e7c541 c0f9c82 5a5f1de baafdf4 fcdc4de 5a5f1de 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 5a5f1de 5e7c541 5a5f1de 618461c 87c52f8 5e7c541 87c52f8 5e7c541 87c52f8 618461c 5a5f1de 119d5fc 618461c 5a5f1de 119d5fc 5a5f1de 119d5fc 87c52f8 f5bcfa6 87c52f8 5e7c541 87c52f8 119d5fc f5bcfa6 7d3bfe5 f5bcfa6 7d3bfe5 119d5fc 5a5f1de |
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
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 sqlalchemy import CheckConstraint, UniqueConstraint, ForeignKey
from sqlmodel import Field, Relationship, SQLModel
from sqlalchemy import Enum as SQLEnum
class AssetStatus(str, Enum):
ACTIVE = "Active"
UNAVAILABLE = "Unavailable"
ON_REQUEST = "On Request"
IN_SERVICE = "In Service"
class Emotion(str, Enum):
JOYFUL = "joyful"
HAPPY = "happy"
CALM = "calm"
NEUTRAL = "neutral"
ANXIOUS = "anxious"
SAD = "sad"
FRUSTRATED = "frustrated"
class AppVersion(SQLModel, table=True):
__tablename__ = "app_version"
version: str = Field(primary_key=True)
apk_download_link: str
ios_download_link: str
class Users(SQLModel, table=True):
__tablename__ = "users"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
email_id: str = Field(unique=True, nullable=False)
password: str = Field(nullable=False)
user_name: str = Field(nullable=False)
is_verified: bool = Field(
default=False, sa_column_kwargs={"server_default": "false"}
)
dob: Optional[date] = None
address: Optional[str] = None
profile_picture: Optional[str] = None
join_date: Optional[str] = None
created_at: datetime = Field(default_factory=datetime.now)
asset: List["Assets"] = Relationship(back_populates="user")
water_logs: List["WaterLogs"] = Relationship(back_populates="user")
journal_entries: List["JournalEntry"] = Relationship(back_populates="user")
class Teams(SQLModel, table=True):
__tablename__ = "teams"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
name: str = Field(unique=True, nullable=False)
class Roles(SQLModel, table=True):
__tablename__ = "roles"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
name: str = Field(unique=True, nullable=False)
class UserTeamsRole(SQLModel, table=True):
__tablename__ = "user_teams_role"
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,
)
)
team_id: uuid.UUID = Field(
sa_column=Column(
UUID(as_uuid=True),
ForeignKey("teams.id", ondelete="CASCADE"),
nullable=False,
)
)
role_id: uuid.UUID = Field(
sa_column=Column(
UUID(as_uuid=True),
ForeignKey("roles.id", ondelete="CASCADE"),
nullable=False,
)
)
class Assets(SQLModel, table=True):
__tablename__ = "assets"
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,
)
)
asset_id: str = Field(sa_column=Column("asset_id", String, nullable=False))
type: str = Field(nullable=False)
status: AssetStatus = Field(default=AssetStatus.UNAVAILABLE)
user: "Users" = Relationship(back_populates="asset")
__table_args__ = (UniqueConstraint("asset_id", "type", name="unique_assetid_type"),)
class EmotionLogs(SQLModel, table=True):
__tablename__ = "emotion_logs"
__table_args__ = (UniqueConstraint("user_id", "log_date"),)
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,
)
)
morning_emotion: Optional[Emotion] = Field(
sa_column=Column(
SQLEnum(Emotion, name="emotion_enum", native_enum=True), nullable=True
)
)
evening_emotion: Optional[Emotion] = Field(
sa_column=Column(
SQLEnum(Emotion, name="emotion_enum", native_enum=True), nullable=True
)
)
log_date: date = Field(default_factory=date.today)
|