feat(domain): add entities and json helpers for sqlite schema

这个提交包含在:
anygen-build-bot
2026-02-12 09:33:52 +00:00
父节点 e557a98c4f
当前提交 4930a02232
修改 7 个文件,包含 280 行新增0 行删除

54
backend/src/domain/json.cc 普通文件
查看文件

@@ -0,0 +1,54 @@
#include "csp/domain/json.h"
namespace csp::domain {
Json::Value ToPublicJson(const User& u) {
Json::Value j;
j["id"] = Json::Int64(u.id);
j["username"] = u.username;
j["rating"] = u.rating;
j["created_at"] = Json::Int64(u.created_at);
return j;
}
Json::Value ToJson(const Problem& p) {
Json::Value j;
j["id"] = Json::Int64(p.id);
j["slug"] = p.slug;
j["title"] = p.title;
j["statement_md"] = p.statement_md;
j["difficulty"] = p.difficulty;
j["source"] = p.source;
j["created_at"] = Json::Int64(p.created_at);
return j;
}
Json::Value ToJson(const Submission& s) {
Json::Value j;
j["id"] = Json::Int64(s.id);
j["user_id"] = Json::Int64(s.user_id);
j["problem_id"] = Json::Int64(s.problem_id);
j["language"] = ToString(s.language);
j["status"] = ToString(s.status);
j["score"] = s.score;
j["time_ms"] = s.time_ms;
j["memory_kb"] = s.memory_kb;
j["created_at"] = Json::Int64(s.created_at);
return j;
}
Json::Value ToJson(const WrongBookItem& w) {
Json::Value j;
j["user_id"] = Json::Int64(w.user_id);
j["problem_id"] = Json::Int64(w.problem_id);
if (w.last_submission_id.has_value()) {
j["last_submission_id"] = Json::Int64(*w.last_submission_id);
} else {
j["last_submission_id"] = Json::nullValue;
}
j["note"] = w.note;
j["updated_at"] = Json::Int64(w.updated_at);
return j;
}
} // namespace csp::domain