xale-db 1.0
minimal SQL engine, written in c++
Loading...
Searching...
No Matches
Table.h
Go to the documentation of this file.
1#ifndef DATA_STRUCTURE_TABLE_H
2#define DATA_STRUCTURE_TABLE_H
3
6
7#include <unordered_map>
8#include <cstdint>
9#include <cstring>
10
11namespace Xale::DataStructure
12{
18 class Table : public IDataTemplate
19 {
20
21 public:
26 explicit Table(const std::string& name);
27
29 const std::string& getName() const override;
30
32 const std::vector<ColumnDefinition>& getSchema() const override;
33
35 const std::vector<Row>& getRows() const override;
36
38 size_t getRowCount() const override;
39
41 size_t getColumnCount() const override;
42
44 bool isEmpty() const override;
45
47 bool isMutable() const override;
48
53 void addColumn(const ColumnDefinition& column);
54
60 bool insertRow(const Row& row);
61
69 size_t updateRows(
70 const std::string& columnName,
71 const FieldValue& value,
72 const std::unordered_map<std::string, FieldValue>& updates);
73
80 size_t deleteRows(const std::string& columnName, const FieldValue& value);
81
88 std::vector<Row> findRows(const std::string& columnName, const FieldValue& value) const;
89
94 std::vector<char> serialize() const;
95
101 static Table deserialize(const std::vector<char>& data);
102
103 private:
105 std::string _name;
106
108 std::vector<ColumnDefinition> _schema;
109
111 std::vector<Row> _rows;
112
114 std::unique_ptr<Xale::DataStructure::BPlusTree<int, Row>> _primaryIndex;
115 };
116}
117
118#endif // DATA_STRUCTURE_TABLE_H
Abstract base class for data collections Base for Table, ResultSet, View, Index, etc.
Definition IDataTemplate.h:18
std::vector< Row > findRows(const std::string &columnName, const FieldValue &value) const
Find rows matching a condition.
Definition Table.cpp:133
bool insertRow(const Row &row)
Insert a new row into the table.
Definition Table.cpp:49
size_t getRowCount() const override
Definition Table.cpp:24
size_t getColumnCount() const override
Definition Table.cpp:29
const std::string & getName() const override
Definition Table.cpp:9
const std::vector< Row > & getRows() const override
Definition Table.cpp:19
bool isMutable() const override
Definition Table.cpp:39
const std::vector< ColumnDefinition > & getSchema() const override
Definition Table.cpp:14
static Table deserialize(const std::vector< char > &data)
Deserialize a table from a byte vector.
Definition Table.cpp:235
size_t updateRows(const std::string &columnName, const FieldValue &value, const std::unordered_map< std::string, FieldValue > &updates)
Update rows matching a condition.
Definition Table.cpp:59
void addColumn(const ColumnDefinition &column)
Add a new column to the table schema.
Definition Table.cpp:44
size_t deleteRows(const std::string &columnName, const FieldValue &value)
Delete rows matching a condition.
Definition Table.cpp:101
bool isEmpty() const override
Definition Table.cpp:34
std::vector< char > serialize() const
Serialize the table to a byte vector.
Definition Table.cpp:159
Table(const std::string &name)
Construct a new Table with the given name.
Definition Table.cpp:5
Definition BPlusTree.h:9
std::variant< int, double, std::string, std::monostate > FieldValue
Variant type for field values.
Definition DataTypes.h:24
Column definition.
Definition DataTypes.h:56
A row of data.
Definition DataTypes.h:45