diff options
Diffstat (limited to 'src/administration_writer.cpp')
| -rw-r--r-- | src/administration_writer.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/administration_writer.cpp b/src/administration_writer.cpp index da9ee77..c1637f4 100644 --- a/src/administration_writer.cpp +++ b/src/administration_writer.cpp @@ -921,10 +921,35 @@ bool administration_writer::save_administration_info_blocking() strops::replace_int32(file_content, buf_length, "{{NEXT_SEQUENCE_NUMBER}}", administration::get_next_sequence_number()); strops::replace(file_content, buf_length, "{{PROGRAM_VERSION}}", config::PROGRAM_VERSION); - ai_service ai_service = administration::get_ai_service(); - strops::replace_int32(file_content, buf_length, "{{AI_SERVICE_PROVIDER}}", (s32)ai_service.provider); - strops::replace(file_content, buf_length, "{{AI_SERVICE_PUBLIC_KEY}}", ai_service.api_key_public); - strops::replace(file_content, buf_length, "{{AI_SERVICE_MODEL}}", ai_service.model_name); + ai_service active_ai_service = administration::get_active_ai_service(); + strops::replace_int32(file_content, buf_length, "{{ACTIVE_AI_SERVICE_PROVIDER}}", (s32)active_ai_service.provider); + + { + u32 ai_service_list_buffer_size = (u32)(strops::length(file_template::ai_service_template) + 1000) * AI_PROVIDER_END; // @TODO + char* ai_service_list_buffer = (char*)memops::alloc(ai_service_list_buffer_size); + memops::zero(ai_service_list_buffer, ai_service_list_buffer_size); + u32 ai_service_list_buffer_cursor = 0; + + for (u32 i = 0; i < AI_PROVIDER_END; i++) + { + int buf_length = 0; + char* file_content = copy_template(file_template::ai_service_template, &buf_length); + + ai_service service = administration::get_ai_service((ai_provider)i); + strops::replace_int32(file_content, buf_length, "{{AI_SERVICE_PROVIDER}}", i); + strops::replace(file_content, buf_length, "{{AI_SERVICE_KEY}}", service.api_key_public); + strops::replace(file_content, buf_length, "{{AI_SERVICE_MODEL}}", service.model_name); + + u32 content_len = (u32)strops::length(file_content); + memops::copy(ai_service_list_buffer+ai_service_list_buffer_cursor, file_content, content_len); + + ai_service_list_buffer_cursor += content_len; + } + + strops::replace(file_content, buf_length, "{{AI_SERVICE_LIST}}", ai_service_list_buffer); + memops::unalloc(ai_service_list_buffer); + } + email_service email_service = administration::get_email_service(); strops::replace_int32(file_content, buf_length, "{{EMAIL_SERVICE_PROVIDER}}", (s32)email_service.provider); |
