-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
47 lines (33 loc) · 1.1 KB
/
Copy pathmodels.py
File metadata and controls
47 lines (33 loc) · 1.1 KB
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
"""SQLAlchemy ORM model and Pydantic schemas for the Task Manager API."""
from datetime import datetime
from enum import Enum
from typing import Optional
from pydantic import BaseModel, ConfigDict
from sqlalchemy import Column, DateTime, Integer, String
from database import Base
class TaskStatus(str, Enum):
todo = "todo"
in_progress = "in_progress"
done = "done"
class Task(Base):
__tablename__ = "tasks"
id = Column(Integer, primary_key=True, index=True)
title = Column(String, nullable=False)
description = Column(String, default="")
status = Column(String, default=TaskStatus.todo.value)
created_at = Column(DateTime, default=datetime.utcnow)
class TaskCreate(BaseModel):
title: str
description: str = ""
status: TaskStatus = TaskStatus.todo
class TaskUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
status: Optional[TaskStatus] = None
class TaskOut(BaseModel):
id: int
title: str
description: str
status: TaskStatus
created_at: datetime
model_config = ConfigDict(from_attributes=True)