xale-db 1.0
minimal SQL engine, written in c++
Loading...
Searching...
No Matches
DataTypes.h
Go to the documentation of this file.
1#ifndef DATA_STRUCTURE_DATA_TYPES_H
2#define DATA_STRUCTURE_DATA_TYPES_H
3
4#include <string>
5#include <vector>
6#include <variant>
7
9{
13 enum class FieldType
14 {
19 };
20
24 using FieldValue = std::variant<int, double, std::string, std::monostate>;
25
29 struct Field
30 {
31 std::string name;
34
35 Field() : name(""), type(FieldType::Null), value(std::monostate{}) {}
36 Field(std::string n, FieldType t, FieldValue v)
37 : name(std::move(n)), type(t), value(std::move(v)) {
38 }
39 };
40
44 struct Row
45 {
46 std::vector<Field> fields;
47
48 Row() = default;
49 explicit Row(std::vector<Field> f) : fields(std::move(f)) {}
50 };
51
56 {
57 std::string name;
61
62 ColumnDefinition(std::string n, FieldType t, bool pk = false, bool nullable = true)
63 : name(std::move(n)), type(t), isPrimaryKey(pk), isNullable(nullable) {
64 }
65 };
66}
67
68#endif // DATA_STRUCTURE_DATA_TYPES_H
Definition BPlusTree.h:9
FieldType
Type of data in a field.
Definition DataTypes.h:14
@ Float
Definition DataTypes.h:16
@ String
Definition DataTypes.h:17
@ Integer
Definition DataTypes.h:15
@ Null
Definition DataTypes.h:18
std::variant< int, double, std::string, std::monostate > FieldValue
Variant type for field values.
Definition DataTypes.h:24
ColumnDefinition(std::string n, FieldType t, bool pk=false, bool nullable=true)
Definition DataTypes.h:62
bool isNullable
Definition DataTypes.h:60
FieldType type
Definition DataTypes.h:58
std::string name
Definition DataTypes.h:57
bool isPrimaryKey
Definition DataTypes.h:59
FieldType type
Definition DataTypes.h:32
FieldValue value
Definition DataTypes.h:33
Field()
Definition DataTypes.h:35
Field(std::string n, FieldType t, FieldValue v)
Definition DataTypes.h:36
std::string name
Definition DataTypes.h:31
std::vector< Field > fields
Definition DataTypes.h:46
Row(std::vector< Field > f)
Definition DataTypes.h:49