class Database (And Associated)#
#pragma once
#include <string>
struct Record
{
public:
Record() = default;
Record(int id, const std::string& firstname, const std::string& lastname)
: id(id), firstname(firstname), lastname(lastname) {}
operator bool() const { return id != -1; }
const int id = -1;
const std::string firstname;
const std::string lastname;
};
Record split_line(const std::string& line);
class Database
{
public:
void insert(const Record&);
void commit();
void rollback();
};
#include "database.h"
#include <regex>
#include <print>
Record split_line(const std::string& line)
{
static const std::regex re_line("^(\\d+)\\s+(\\w+)\\s+(\\w+)\\s*$");
std::smatch match;
if (std::regex_search(line, match, re_line)) {
return Record(std::stoi(match[1].str()), match[2].str(), match[3].str());
}
else
return Record();
}
void Database::insert(const Record& r) {
std::println("insert id={}, firstname={}, lastname={}", r.id, r.firstname, r.lastname);
}
void Database::commit() {
std::println("commit");
}
void Database::rollback() {
std::println("rollback");
}