summaryrefslogtreecommitdiff
path: root/src/database/row.hpp
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2018-03-17 17:28:41 +0100
committerlouiz’ <louiz@louiz.org>2018-03-17 17:28:41 +0100
commitd0e3c71b91f1a1c1780158789fd42b8ac7209495 (patch)
treee5e4f8055e73437318a36bddebd1c6d426fdce8e /src/database/row.hpp
parentd62ca9f87906be6f046fe9d07afb8bfb69c166e3 (diff)
downloadbiboumi-d0e3c71b91f1a1c1780158789fd42b8ac7209495.tar.gz
biboumi-d0e3c71b91f1a1c1780158789fd42b8ac7209495.tar.bz2
biboumi-d0e3c71b91f1a1c1780158789fd42b8ac7209495.tar.xz
biboumi-d0e3c71b91f1a1c1780158789fd42b8ac7209495.zip
Revert "Use if constexpr to make things a lot more readable"
This reverts commit d62ca9f87906be6f046fe9d07afb8bfb69c166e3.
Diffstat (limited to 'src/database/row.hpp')
-rw-r--r--src/database/row.hpp52
1 files changed, 27 insertions, 25 deletions
diff --git a/src/database/row.hpp b/src/database/row.hpp
index 194a9c5..3703ff7 100644
--- a/src/database/row.hpp
+++ b/src/database/row.hpp
@@ -29,39 +29,41 @@ struct Row
return col.value;
}
- void save(std::unique_ptr<DatabaseEngine>& db)
+ template <bool Coucou=true>
+ void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<!is_one_of<Id, T...> && Coucou>::type* = nullptr)
{
- if constexpr(is_one_of<Id, T...>)
+ this->insert(*db);
+ }
+
+ template <bool Coucou=true>
+ void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<is_one_of<Id, T...> && Coucou>::type* = nullptr)
+ {
+ const Id& id = std::get<Id>(this->columns);
+ if (id.value == Id::unset_value)
{
- const Id& id = std::get<Id>(this->columns);
- if (id.value == Id::unset_value)
- {
- this->insert(*db);
- if (db->last_inserted_rowid >= 0)
- std::get<Id>(this->columns).value = static_cast<Id::real_type>(db->last_inserted_rowid);
- }
- else
- this->update(*db);
+ this->insert(*db);
+ if (db->last_inserted_rowid >= 0)
+ std::get<Id>(this->columns).value = static_cast<Id::real_type>(db->last_inserted_rowid);
}
else
- this->insert(*db);
+ this->update(*db);
}
private:
- void insert(DatabaseEngine& db)
+ template <bool Coucou=true>
+ void insert(DatabaseEngine& db, typename std::enable_if<is_one_of<Id, T...> && Coucou>::type* = nullptr)
{
- if constexpr(is_one_of<Id, T...>)
- {
- InsertQuery query(this->table_name, this->columns);
- // Ugly workaround for non portable stuff
- query.body += db.get_returning_id_sql_string(Id::name);
- query.execute(db, this->columns);
- }
- else
- {
- InsertQuery query(this->table_name, this->columns);
- query.execute(db, this->columns);
- }
+ InsertQuery query(this->table_name, this->columns);
+ // Ugly workaround for non portable stuff
+ query.body += db.get_returning_id_sql_string(Id::name);
+ query.execute(db, this->columns);
+ }
+
+ template <bool Coucou=true>
+ void insert(DatabaseEngine& db, typename std::enable_if<!is_one_of<Id, T...> && Coucou>::type* = nullptr)
+ {
+ InsertQuery query(this->table_name, this->columns);
+ query.execute(db, this->columns);
}
void update(DatabaseEngine& db)