Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions backend/config.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
import os
from enum import Enum

from dotenv import load_dotenv

load_dotenv()


class ScaffoldStrategy(str, Enum):
CHECK = "CHECK"
MERGE = "MERGE"
FORCE = "FORCE"


_db_hostname = os.getenv("DATABASE_HOSTNAME", "postgres")
_db_name = os.getenv("DATABASE_NAME", "postgres")
_db_username = os.getenv("DATABASE_USERNAME", "postgres")
Expand Down Expand Up @@ -52,6 +60,12 @@

SCAFFOLD_DIRECTORY = os.getenv("SCAFFOLD_DIRECTORY", None)

_raw_scaffold_strategy = os.getenv("SCAFFOLD_STRATEGY", "CHECK").strip().upper()
try:
SCAFFOLD_STRATEGY = ScaffoldStrategy(_raw_scaffold_strategy)
except ValueError:
SCAFFOLD_STRATEGY = ScaffoldStrategy.CHECK

INFLUXDB_URL = os.getenv("INFLUXDB_URL", "http://localhost:8086")
INFLUXDB_TOKEN = os.getenv("INFLUXDB_TOKEN", None)
INFLUXDB_ORG = os.getenv("INFLUXDB_ORG", "tasks")
Expand Down
29 changes: 29 additions & 0 deletions backend/database/migrations/versions/add_scaffold_import_state.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""Add scaffold_import_state table for directory hash

Revision ID: add_scaffold_import_state
Revises: make_patients_clinic_required
Create Date: 2026-01-30

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa

revision: str = "add_scaffold_import_state"
down_revision: Union[str, Sequence[str], None] = "make_patients_clinic_required"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
op.create_table(
"scaffold_import_state",
sa.Column("key", sa.String(), nullable=False),
sa.Column("value", sa.String(), nullable=False),
sa.PrimaryKeyConstraint("key"),
)


def downgrade() -> None:
op.drop_table("scaffold_import_state")
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""Make patients.clinic_id nullable for scaffold FORCE unassign

Revision ID: make_patients_clinic_nullable
Revises: 655294b10318
Create Date: 2026-01-30

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa

revision: str = "make_patients_clinic_nullable"
down_revision: Union[str, Sequence[str], None] = "655294b10318"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
op.alter_column(
"patients",
"clinic_id",
existing_type=sa.String(),
nullable=True,
)


def downgrade() -> None:
op.alter_column(
"patients",
"clinic_id",
existing_type=sa.String(),
nullable=False,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""Make patients.clinic_id required again

Revision ID: make_patients_clinic_required
Revises: make_patients_clinic_nullable
Create Date: 2026-01-30

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa

revision: str = "make_patients_clinic_required"
down_revision: Union[str, Sequence[str], None] = "make_patients_clinic_nullable"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
op.alter_column(
"patients",
"clinic_id",
existing_type=sa.String(),
nullable=False,
)


def downgrade() -> None:
op.alter_column(
"patients",
"clinic_id",
existing_type=sa.String(),
nullable=True,
)
1 change: 1 addition & 0 deletions backend/database/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
from .patient import Patient, patient_locations, patient_teams # noqa: F401
from .task import Task, task_dependencies # noqa: F401
from .property import PropertyDefinition, PropertyValue # noqa: F401
from .scaffold import ScaffoldImportState # noqa: F401
10 changes: 10 additions & 0 deletions backend/database/models/scaffold.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from database.models.base import Base
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy import String


class ScaffoldImportState(Base):
__tablename__ = "scaffold_import_state"

key: Mapped[str] = mapped_column(String, primary_key=True)
value: Mapped[str] = mapped_column(String)
Loading
Loading