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"}