feat: add board goal schemas and validation
This commit is contained in:
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import model_validator
|
||||
from sqlmodel import SQLModel
|
||||
|
||||
|
||||
@@ -10,16 +11,33 @@ class BoardBase(SQLModel):
|
||||
name: str
|
||||
slug: str
|
||||
gateway_id: UUID | None = None
|
||||
board_type: str = "goal"
|
||||
objective: str | None = None
|
||||
success_metrics: dict[str, object] | None = None
|
||||
target_date: datetime | None = None
|
||||
goal_confirmed: bool = False
|
||||
goal_source: str | None = None
|
||||
|
||||
|
||||
class BoardCreate(BoardBase):
|
||||
pass
|
||||
@model_validator(mode="after")
|
||||
def validate_goal_fields(self):
|
||||
if self.board_type == "goal":
|
||||
if not self.objective or not self.success_metrics:
|
||||
raise ValueError("Goal boards require objective and success_metrics")
|
||||
return self
|
||||
|
||||
|
||||
class BoardUpdate(SQLModel):
|
||||
name: str | None = None
|
||||
slug: str | None = None
|
||||
gateway_id: UUID | None = None
|
||||
board_type: str | None = None
|
||||
objective: str | None = None
|
||||
success_metrics: dict[str, object] | None = None
|
||||
target_date: datetime | None = None
|
||||
goal_confirmed: bool | None = None
|
||||
goal_source: str | None = None
|
||||
|
||||
|
||||
class BoardRead(BoardBase):
|
||||
|
||||
Reference in New Issue
Block a user