void add_user_subsession(const int session_uid, const std::string_view subsession_id, const DirBackendAdd &backend)
{
+ fs::path main_path;
try {
- fs::path main_path = get_main_dir_by_user_id(session_uid);
-
+ main_path = get_main_dir_by_user_id(session_uid);
create_main_subdirectory(session_uid, main_path);
+ }
+ catch (const std::exception &ex) {
+ LOGE("Exception while creating main subsessions dir [session_uid=%d subsession_id=%s]: %s", session_uid, subsession_id.data(), ex.what());
+ throw std::runtime_error("Couldn't add user subsession data");
+ }
+ add_user_subsession_inner(main_path, session_uid, subsession_id, backend);
+}
+
+void add_user_subsession_inner(const fs::path &main_path, const int session_uid, const std::string_view subsession_id, const DirBackendAdd &backend)
+{
+ try {
fs::path subsession_path = main_path / subsession_id;
if (fs::exists(subsession_path))
std::filesystem::path get_last_subsession_path_by_user_id(const int uid);
bool subsession_exists(const int session_uid, const std::string_view subsession_id);
void add_user_subsession(const int session_uid, const std::string_view subsession_id, const DirBackendAdd& backend);
+void add_user_subsession_inner(const std::filesystem::path &main_path, const int session_uid, const std::string_view subsession_id, const DirBackendAdd& backend);
void remove_user_subsession(const int session_uid, const std::string_view subsession_id);
bool switch_user_subsession(const int session_uid, const std::string_view prev_subsession, const std::string_view next_subsession);
std::vector<std::string> get_user_list(const int session_uid);