From a65e876f3277a7d7fca6e5129ac3e200dae2d0dc Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Fri, 9 Jan 2026 11:45:12 +0100 Subject: save all ai service configs --- include/administration.hpp | 18 +++++++++++++----- include/file_templates.hpp | 16 +++++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/administration.hpp b/include/administration.hpp index 5c39d59..2179301 100644 --- a/include/administration.hpp +++ b/include/administration.hpp @@ -44,6 +44,8 @@ #define MAX_LEN_PROJECT_REPORT_COSTCENTERS 50 #define MAX_BILLING_ITEMS 50 +#define MAX_AI_SERVICES AI_PROVIDER_END + #define ACTIVITY_MAX_PARAMS 3 #define ACTIVITY_USER "user" #define ACTIVITY_SYSTEM "system" @@ -394,7 +396,8 @@ typedef void (*project_changed_event)(project* project); typedef enum { AI_PROVIDER_OPENAI = 0, - //AI_PROVIDER_DEEPSEEK = 1, + AI_PROVIDER_GEMINI = 1, + AI_PROVIDER_PERPLEXITY = 2, AI_PROVIDER_END, } ai_provider; @@ -403,7 +406,7 @@ typedef struct { ai_provider provider; char model_name[MAX_LEN_SHORT_DESC]; - char api_key_public[MAX_LEN_API_KEY]; + char api_key_public[MAX_LEN_API_KEY]; // @TODO rename to api_key } ai_service; typedef enum @@ -449,7 +452,10 @@ typedef struct list_t invoices; // Service providers. - ai_service ai_service; + u32 ai_service_count; + ai_service all_ai_services[MAX_AI_SERVICES]; + ai_service ai_service; // @TODO rename to active_ai_service + email_service email_service; } ledger; @@ -518,12 +524,14 @@ namespace administration { char* get_currency_symbol_for_currency(char* code); char* get_default_currency(); time_t get_default_invoice_expire_duration(); - ai_service get_ai_service(); + ai_service get_active_ai_service(); + ai_service get_ai_service(ai_provider provider); email_service get_email_service(); void set_file_path(char* path); void set_next_id(s32 nr); void set_next_sequence_number(s32 nr); - void set_ai_service(ai_service provider); + void set_active_ai_service(ai_service provider); + void import_ai_service(ai_service provider); void set_email_service(email_service provider); void create_income_statement(income_statement* statement); bool company_info_is_valid(); diff --git a/include/file_templates.hpp b/include/file_templates.hpp index ec78cb7..b79b5bf 100644 --- a/include/file_templates.hpp +++ b/include/file_templates.hpp @@ -61,16 +61,22 @@ namespace file_template { " \n" ""; + static const char* ai_service_template = + " \n" + " {{AI_SERVICE_PROVIDER}}\n" + " {{AI_SERVICE_KEY}}\n" + " {{AI_SERVICE_MODEL}}\n" + " \n"; + static const char* administration_save_template = "\n" " {{NEXT_ID}}\n" " {{NEXT_SEQUENCE_NUMBER}}\n" " {{PROGRAM_VERSION}}\n" - " \n" - " {{AI_SERVICE_PROVIDER}}\n" - " {{AI_SERVICE_PUBLIC_KEY}}\n" - " {{AI_SERVICE_MODEL}}\n" - " \n" + " \n" + " {{ACTIVE_AI_SERVICE_PROVIDER}}\n" + " {{AI_SERVICE_LIST}}\n" + " \n" " \n" " {{EMAIL_SERVICE_PROVIDER}}\n" " {{EMAIL_SERVICE_KEY}}\n" -- cgit v1.2.3-70-g09d2