Make backend start on PostgreSQL

This commit is contained in:
root
2026-06-08 11:50:29 +00:00
parent 3548733019
commit 4e80a0bdfe
10 changed files with 374 additions and 151 deletions
+62 -51
View File
@@ -1,48 +1,65 @@
from __future__ import annotations
from datetime import datetime
from typing import Any
from pydantic import BaseModel, Field
from pydantic import BaseModel, ConfigDict, Field
class CaseCreate(BaseModel):
class CaseBase(BaseModel):
model_config = ConfigDict(extra='allow')
age: int | None = None
age_years: int | None = None
gender: str | None = None
child_name: str | None = None
height_build: str | None = None
clothes_upper: str | None = None
clothes_lower: str | None = None
clothes_shoes: str | None = None
shoes: str | None = None
clothes_description: str | None = None
special_marks: str | None = None
phone_status: str | None = None
health_flags: list[str] = Field(default_factory=list)
elapsed_hours: int | None = None
has_diagnosis: bool | None = None
diagnosis_type: list[str] = Field(default_factory=list)
fitness_level: str | None = None
has_transport: str | None = None
cant_swim: bool | None = None
psychotype: str | None = None
psychotype_answers: dict[str, Any] | None = None
elapsed_hours: float | None = None
last_known_place: str | None = None
direction: str | None = None
reason: str | None = None
loss_reason: str | None = None
loss_time: datetime | None = None
last_seen_direction: str | None = None
last_seen_reliability: str | None = None
last_seen_description: str | None = None
behavior_description: str | None = None
familiar_places: str | None = None
lost_before: str | None = None
terrain_primary: str | None = None
terrain: list[str] = Field(default_factory=list)
weather: str | None = None
resources: list[str] = Field(default_factory=list)
season: str | None = None
temperature_c: float | None = None
precipitation: str | None = None
visibility: str | None = None
wind: str | None = None
gps: dict[str, float] | None = None
notes: str | None = None
note: str | None = None
status: str = 'new'
found_alive: bool | None = None
found_distance_km: float | None = None
found_direction: str | None = None
found_location_type: str | None = None
found_lat: float | None = None
found_lon: float | None = None
who_found: str | None = None
mobile: bool = False
class CaseUpdate(BaseModel):
age: int | None = None
gender: str | None = None
health_flags: list[str] | None = None
elapsed_hours: int | None = None
last_known_place: str | None = None
direction: str | None = None
terrain_primary: str | None = None
weather: str | None = None
resources: list[str] | None = None
gps_lat: float | None = None
gps_lon: float | None = None
tnp_lat: float | None = None
tnp_lon: float | None = None
tnp_address: str | None = None
resources: list[str] = Field(default_factory=list)
teams_count: int | None = None
team_size: int | None = None
has_dog: bool | None = None
extra_resources: list[str] = Field(default_factory=list)
notes: str | None = None
note: str | None = None
status: str | None = None
@@ -52,37 +69,31 @@ class CaseUpdate(BaseModel):
found_location_type: str | None = None
found_lat: float | None = None
found_lon: float | None = None
search_duration_hours: float | None = None
who_found: str | None = None
raw_text: str | None = None
analysis_log: str | None = None
analysis_log: dict[str, Any] | None = None
mobile: bool = False
class CaseResponse(BaseModel):
class CaseCreate(CaseBase):
status: str | None = 'new'
class CaseUpdate(CaseBase):
pass
class CaseResponse(CaseBase):
id: str
created_at: datetime
updated_at: datetime
age: int | None = None
gender: str | None = None
health_flags: list[str]
elapsed_hours: int | None = None
last_known_place: str | None = None
direction: str | None = None
terrain_primary: str | None = None
weather: str | None = None
resources: list[str]
gps_lat: float | None = None
gps_lon: float | None = None
notes: str | None = None
status: str
found_alive: bool | None = None
found_distance_km: float | None = None
found_direction: str | None = None
found_location_type: str | None = None
found_lat: float | None = None
found_lon: float | None = None
who_found: str | None = None
raw_text: str | None = None
analysis_log: str | None = None
health_flags: list[str] = Field(default_factory=list)
diagnosis_type: list[str] = Field(default_factory=list)
terrain: list[str] = Field(default_factory=list)
resources: list[str] = Field(default_factory=list)
extra_resources: list[str] = Field(default_factory=list)
result: dict[str, Any] | None = None