From 985d969222236174c5634f20f7fbb44ead97e793 Mon Sep 17 00:00:00 2001 From: calebyhan Date: Tue, 23 Jun 2026 16:33:12 -0400 Subject: [PATCH] add nullable short_title field to Legislation across backend model, schemas, frontend types, form, and detail page --- backend/app/models/Legislation.py | 1 + backend/app/schemas/legislation.py | 3 +++ backend/tests/models/test_other_models.py | 1 + frontend/src/app/legislation/[id]/page.tsx | 8 +++++++- frontend/src/components/admin/LegislationForm.tsx | 12 ++++++++++++ frontend/src/types/admin.ts | 1 + frontend/src/types/index.ts | 1 + 7 files changed, 26 insertions(+), 1 deletion(-) diff --git a/backend/app/models/Legislation.py b/backend/app/models/Legislation.py index f765295..e6e8d0d 100644 --- a/backend/app/models/Legislation.py +++ b/backend/app/models/Legislation.py @@ -13,6 +13,7 @@ class Legislation(Base): id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String(255), nullable=False) + short_title: Mapped[str | None] = mapped_column(String(255), nullable=True) bill_number: Mapped[str] = mapped_column(String(50), nullable=False) session_number: Mapped[int] = mapped_column(Integer, nullable=False) sponsor_id: Mapped[int | None] = mapped_column(ForeignKey("senator.id"), nullable=True) diff --git a/backend/app/schemas/legislation.py b/backend/app/schemas/legislation.py index a78a3c3..4ac0f8c 100644 --- a/backend/app/schemas/legislation.py +++ b/backend/app/schemas/legislation.py @@ -17,6 +17,7 @@ class LegislationActionDTO(BaseModel): class LegislationListDTO(BaseModel): id: int title: str + short_title: str | None = None bill_number: str session_number: int sponsor_name: str @@ -40,6 +41,7 @@ class LegislationDTO(LegislationDetailDTO): class CreateLegislationDTO(BaseModel): title: str + short_title: str | None = None bill_number: str session_number: int sponsor_id: int | None @@ -53,6 +55,7 @@ class CreateLegislationDTO(BaseModel): class UpdateLegislationDTO(BaseModel): title: str | None = None + short_title: str | None = None bill_number: str | None = None session_number: int | None = None sponsor_id: int | None = None diff --git a/backend/tests/models/test_other_models.py b/backend/tests/models/test_other_models.py index 268cbb2..d7c1dc6 100644 --- a/backend/tests/models/test_other_models.py +++ b/backend/tests/models/test_other_models.py @@ -81,6 +81,7 @@ def test_columns_exist(self): expected = { "id", "title", + "short_title", "bill_number", "session_number", "sponsor_id", diff --git a/frontend/src/app/legislation/[id]/page.tsx b/frontend/src/app/legislation/[id]/page.tsx index c3a2622..1973167 100644 --- a/frontend/src/app/legislation/[id]/page.tsx +++ b/frontend/src/app/legislation/[id]/page.tsx @@ -80,7 +80,13 @@ export default async function LegislationDetailPage({ -

{legislation.title}

+

{legislation.title}

+ {legislation.short_title && ( +

+ {legislation.short_title} +

+ )} + {!legislation.short_title &&
}

diff --git a/frontend/src/components/admin/LegislationForm.tsx b/frontend/src/components/admin/LegislationForm.tsx index 2407a2d..66ece27 100644 --- a/frontend/src/components/admin/LegislationForm.tsx +++ b/frontend/src/components/admin/LegislationForm.tsx @@ -31,6 +31,7 @@ export function LegislationForm({ isLoading = false, }: LegislationFormProps) { const [title, setTitle] = useState(initialData?.title || ""); + const [shortTitle, setShortTitle] = useState(initialData?.short_title || ""); const [billNumber, setBillNumber] = useState(initialData?.bill_number || ""); const [sessionNumber, setSessionNumber] = useState( initialData?.session_number || 1, @@ -98,6 +99,7 @@ export function LegislationForm({ e.preventDefault(); onSubmit({ title: title.trim(), + short_title: shortTitle.trim() || null, bill_number: billNumber.trim(), session_number: sessionNumber, sponsor_id: sponsorId, @@ -140,6 +142,16 @@ export function LegislationForm({

+
+ + setShortTitle(e.target.value)} + /> +
+
diff --git a/frontend/src/types/admin.ts b/frontend/src/types/admin.ts index 3f1197a..cecfadc 100644 --- a/frontend/src/types/admin.ts +++ b/frontend/src/types/admin.ts @@ -64,6 +64,7 @@ export interface UpdateNews { export interface CreateLegislation { title: string; + short_title?: string | null; bill_number: string; session_number: number; sponsor_id: number | null; diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index 88d085e..9714d81 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -68,6 +68,7 @@ export interface LegislationAction { export interface Legislation { id: number; title: string; + short_title?: string | null; bill_number: string; session_number: number; sponsor_name: string;