diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-04 09:25:36 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-10-04 09:25:36 +0200 |
| commit | 4cfbd259d1a6fbe7592b8975eed399b46082edc1 (patch) | |
| tree | c6095f5d2e0f1eabae41ddb62a6adc74d2210f97 /include/import_service.hpp | |
| parent | 485e5ebf340857db07b1c8ecb5c63dcf3a908377 (diff) | |
import ui
Diffstat (limited to 'include/import_service.hpp')
| -rw-r--r-- | include/import_service.hpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/include/import_service.hpp b/include/import_service.hpp new file mode 100644 index 0000000..516257e --- /dev/null +++ b/include/import_service.hpp @@ -0,0 +1,56 @@ +/* +* Copyright (c) 2025 Aldrik Ramaekers <aldrik.ramaekers@gmail.com> +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#pragma once + +#include "administration.hpp" + +typedef uint32_t i_err; + +#define I_ERR_SUCCESS 0 +#define I_ERR_FAILED_UPLOAD 1 +#define I_ERR_FAILED_QUERY 2 +#define I_ERR_FAILED_IMPORT 3 + +typedef enum +{ + IMPORT_STARTING, + IMPORT_UPLOADING_FILE, + IMPORT_QUERYING, + IMPORT_WAITING_FOR_RESPONSE, + IMPORT_DONE, +} import_status; + +typedef struct +{ + time_t started_at; + invoice result; + char file_path[MAX_LEN_PATH]; + i_err error; + import_status status; +} import_invoice_request; + +typedef struct +{ + bool (*upload_file)(char* file_path, char* file_id, size_t file_id_len); + bool (*query_with_file)(char* query, size_t query_length, char* file_id, char** response); +} ai_provider_impl; + +extern ai_provider_impl _chatgpt_api_provider; + +const char* import_error_to_str(i_err error); +const char* import_status_to_str(import_status status); +import_invoice_request* ai_document_to_invoice(char* file_path);
\ No newline at end of file |
