Skip to content

Commit 7f02b8a

Browse files
committed
Minor refactor: Separate ff.hpp into several smaller header files
1 parent b12c5c9 commit 7f02b8a

20 files changed

+491
-429
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
3+
namespace ff {
4+
enum class AccountCreationStatus {
5+
Success,
6+
Failure,
7+
UsernameExists,
8+
UsernameTooShort,
9+
UsernameTooLong,
10+
PasswordTooShort,
11+
PasswordTooLong,
12+
InvalidUsername,
13+
InvalidPassword,
14+
InvalidEmail,
15+
EmailExists,
16+
};
17+
} // namespace ff

include/cache_manager.hpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#pragma once
2+
3+
#include <filesystem>
4+
#include <string>
5+
#include <fstream>
6+
#include <settings.hpp>
7+
8+
namespace ff {
9+
class CacheManager {
10+
using FileContent = std::string;
11+
using FileName = std::string;
12+
std::vector<std::pair<FileName, FileContent>> cache{};
13+
public:
14+
explicit CacheManager() = default;
15+
~CacheManager() = default;
16+
17+
[[nodiscard]] FileContent open_file(const FileName& fp, const bool cache = true) { //NOLINT
18+
if (cache && settings.cache_static) {
19+
for (const auto& it : this->cache) if (it.first == fp) return it.second;
20+
if (!std::filesystem::exists(fp)) {
21+
throw std::runtime_error{"File does not exist."};
22+
}
23+
std::ifstream file{fp};
24+
const std::string& data = {std::istreambuf_iterator<char>{file}, std::istreambuf_iterator<char>{}};
25+
this->cache.emplace_back(fp, data);
26+
return data;
27+
}
28+
29+
std::ifstream file{fp};
30+
return {std::istreambuf_iterator<char>{file}, std::istreambuf_iterator<char>{}};
31+
}
32+
};
33+
} // namespace ff

include/database.hpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#pragma once
2+
3+
#define LIMHAMN_DATABASE_IMPL
4+
#include <limhamn/database/database.hpp>
5+
6+
namespace ff {
7+
class database {
8+
#if FF_ENABLE_SQLITE
9+
limhamn::database::sqlite3_database sqlite{};
10+
#define SQLITE_HANDLE this->sqlite
11+
#endif
12+
#if FF_ENABLE_POSTGRESQL
13+
limhamn::database::postgresql_database postgres{};
14+
#define POSTGRES_HANDLE this->postgres
15+
#endif
16+
#ifndef SQLITE_HANDLE
17+
#define SQLITE_HANDLE this->postgres
18+
#endif
19+
#ifndef POSTGRES_HANDLE
20+
#define POSTGRES_HANDLE this->sqlite
21+
#endif
22+
23+
bool enabled_type = false; // false = sqlite, true = postgres
24+
public:
25+
explicit database(bool type) : enabled_type(type) {}
26+
std::vector<std::unordered_map<std::string, std::string>> query(const std::string& query) {
27+
if (!this->enabled_type) {
28+
return SQLITE_HANDLE.query(query);
29+
} else {
30+
return POSTGRES_HANDLE.query(query);
31+
}
32+
}
33+
bool exec(const std::string& query) {
34+
if (!this->enabled_type) {
35+
return SQLITE_HANDLE.exec(query);
36+
} else {
37+
return POSTGRES_HANDLE.exec(query);
38+
}
39+
}
40+
template <typename... Args>
41+
std::vector<std::unordered_map<std::string, std::string>> query(const std::string& query, Args... args) {
42+
if (!this->enabled_type) {
43+
return SQLITE_HANDLE.query(query, args...);
44+
} else {
45+
return POSTGRES_HANDLE.query(query, args...);
46+
}
47+
}
48+
template <typename... Args>
49+
bool exec(const std::string& query, Args... args) {
50+
if (!this->enabled_type) {
51+
return SQLITE_HANDLE.exec(query, args...);
52+
} else {
53+
return POSTGRES_HANDLE.exec(query, args...);
54+
}
55+
}
56+
[[nodiscard]] bool good() const {
57+
return this->enabled_type ? POSTGRES_HANDLE.good() : SQLITE_HANDLE.good();
58+
}
59+
#if FF_ENABLE_SQLITE
60+
limhamn::database::sqlite3_database& get_sqlite() {
61+
return this->sqlite;
62+
}
63+
#endif
64+
#if FF_ENABLE_POSTGRESQL
65+
limhamn::database::postgresql_database& get_postgres() {
66+
return this->postgres;
67+
}
68+
#endif
69+
};
70+
} // namespace ff

