-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAPI.h
More file actions
129 lines (108 loc) · 3.14 KB
/
API.h
File metadata and controls
129 lines (108 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#pragma once
#include <vector>
#include <string>
#include "../RecordManager/RecordManager.h"
#include "../catalog_manager/CatalogManager.h"
#include "../IndexManager/IndexManager.h"
#include "../Public/Base.h"
#include "../Public/SelectCondition.h"
#include "../Public/Attribute.h"
#include "../Public/Tuple.h"
using namespace std;
struct InsertVal // insert values
{
string val; // value
NumType given_type; // type
InsertVal() : val(""), given_type(DEFAULT) {}
InsertVal(string given_val, NumType given_t)
: val(given_val), given_type(given_t) {}
};
class InsertQuery
{
public:
InsertQuery(){};
~InsertQuery(){};
void SetTableName(string tablename);
void Clear(); // clear all saved data
void Insert(string insert_val); // insert value
Result Query(CatalogManager& catalog_manager, RecordManager& record_manager, IndexManager& index_manager); // main process function
private:
string insert_table_name;
vector<InsertVal> insert_values;
};
class CreateTable
{
public:
CreateTable(){};
~CreateTable(){};
void SetTableName(string &given_table_name);
void InsertAttr(string &attr_name);
void InsertType(NumType given_type);
void InsertSize(int given_size);
void InsertUnique();
void InsertPrimary(string& attr_name);
void Clear();
int Query(CatalogManager& catalog_manager, IndexManager& index_manager);
private:
string tmp_table_name;
vector<Attribute> attr_list;
vector<string> primary_list;
};
class SelectQuery
{
public:
SelectQuery();
~SelectQuery();
Result Query(CatalogManager& catalog_manager, RecordManager& record_manager, IndexManager& index_manager);
void Insert(string &attr);
void Clear();
void SetSelectAll();
void SetSelectTable(string &table);
void SetWhereExpr(string& expr2);
void SetCmp(CMP in_cmp);
void SetExpr1(string& in_expr1);
private:
vector<string> select_attr_list;
string select_table_name;
bool select_all;
vector<WhereExpr> where_expr_list;
string tmp_expr1;
CMP tmp_cmp;
};
class DeleteQuery
{
public:
DeleteQuery();
~DeleteQuery();
Result Query(CatalogManager& catalog_manager, RecordManager& record_manager, IndexManager& index_manager);
void Clear();
void SetDeleteTable(string& table);
void SetExpr1(string& in_expr1);
void SetCmp(CMP in_cmp);
void SetWhereExpr(string& expr2);
private:
string delete_table_name;
vector<WhereExpr> where_expr_list;
string tmp_expr1;
CMP tmp_cmp;
};
class API {
public:
InsertQuery insert_values_query;
CreateTable create_table;
SelectQuery select_query;
DeleteQuery delete_query;
RecordManager record_manager;
IndexManager index_manager;
CatalogManager catalog_manager;
void DropIndex(string drop_index){
DropIndex(drop_index, catalog_manager, index_manager);
}
void DropIndex(string drop_index, CatalogManager& catalog_manager, IndexManager& index_manager);
void DropTable(string drop_table){
DropTable(drop_table, catalog_manager);
}
void DropTable(string drop_table, CatalogManager& catalog_manager);
void CreateIndex(string index_name, string table_name, string attr_name);
};
Result WhereExpr_To_SelectCondition(CatalogManager& catalog_manager, string& tableName, vector<WhereExpr>& wheres, vector<SelectCondition>& selectConditions);