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{
16 class Table : public IDataTemplate
17 {
18 public:
19 explicit Table(const std::string& name);
20 const std::string& getName() const override;
21 const std::vector<ColumnDefinition>& getSchema() const override;
22 const std::vector<Row>& getRows() const override;
23 size_t getRowCount() const override;
24 size_t getColumnCount() const override;
25 bool isEmpty() const override;
26 bool isMutable() const override;
27 void addColumn(const ColumnDefinition& column);
28 bool insertRow(const Row& row);
29 size_t updateRows(
30 const std::string& columnName,
31 const FieldValue& value,
32 const std::unordered_map<std::string, FieldValue>& updates);
33 size_t deleteRows(const std::string& columnName, const FieldValue& value);
34 std::vector<Row> findRows(const std::string& columnName, const FieldValue& value) const;
35
36 std::vector<char> serialize() const;
37 static Table deserialize(const std::vector<char>& data);
38
39 private:
40 std::string _name;
41 std::vector<ColumnDefinition> _schema;
42 std::vector<Row> _rows;
43 std::unique_ptr<Xale::DataStructure::BPlusTree<int, Row>> _primaryIndex;
44 };
45}
46
47#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 by condition.
Definition Table.cpp:194
bool insertRow(const Row &row)
Insert a row.
Definition Table.cpp:91
size_t getRowCount() const override
Get row count.
Definition Table.cpp:44
size_t getColumnCount() const override
Get column count.
Definition Table.cpp:53
const std::string & getName() const override
Get table name.
Definition Table.cpp:17
const std::vector< Row > & getRows() const override
Get all rows.
Definition Table.cpp:35
bool isMutable() const override
Check if mutable.
Definition Table.cpp:71
const std::vector< ColumnDefinition > & getSchema() const override
Get schema.
Definition Table.cpp:26
static Table deserialize(const std::vector< char > &data)
Deserialize table from binary format.
Definition Table.cpp:303
size_t updateRows(const std::string &columnName, const FieldValue &value, const std::unordered_map< std::string, FieldValue > &updates)
Update rows matching condition.
Definition Table.cpp:108
void addColumn(const ColumnDefinition &column)
Add column definition.
Definition Table.cpp:80
size_t deleteRows(const std::string &columnName, const FieldValue &value)
Delete rows matching condition.
Definition Table.cpp:156
bool isEmpty() const override
Check if empty.
Definition Table.cpp:62
std::vector< char > serialize() const
Serialize table to binary format.
Definition Table.cpp:224
Table(const std::string &name)
Constructor.
Definition Table.cpp:9
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