School Commit Init

This commit is contained in:
2024-08-31 12:07:21 +03:00
commit 0b130ee18c
2801 changed files with 4720552 additions and 0 deletions
@@ -0,0 +1,56 @@
#include "QuestionRepo.h"
#include <stdexcept>
QuestionRepo::QuestionRepo(std::string file_name)
{
this->_file_name = file_name;
this->read_from_file();
}
QuestionRepo::~QuestionRepo()
{
this->write_to_file();
}
void QuestionRepo::add(Question q)
{
for(auto& question : this->_questions)
if(question.id() == q.id())
throw std::runtime_error("Question already exists!");
this->_questions.push_back(q);
}
std::vector<Question> QuestionRepo::get_all()
{
return this->_questions;
}
int QuestionRepo::size()
{
return this->_questions.size();
}
void QuestionRepo::read_from_file()
{
std::ifstream file(this->_file_name);
if(!file.is_open())
throw std::runtime_error("File could not be opened!");
std::string line;
while(std::getline(file, line) && !line.empty())
{
Question q;
line >> q;
this->_questions.push_back(q);
}
file.close();
}
void QuestionRepo::write_to_file()
{
std::ofstream file(this->_file_name);
if(!file.is_open())
throw std::runtime_error("File could not be opened!");
for(auto& question : this->_questions)
file << question;
file.close();
}