17#include <argparse/argparse.hpp>
19#include "../core/expr_evaluator.h"
31 namespace fs = std::filesystem;
70 explicit MantisApp(
int argc = 0,
char** argv =
nullptr);
104 static int quit(
const int& exitCode = 0,
const std::string& reason =
"Something went wrong!");
110 [[nodiscard]]
int port()
const;
132 [[nodiscard]] std::string
host()
const;
143 [[nodiscard]] std::string
publicDir()
const;
154 [[nodiscard]] std::string
dataDir()
const;
205 [[nodiscard]] argparse::ArgumentParser&
cmd()
const;
225 static std::unique_ptr<MantisApp> s_instance;
226 static std::mutex s_mutex;
239 bool ensureDirsAreCreated()
const;
248 static std::string getUserValueSecurely(
const std::string& prompt);
251 std::vector<std::string> m_cmdArgs;
254 bool initialized =
false;
256 std::string m_publicDir;
257 std::string m_dataDir;
259 std::string m_connString{};
262 std::string m_host =
"127.0.0.1";
264 bool m_toStartServer =
false;
266 std::unique_ptr<DatabaseUnit> m_database;
267 std::unique_ptr<LoggingUnit> m_logger;
268 std::unique_ptr<HttpUnit> m_http;
269 std::unique_ptr<argparse::ArgumentParser> m_opts;
270 std::unique_ptr<Router> m_router;
271 std::unique_ptr<Validator> m_validators;
272 std::unique_ptr<ExprEvaluator> m_exprEval;
273 std::unique_ptr<SettingsUnit> m_settings;
Database Management Class.
Definition database.h:28
Mantis entry point.
Definition app.h:63
int poolSize() const
Retrieve the database pool size value.
Definition app.cpp:523
Router & router() const
Get the router object instance.
Definition app.cpp:397
argparse::ArgumentParser & cmd() const
Get the commandline parser object.
Definition app.cpp:391
static MantisApp & instance()
Retrieve existing application instance.
Definition app.cpp:82
void close() const
Close the application.
Definition app.cpp:348
static std::string appVersion()
Definition app.cpp:465
void setDbType(const DbType &dbType)
Definition app.cpp:439
~MantisApp()
Definition app.cpp:53
void init()
Run initialization actions for Mantis, ensuring all objects are initialized properly before use.
Definition app.cpp:62
DatabaseUnit & db() const
Get the database unit object.
Definition app.cpp:373
LoggingUnit & log() const
Get the logging unit object.
Definition app.cpp:379
ExprEvaluator & evaluator() const
Get the cparse expression evaluator unit object instance.
Definition app.cpp:409
void openBrowserOnStart() const
Launch browser with the admin dashboard page. If all goes well, the default OS browser should open (i...
Definition app.cpp:420
static int appPatchVersion()
Fetch the patch version.
Definition app.cpp:480
static std::string jwtSecretKey()
Retrieve the JWT secret key.
Definition app.cpp:445
SettingsUnit & settings() const
Get the settings unit object.
Definition app.cpp:415
DbType dbType() const
Retrieves the active database type.
Definition app.cpp:485
std::string host() const
Retrieve HTTP Server host address. For instance, a host of 127.0.0.1, 0.0.0.0, etc.
Definition app.cpp:507
Validator & validators() const
Get the validators unit object instance in MantisApp.
Definition app.cpp:403
static int appMajorVersion()
Fetch the minor version.
Definition app.cpp:475
std::string publicDir() const
Retrieve the public static file directory.
Definition app.cpp:538
void setDataDir(const std::string &dir)
Update the data directory for MantisApp.
Definition app.cpp:559
void setPoolSize(const int &pool_size)
Set the database pool size value.
Definition app.cpp:529
void setHost(const std::string &host)
Update HTTP Server host address.
Definition app.cpp:513
HttpUnit & http() const
Get the http unit object.
Definition app.cpp:385
static int quit(const int &exitCode=0, const std::string &reason="Something went wrong!")
Quit the running application immediately.
Definition app.cpp:338
void setPort(const int &port)
Set a new port value for HTTP server.
Definition app.cpp:497
int port() const
Retrieve HTTP Listening port.
Definition app.cpp:491
std::string dataDir() const
Retrieves the data directory where SQLite db and files are stored.
Definition app.cpp:553
void ensureInitialized(const char *caller) const
Syntactic method to enforce.
Definition app.cpp:454
int run() const
Start the http server and start listening for requests.
Definition app.cpp:355
void setPublicDir(const std::string &dir)
Update HTTP server static file directory.
Definition app.cpp:544
static int appMinorVersion()
Fetch the major version.
Definition app.cpp:470
Router class allows for managing routes as well as acting as a top-wrapper on the HttpUnit.
Definition router.h:24
Manages application settings.
Definition settings.h:21
router.h
Definition app.h:30
DbType
Enum for which database is currently selected.
Definition app.h:44
@ MYSQL
PostGreSQL Database
Struct instance for handling evaluation of database access rules.
Definition expr_evaluator.h:27