.. _program_listing_file_lib_BaseStatus.hpp: Program Listing for File BaseStatus.hpp ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``lib/BaseStatus.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "BaseStatus.hpp" #include "DatabaseHelper.hpp" #include #include #include #include "utils.hpp" #include "Logger.hpp" using namespace std; using json = nlohmann::json; class BaseStatus { private: string class_name = "N/A"; // extending class string primary_key = "N/A"; // primary key of table std::thread *pThread = nullptr; // for timed updates to database bool recording = false; // true if timed updates are happening double progress = 0.0; // training of model or completion of projection bool delete_database = false; // true if we created a new database void scheduler(); bool insert_query(string query); protected: Database* database = nullptr; // connection to Delphi DB string table_name = "N/A"; // table of extending class void set_progress(double p){ progress = p;} void start_recording_progress(); void stop_recording_progress(); bool write_data(json data); void insert_data(string id, json data); void set_state(double progress, string status, bool busy); Logger logger = Logger("BaseStatus"); public: BaseStatus( const string class_name, const string table_name, const string primary_key ):database(new Database()), class_name(class_name), table_name(table_name), primary_key(primary_key), delete_database(true){} BaseStatus( const string class_name, const string table_name, const string primary_key, Database* database ):database(database), class_name(class_name), table_name(table_name), primary_key(primary_key){} ~BaseStatus(); json read_data(); json read_data(string id); void increment_progress(double i) { progress += i;} // database table columns const string COL_ID = "id"; // table column, primary key const string COL_DATA = "progress"; // table column where we store our JSON // serialized JSON fields const string PROGRESS = "progressPercentage"; // double [0,1] const string STATUS = "status"; // string, current state const string BUSY = "busy"; // boolean, true if locked };