From 33a7ad5ad2a4621b29b83641688d01b2eb77c9a0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Sep 2025 22:57:51 +0000 Subject: [PATCH] Implement display_name field with migration and API support Co-authored-by: elisiariocouto <818914+elisiariocouto@users.noreply.github.com> --- frontend/src/components/AccountsOverview.tsx | 13 +-- .../components/filters/AccountCombobox.tsx | 6 +- frontend/src/lib/api.ts | 4 +- frontend/src/types/api.ts | 3 +- leggen/api/models/accounts.py | 3 +- leggen/api/routes/accounts.py | 12 ++- leggen/services/database_service.py | 93 ++++++++++++++++++- scripts/generate_sample_db.py | 8 +- tests/unit/test_api_accounts.py | 59 ++++++++++++ 9 files changed, 177 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/AccountsOverview.tsx b/frontend/src/components/AccountsOverview.tsx index e3ddb74..18e8aa0 100644 --- a/frontend/src/components/AccountsOverview.tsx +++ b/frontend/src/components/AccountsOverview.tsx @@ -81,8 +81,8 @@ export default function AccountsOverview() { const queryClient = useQueryClient(); const updateAccountMutation = useMutation({ - mutationFn: ({ id, name }: { id: string; name: string }) => - apiClient.updateAccount(id, { name }), + mutationFn: ({ id, display_name }: { id: string; display_name: string }) => + apiClient.updateAccount(id, { display_name }), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["accounts"] }); setEditingAccountId(null); @@ -95,14 +95,15 @@ export default function AccountsOverview() { const handleEditStart = (account: Account) => { setEditingAccountId(account.id); - setEditingName(account.name || ""); + // Use display_name if available, otherwise fall back to name + setEditingName(account.display_name || account.name || ""); }; const handleEditSave = () => { if (editingAccountId && editingName.trim()) { updateAccountMutation.mutate({ id: editingAccountId, - name: editingName.trim(), + display_name: editingName.trim(), }); } }; @@ -267,7 +268,7 @@ export default function AccountsOverview() { setEditingName(e.target.value) } className="flex-1 px-3 py-1 text-base sm:text-lg font-medium border border-input rounded-md bg-background focus:outline-none focus:ring-2 focus:ring-ring focus:border-ring" - placeholder="Account name" + placeholder="Custom account name" name="search" autoComplete="off" onKeyDown={(e) => { @@ -303,7 +304,7 @@ export default function AccountsOverview() {

- {account.name || "Unnamed Account"} + {account.display_name || account.name || "Unnamed Account"}