81 lines
1.7 KiB
C++
Executable file
81 lines
1.7 KiB
C++
Executable file
#include <fstream>
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include "DBEngine.h"
|
|
|
|
DBEngine::DBEngine(){
|
|
size = 0;
|
|
}
|
|
|
|
void DBEngine::createTable(string n){
|
|
Relation r(n);
|
|
tables.push_back(r);
|
|
size++;
|
|
}
|
|
|
|
void DBEngine::createTable(string n, vector<Attribute> a){
|
|
Relation r(n, a);
|
|
tables.push_back(r);
|
|
size++;
|
|
}
|
|
|
|
void DBEngine::createTable(Relation r){
|
|
tables.push_back(r);
|
|
size++;
|
|
}
|
|
|
|
vector<Relation> DBEngine::getRelations(){
|
|
return tables;
|
|
}
|
|
|
|
Relation& DBEngine::getTableFromName(string n){
|
|
//will return first occurence
|
|
for(int i = 0; i < tables.size(); i++){
|
|
if (tables[i].getTableName() == n){
|
|
return tables[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
void DBEngine::saveToFile(vector<string> cmds){
|
|
//writes nothing meaningful
|
|
ofstream file;
|
|
file.open("savefile.db");
|
|
|
|
for(int i = 0; i < cmds.size(); ++i){
|
|
file << cmds[i] << endl;
|
|
}
|
|
|
|
file.close();
|
|
}
|
|
|
|
//assumes that all attribute titles are unique
|
|
Relation DBEngine::projection(vector<string> input, Relation r){
|
|
|
|
|
|
// for(int i = 0; i < input.size(); i++) {
|
|
// it = find(r.getAttributes().begin(), r.getAttributes().end(), input[i])
|
|
|
|
//if(r[i].getName == input[])
|
|
// }
|
|
}
|
|
|
|
//ASAP: TEST ALL OF THIS
|
|
void DBEngine::rename(Relation& r, vector<string> oldnames, vector<string> newnames){
|
|
if (oldnames.size() != newnames.size()) {
|
|
cout << "Failure to rename: number of attributes do not match.";
|
|
return;
|
|
}
|
|
|
|
else if (oldnames != r.getAttributeNames()) {
|
|
cout << "Failure to rename: the attributes to be renamed do not exist in the relation.";
|
|
return;
|
|
}
|
|
|
|
else {
|
|
for(int i = 0; i < oldnames.size(); ++i){
|
|
r.renameAttribute(oldnames[i], newnames[i]);
|
|
}
|
|
}
|
|
}
|
|
|