Older/Database/Session.cpp
amass 1df434efba
Some checks failed
Deploy / Build (push) Failing after 3m26s
add chrono format of dbo.
2024-11-27 00:08:24 +08:00

54 lines
1.4 KiB
C++

#include "Session.h"
#include <Wt/Auth/Dbo/UserDatabase.h>
#include <Wt/Dbo/WtJsonSqlTraits.h>
Session::Session(Wt::Dbo::SqlConnectionPool &connectionPool) {
setConnectionPool(connectionPool);
mapClass<Task>("task");
mapClass<HomeBox::Item>("homebox_item");
mapClass<VisitorRecord>("visitor_record");
mapClass<User>("user");
mapClass<AuthInfo>("auth_info");
mapClass<AuthInfo::AuthIdentityType>("auth_identity");
mapClass<AuthInfo::AuthTokenType>("auth_token");
m_users = std::make_unique<UserDatabase>(*this);
}
Session::~Session() {
}
Wt::Dbo::ptr<User> Session::user() const {
if (m_login.loggedIn()) {
Wt::Dbo::ptr<AuthInfo> authInfo = m_users->find(m_login.user());
return authInfo->user();
} else
return Wt::Dbo::ptr<User>();
}
Wt::Auth::AbstractUserDatabase &Session::users() {
return *m_users;
}
Wt::Auth::Login &Session::login() {
return m_login;
}
namespace Wt {
namespace Dbo {
template <>
void JsonSerializer::act(FieldRef<std::chrono::system_clock::time_point> field) {
using namespace std::chrono;
writeFieldName(field.name());
fastJsStringLiteral(std::to_string(duration_cast<seconds>(field.value().time_since_epoch()).count()));
}
} // namespace Dbo
} // namespace Wt
DBO_INSTANTIATE_TEMPLATES(User)
DBO_INSTANTIATE_TEMPLATES(Task)
DBO_INSTANTIATE_TEMPLATES(HomeBox::Item)
DBO_INSTANTIATE_TEMPLATES(VisitorRecord)