mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:47:44 +00:00
LibSQL: Remove Core::EventReceiver parent from SQL::Relation
This relationship was only used to provide a name, factory methods, and parent-child relationships for the relations.
This commit is contained in:
parent
5ad78cab8d
commit
3ea4c56d04
6 changed files with 76 additions and 51 deletions
|
@ -15,13 +15,18 @@ u32 Relation::hash() const
|
|||
return key().hash();
|
||||
}
|
||||
|
||||
SchemaDef::SchemaDef(DeprecatedString name)
|
||||
: Relation(move(name))
|
||||
ErrorOr<NonnullRefPtr<SchemaDef>> SchemaDef::create(DeprecatedString name)
|
||||
{
|
||||
return adopt_nonnull_ref_or_enomem(new (nothrow) SchemaDef(move(name)));
|
||||
}
|
||||
|
||||
SchemaDef::SchemaDef(Key const& key)
|
||||
: Relation(key["schema_name"].to_deprecated_string())
|
||||
ErrorOr<NonnullRefPtr<SchemaDef>> SchemaDef::create(Key const& key)
|
||||
{
|
||||
return create(key["schema_name"].to_deprecated_string());
|
||||
}
|
||||
|
||||
SchemaDef::SchemaDef(DeprecatedString name)
|
||||
: Relation(move(name))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -40,13 +45,18 @@ Key SchemaDef::make_key()
|
|||
|
||||
NonnullRefPtr<IndexDef> SchemaDef::index_def()
|
||||
{
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::construct("$schema", true, 0);
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::create("$schema", true, 0).release_value_but_fixme_should_propagate_errors();
|
||||
if (!s_index_def->size()) {
|
||||
s_index_def->append_column("schema_name", SQLType::Text, Order::Ascending);
|
||||
}
|
||||
return s_index_def;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<ColumnDef>> ColumnDef::create(Relation* parent, size_t column_number, DeprecatedString name, SQLType sql_type)
|
||||
{
|
||||
return adopt_nonnull_ref_or_enomem(new (nothrow) ColumnDef(parent, column_number, move(name), sql_type));
|
||||
}
|
||||
|
||||
ColumnDef::ColumnDef(Relation* parent, size_t column_number, DeprecatedString name, SQLType sql_type)
|
||||
: Relation(move(name), parent)
|
||||
, m_index(column_number)
|
||||
|
@ -58,7 +68,7 @@ ColumnDef::ColumnDef(Relation* parent, size_t column_number, DeprecatedString na
|
|||
Key ColumnDef::key() const
|
||||
{
|
||||
auto key = Key(index_def());
|
||||
key["table_hash"] = parent_relation()->hash();
|
||||
key["table_hash"] = parent()->hash();
|
||||
key["column_number"] = column_number();
|
||||
key["column_name"] = name();
|
||||
key["column_type"] = to_underlying(type());
|
||||
|
@ -80,7 +90,7 @@ Key ColumnDef::make_key(TableDef const& table_def)
|
|||
|
||||
NonnullRefPtr<IndexDef> ColumnDef::index_def()
|
||||
{
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::construct("$column", true, 0);
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::create("$column", true, 0).release_value_but_fixme_should_propagate_errors();
|
||||
if (!s_index_def->size()) {
|
||||
s_index_def->append_column("table_hash", SQLType::Integer, Order::Ascending);
|
||||
s_index_def->append_column("column_number", SQLType::Integer, Order::Ascending);
|
||||
|
@ -90,12 +100,27 @@ NonnullRefPtr<IndexDef> ColumnDef::index_def()
|
|||
return s_index_def;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<KeyPartDef>> KeyPartDef::create(IndexDef* index, DeprecatedString name, SQLType sql_type, Order sort_order)
|
||||
{
|
||||
return adopt_nonnull_ref_or_enomem(new (nothrow) KeyPartDef(index, move(name), sql_type, sort_order));
|
||||
}
|
||||
|
||||
KeyPartDef::KeyPartDef(IndexDef* index, DeprecatedString name, SQLType sql_type, Order sort_order)
|
||||
: ColumnDef(index, index->size(), move(name), sql_type)
|
||||
, m_sort_order(sort_order)
|
||||
{
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<IndexDef>> IndexDef::create(TableDef* table, DeprecatedString name, bool unique, u32 pointer)
|
||||
{
|
||||
return adopt_nonnull_ref_or_enomem(new (nothrow) IndexDef(table, move(name), unique, pointer));
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<IndexDef>> IndexDef::create(DeprecatedString name, bool unique, u32 pointer)
|
||||
{
|
||||
return create(nullptr, move(name), unique, pointer);
|
||||
}
|
||||
|
||||
IndexDef::IndexDef(TableDef* table, DeprecatedString name, bool unique, u32 pointer)
|
||||
: Relation(move(name), pointer, table)
|
||||
, m_key_definition()
|
||||
|
@ -103,14 +128,9 @@ IndexDef::IndexDef(TableDef* table, DeprecatedString name, bool unique, u32 poin
|
|||
{
|
||||
}
|
||||
|
||||
IndexDef::IndexDef(DeprecatedString name, bool unique, u32 pointer)
|
||||
: IndexDef(nullptr, move(name), unique, pointer)
|
||||
{
|
||||
}
|
||||
|
||||
void IndexDef::append_column(DeprecatedString name, SQLType sql_type, Order sort_order)
|
||||
{
|
||||
auto part = KeyPartDef::construct(this, move(name), sql_type, sort_order);
|
||||
auto part = KeyPartDef::create(this, move(name), sql_type, sort_order).release_value_but_fixme_should_propagate_errors();
|
||||
m_key_definition.append(part);
|
||||
}
|
||||
|
||||
|
@ -126,7 +146,7 @@ NonnullRefPtr<TupleDescriptor> IndexDef::to_tuple_descriptor() const
|
|||
Key IndexDef::key() const
|
||||
{
|
||||
auto key = Key(index_def()->to_tuple_descriptor());
|
||||
key["table_hash"] = parent_relation()->key().hash();
|
||||
key["table_hash"] = parent()->key().hash();
|
||||
key["index_name"] = name();
|
||||
key["unique"] = unique() ? 1 : 0;
|
||||
return key;
|
||||
|
@ -141,7 +161,7 @@ Key IndexDef::make_key(TableDef const& table_def)
|
|||
|
||||
NonnullRefPtr<IndexDef> IndexDef::index_def()
|
||||
{
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::construct("$index", true, 0);
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::create("$index", true, 0).release_value_but_fixme_should_propagate_errors();
|
||||
if (!s_index_def->size()) {
|
||||
s_index_def->append_column("table_hash", SQLType::Integer, Order::Ascending);
|
||||
s_index_def->append_column("index_name", SQLType::Text, Order::Ascending);
|
||||
|
@ -150,6 +170,11 @@ NonnullRefPtr<IndexDef> IndexDef::index_def()
|
|||
return s_index_def;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<TableDef>> TableDef::create(SchemaDef* schema, DeprecatedString name)
|
||||
{
|
||||
return adopt_nonnull_ref_or_enomem(new (nothrow) TableDef(schema, move(name)));
|
||||
}
|
||||
|
||||
TableDef::TableDef(SchemaDef* schema, DeprecatedString name)
|
||||
: Relation(move(name), schema)
|
||||
, m_columns()
|
||||
|
@ -169,7 +194,7 @@ NonnullRefPtr<TupleDescriptor> TableDef::to_tuple_descriptor() const
|
|||
Key TableDef::key() const
|
||||
{
|
||||
auto key = Key(index_def()->to_tuple_descriptor());
|
||||
key["schema_hash"] = parent_relation()->key().hash();
|
||||
key["schema_hash"] = parent()->key().hash();
|
||||
key["table_name"] = name();
|
||||
key.set_block_index(block_index());
|
||||
return key;
|
||||
|
@ -177,7 +202,7 @@ Key TableDef::key() const
|
|||
|
||||
void TableDef::append_column(DeprecatedString name, SQLType sql_type)
|
||||
{
|
||||
auto column = ColumnDef::construct(this, num_columns(), move(name), sql_type);
|
||||
auto column = ColumnDef::create(this, num_columns(), move(name), sql_type).release_value_but_fixme_should_propagate_errors();
|
||||
m_columns.append(column);
|
||||
}
|
||||
|
||||
|
@ -203,7 +228,7 @@ Key TableDef::make_key(Key const& schema_key)
|
|||
|
||||
NonnullRefPtr<IndexDef> TableDef::index_def()
|
||||
{
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::construct("$table", true, 0);
|
||||
NonnullRefPtr<IndexDef> s_index_def = IndexDef::create("$table", true, 0).release_value_but_fixme_should_propagate_errors();
|
||||
if (!s_index_def->size()) {
|
||||
s_index_def->append_column("schema_hash", SQLType::Integer, Order::Ascending);
|
||||
s_index_def->append_column("table_name", SQLType::Text, Order::Ascending);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue