summaryrefslogtreecommitdiff
path: root/include/importer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/importer.hpp')
-rw-r--r--include/importer.hpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/include/importer.hpp b/include/importer.hpp
new file mode 100644
index 0000000..7e23e20
--- /dev/null
+++ b/include/importer.hpp
@@ -0,0 +1,57 @@
+/*
+* 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;
+extern ai_provider_impl _deepseek_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