From 7db7b5c400b1ed1aea983ef0ffcceb4c1064ddf9 Mon Sep 17 00:00:00 2001 From: Robert Dyer <rdyer@unl.edu> Date: Sat, 9 Mar 2024 11:29:20 -0600 Subject: [PATCH] Provide "api/category-groups-get" API endpoint (#2446) --- packages/api/methods.test.ts | 33 ++++++++++++++++++- packages/api/methods.ts | 4 +++ packages/loot-core/src/server/api.ts | 5 +++ packages/loot-core/src/server/main.ts | 4 +++ .../loot-core/src/types/api-handlers.d.ts | 2 ++ upcoming-release-notes/2446.md | 6 ++++ 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 upcoming-release-notes/2446.md diff --git a/packages/api/methods.test.ts b/packages/api/methods.test.ts index e68214d83..ff8830010 100644 --- a/packages/api/methods.test.ts +++ b/packages/api/methods.test.ts @@ -58,11 +58,42 @@ describe('API CRUD operations', () => { await api.loadBudget(budgetName); }); - // apis: createCategoryGroup, updateCategoryGroup, deleteCategoryGroup + // apis: getCategoryGroups, createCategoryGroup, updateCategoryGroup, deleteCategoryGroup test('CategoryGroups: successfully update category groups', async () => { const month = '2023-10'; global.currentMonth = month; + // get existing category groups + const groups = await api.getCategoryGroups(); + expect(groups).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + hidden: 0, + id: 'fc3825fd-b982-4b72-b768-5b30844cf832', + is_income: 0, + name: 'Usual Expenses', + sort_order: 16384, + tombstone: 0, + }), + expect.objectContaining({ + hidden: 0, + id: 'a137772f-cf2f-4089-9432-822d2ddc1466', + is_income: 0, + name: 'Investments and Savings', + sort_order: 32768, + tombstone: 0, + }), + expect.objectContaining({ + hidden: 0, + id: '2E1F5BDB-209B-43F9-AF2C-3CE28E380C00', + is_income: 1, + name: 'Income', + sort_order: 32768, + tombstone: 0, + }), + ]), + ); + // create our test category group const mainGroupId = await api.createCategoryGroup({ name: 'test-group', diff --git a/packages/api/methods.ts b/packages/api/methods.ts index 03acaf0f4..cf8a6aa46 100644 --- a/packages/api/methods.ts +++ b/packages/api/methods.ts @@ -121,6 +121,10 @@ export function deleteAccount(id) { return send('api/account-delete', { id }); } +export function getCategoryGroups() { + return send('api/category-groups-get'); +} + export function createCategoryGroup(group) { return send('api/category-group-create', { group }); } diff --git a/packages/loot-core/src/server/api.ts b/packages/loot-core/src/server/api.ts index 2956ce61a..13c731235 100644 --- a/packages/loot-core/src/server/api.ts +++ b/packages/loot-core/src/server/api.ts @@ -514,6 +514,11 @@ handlers['api/categories-get'] = async function ({ : result.list.map(categoryModel.toExternal); }; +handlers['api/category-groups-get'] = async function () { + checkFileOpen(); + return handlers['get-category-groups'](); +}; + handlers['api/category-group-create'] = withMutation(async function ({ group, }) { diff --git a/packages/loot-core/src/server/main.ts b/packages/loot-core/src/server/main.ts index 64cd29938..b5e3c0d49 100644 --- a/packages/loot-core/src/server/main.ts +++ b/packages/loot-core/src/server/main.ts @@ -361,6 +361,10 @@ handlers['category-delete'] = mutator(async function ({ id, transferId }) { }); }); +handlers['get-category-groups'] = async function () { + return await db.getCategoriesGrouped(); +}; + handlers['category-group-create'] = mutator(async function ({ name, isIncome, diff --git a/packages/loot-core/src/types/api-handlers.d.ts b/packages/loot-core/src/types/api-handlers.d.ts index 7ad399073..1f314fde6 100644 --- a/packages/loot-core/src/types/api-handlers.d.ts +++ b/packages/loot-core/src/types/api-handlers.d.ts @@ -109,6 +109,8 @@ export interface ApiHandlers { grouped; }) => Promise<Array<CategoryGroupEntity> | Array<CategoryEntity>>; + 'api/category-groups-get': () => Promise<CategoryGroupEntity[]>; + 'api/category-group-create': (arg: { group }) => Promise<string>; 'api/category-group-update': (arg: { id; fields }) => Promise<unknown>; diff --git a/upcoming-release-notes/2446.md b/upcoming-release-notes/2446.md new file mode 100644 index 000000000..d37841b1c --- /dev/null +++ b/upcoming-release-notes/2446.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [psybers] +--- + +Provide "api/category-groups-get" API endpoint \ No newline at end of file -- GitLab