include/endpoint_handlers.hpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#pragma once
2+
3+
#include <database.hpp>
4+
#include <limhamn/http/http_server.hpp>
5+
6+
namespace ff {
7+
limhamn::http::server::response handle_try_upload_post_endpoint(const limhamn::http::server::request& request, database& db);
8+
limhamn::http::server::response handle_try_upload_post_comment_endpoint(const limhamn::http::server::request& request, database& db);
9+
limhamn::http::server::response handle_root_endpoint(const limhamn::http::server::request& request, database& db);
10+
limhamn::http::server::response handle_try_setup_endpoint(const limhamn::http::server::request& request, database& db);
11+
limhamn::http::server::response handle_setup_endpoint(const limhamn::http::server::request& request, database& db);
12+
limhamn::http::server::response handle_virtual_favicon_endpoint(const limhamn::http::server::request& request, database& db);
13+
limhamn::http::server::response handle_virtual_stylesheet_endpoint(const limhamn::http::server::request& request, database& db);
14+
limhamn::http::server::response handle_virtual_script_endpoint(const limhamn::http::server::request& request, database& db);
15+
limhamn::http::server::response handle_api_try_register_endpoint(const limhamn::http::server::request& request, database& db);
16+
limhamn::http::server::response handle_api_try_login_endpoint(const limhamn::http::server::request& request, database& db);
17+
limhamn::http::server::response handle_try_upload_forwarder_endpoint(const limhamn::http::server::request& request, database& db);
18+
limhamn::http::server::response handle_try_upload_file_endpoint(const limhamn::http::server::request& request, database& db);
19+
limhamn::http::server::response handle_api_delete_forwarder_endpoint(const limhamn::http::server::request& request, database& db);
20+
limhamn::http::server::response handle_api_delete_file_endpoint(const limhamn::http::server::request& request, database& db);
21+
limhamn::http::server::response handle_api_get_forwarders_endpoint(const limhamn::http::server::request& request, database& db);
22+
limhamn::http::server::response handle_api_get_files_endpoint(const limhamn::http::server::request& request, database& db);
23+
limhamn::http::server::response handle_api_set_approval_for_uploads_endpoint(const limhamn::http::server::request& request, database& db);
24+
limhamn::http::server::response handle_api_update_profile_endpoint(const limhamn::http::server::request& request, database& db);
25+
limhamn::http::server::response handle_api_get_profile_endpoint(const limhamn::http::server::request& request, database& db);
26+
limhamn::http::server::response handle_api_get_announcements_endpoint(const limhamn::http::server::request& request, database& db);
27+
limhamn::http::server::response handle_api_delete_announcement(const limhamn::http::server::request& request, database& db);
28+
limhamn::http::server::response handle_api_edit_announcement_endpoint(const limhamn::http::server::request& request, database& db);
29+
limhamn::http::server::response handle_api_create_announcement_endpoint(const limhamn::http::server::request& request, database& db);
30+
limhamn::http::server::response handle_api_rate_forwarder_endpoint(const limhamn::http::server::request& request, database& db);
31+
limhamn::http::server::response handle_api_rate_file_endpoint(const limhamn::http::server::request& request, database& db);
32+
limhamn::http::server::response handle_api_comment_forwarder_endpoint(const limhamn::http::server::request& request, database& db);
33+
limhamn::http::server::response handle_api_comment_file_endpoint(const limhamn::http::server::request& request, database& db);
34+
limhamn::http::server::response handle_api_delete_comment_forwarder_endpoint(const limhamn::http::server::request& request, database& db);
35+
limhamn::http::server::response handle_api_delete_comment_file_endpoint(const limhamn::http::server::request& request, database& db);
36+
limhamn::http::server::response handle_api_stay_logged_in(const limhamn::http::server::request& request, database& db);
37+
limhamn::http::server::response handle_api_try_logout_endpoint(const limhamn::http::server::request& request, database& db);
38+
39+
limhamn::http::server::response handle_api_create_post_endpoint(const limhamn::http::server::request& request, database& db);
40+
limhamn::http::server::response handle_api_delete_post_endpoint(const limhamn::http::server::request& request, database& db);
41+
limhamn::http::server::response handle_api_edit_post_endpoint(const limhamn::http::server::request& request, database& db);
42+
limhamn::http::server::response handle_api_close_post_endpoint(const limhamn::http::server::request& request, database& db);
43+
limhamn::http::server::response handle_api_get_posts_endpoint(const limhamn::http::server::request& request, database& db);
44+
limhamn::http::server::response handle_api_comment_post_endpoint(const limhamn::http::server::request& request, database& db);
45+
limhamn::http::server::response handle_api_delete_comment_post_endpoint(const limhamn::http::server::request& request, database& db);
46+
47+
limhamn::http::server::response handle_api_create_topic_endpoint(const limhamn::http::server::request& request, database& db);
48+
limhamn::http::server::response handle_api_delete_topic_endpoint(const limhamn::http::server::request& request, database& db);
49+
limhamn::http::server::response handle_api_get_topics_endpoint(const limhamn::http::server::request& request, database& db);
50+
limhamn::http::server::response handle_api_edit_topic_endpoint(const limhamn::http::server::request& request, database& db);
51+
limhamn::http::server::response handle_api_close_topic_endpoint(const limhamn::http::server::request& request, database& db);
52+
} // namespace ff

0 commit comments

Comments
 (0)