added login logic
This commit is contained in:
38
src/login/loginDb.cpp
Normal file
38
src/login/loginDb.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "loginDb.hpp"
|
||||
#include "databasepool.h"
|
||||
#include <optional>
|
||||
|
||||
using namespace sqlite_orm;
|
||||
|
||||
namespace login {
|
||||
|
||||
int createUser(const std::string& username, const std::string& password_hash){
|
||||
if (username.empty() || password_hash.empty())
|
||||
return -1;
|
||||
|
||||
int64_t id;
|
||||
auto db = dbpool.acquire();
|
||||
|
||||
auto user = db->get_optional<User>(
|
||||
where(c(&User::username) == username)
|
||||
);
|
||||
|
||||
if (user.has_value()) {
|
||||
id = user.value().id;
|
||||
} else {
|
||||
auto c = newUser(username, password_hash);
|
||||
id = db->insert(c);
|
||||
}
|
||||
dbpool.release(db);
|
||||
return id;
|
||||
}
|
||||
|
||||
std::optional<User> getUser(const std::string& username){
|
||||
auto db = dbpool.acquire();
|
||||
auto user = db->get_optional<User>(
|
||||
where(c(&User::username) == username)
|
||||
);
|
||||
dbpool.release(db);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user