create db with sellers and articles
This commit is contained in:
parent
79d96c22bc
commit
9705426c31
4 changed files with 51 additions and 8 deletions
|
@ -1,25 +1,62 @@
|
|||
#include "database.h"
|
||||
|
||||
#include <stdexcept>
|
||||
#include <iostream>
|
||||
|
||||
Database::Database(const std::string& dbname) : db(nullptr)
|
||||
Database::Database(const std::string& dbname) : db_(nullptr)
|
||||
{
|
||||
const int errCode = sqlite3_open(dbname.c_str(), &db);
|
||||
const int errCode = sqlite3_open(dbname.c_str(), &db_);
|
||||
if (errCode) {
|
||||
throw std::runtime_error("Could not open database file.");
|
||||
}
|
||||
exec("PRAGMA foreign_key = 1");
|
||||
}
|
||||
|
||||
Database::~Database() { sqlite3_close(db); }
|
||||
Database::~Database() { sqlite3_close(db_); }
|
||||
|
||||
void Database::exec(const std::string& sql)
|
||||
{
|
||||
const int errCode = sqlite3_exec(db, sql.c_str(), nullptr, nullptr, nullptr);
|
||||
const int errCode = sqlite3_exec(db_, sql.c_str(), nullptr, nullptr, nullptr);
|
||||
if (errCode) {
|
||||
throw std::runtime_error("Error in SQL execution.");
|
||||
}
|
||||
}
|
||||
|
||||
void Database::init()
|
||||
{
|
||||
std::string sqlCreateSellers{
|
||||
"CREATE TABLE IF NOT EXISTS sellers ("
|
||||
"id TEXT PRIMARY KEY NOT NULL, "
|
||||
"seller_no INTEGER, "
|
||||
"first_name TEXT, "
|
||||
"last_name TEXT, "
|
||||
"offered_articles INTEGER, "
|
||||
"UNIQUE (seller_no)"
|
||||
");"
|
||||
};
|
||||
|
||||
std::string sqlCreateArticles{
|
||||
"CREATE TABLE IF NOT EXISTS articles ("
|
||||
"id TEXT PRIMARY KEY NOT NULL, "
|
||||
"seller_id TEXT NOT NULL, "
|
||||
"source_no INTEGER NOT NULL, "
|
||||
"article_no INTEGER NOT NULL, "
|
||||
"description TEXT, "
|
||||
"price INTEGER NOT NULL, "
|
||||
"UNIQUE (source_no, article_no), "
|
||||
"FOREIGN KEY (seller_id) REFERENCES sellers(id) ON DELETE CASCADE, "
|
||||
"CHECK (article_no BETWEEN 0 AND 99999)"
|
||||
");"
|
||||
};
|
||||
|
||||
std::cout << sqlCreateArticles << "\n";
|
||||
|
||||
beginTransaction();
|
||||
exec(sqlCreateSellers);
|
||||
exec(sqlCreateArticles);
|
||||
endTransaction();
|
||||
}
|
||||
|
||||
void Database::beginTransaction() { exec("BEGIN TRANSACTION"); }
|
||||
|
||||
void Database::endTransaction() { exec("END TRANSACTION"); }
|
Loading…
Add table
Add a link
Reference in a new issue