1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:07:36 +00:00

LibSQL: Added 'nullable' and 'default value' option to ColumnDef

These are standard SQL concepts which columns should be aware of.
This commit is contained in:
Jan de Visser 2021-07-17 07:04:13 -04:00 committed by Andreas Kling
parent b74721e604
commit 230118c4b2
2 changed files with 14 additions and 0 deletions

View file

@ -46,6 +46,7 @@ ColumnDef::ColumnDef(Relation* parent, size_t column_number, String name, SQLTyp
: Relation(move(name), parent) : Relation(move(name), parent)
, m_index(column_number) , m_index(column_number)
, m_type(sql_type) , m_type(sql_type)
, m_default(Value(sql_type))
{ {
} }
@ -59,6 +60,12 @@ Key ColumnDef::key() const
return key; return key;
} }
void ColumnDef::set_default_value(const Value& default_value)
{
VERIFY(default_value.type() == type());
m_default = default_value;
}
Key ColumnDef::make_key(TableDef const& table_def) Key ColumnDef::make_key(TableDef const& table_def)
{ {
Key key(index_def()); Key key(index_def());

View file

@ -74,6 +74,11 @@ public:
Key key() const override; Key key() const override;
SQLType type() const { return m_type; } SQLType type() const { return m_type; }
size_t column_number() const { return m_index; } size_t column_number() const { return m_index; }
void set_not_null(bool can_not_be_null) { m_not_null = can_not_be_null; }
bool not_null() const { return m_not_null; }
void set_default_value(Value const& default_value);
Value const& default_value() const { return m_default; }
static NonnullRefPtr<IndexDef> index_def(); static NonnullRefPtr<IndexDef> index_def();
static Key make_key(TableDef const&); static Key make_key(TableDef const&);
@ -83,6 +88,8 @@ protected:
private: private:
size_t m_index; size_t m_index;
SQLType m_type { SQLType::Text }; SQLType m_type { SQLType::Text };
bool m_not_null { false };
Value m_default;
}; };
class KeyPartDef : public ColumnDef { class KeyPartDef : public ColumnDef {