diff options
author | louiz’ <louiz@louiz.org> | 2018-03-17 17:33:29 +0100 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2018-03-17 17:34:00 +0100 |
commit | 8c483aa805eb3da25be685ee875555662cab1038 (patch) | |
tree | 6d2f5f9d60f938b05ddf47bb6b56e51bcd42472f /src/database/row.hpp | |
parent | f8a1048ffeec6322c1e64a0eda7636a977669898 (diff) | |
download | biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.gz biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.bz2 biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.xz biboumi-8c483aa805eb3da25be685ee875555662cab1038.zip |
Re-apply "Use if constexpr to make things a lot more readable"c++17
This reverts commit d0e3c71b91f1a1c1780158789fd42b8ac7209495.
Diffstat (limited to 'src/database/row.hpp')
-rw-r--r-- | src/database/row.hpp | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/src/database/row.hpp b/src/database/row.hpp index 3703ff7..194a9c5 100644 --- a/src/database/row.hpp +++ b/src/database/row.hpp @@ -29,41 +29,39 @@ struct Row return col.value; } - template <bool Coucou=true> - void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<!is_one_of<Id, T...> && Coucou>::type* = nullptr) + void save(std::unique_ptr<DatabaseEngine>& db) { - 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) + if constexpr(is_one_of<Id, T...>) { - this->insert(*db); - if (db->last_inserted_rowid >= 0) - std::get<Id>(this->columns).value = static_cast<Id::real_type>(db->last_inserted_rowid); + 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); } else - this->update(*db); + this->insert(*db); } private: - 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); - // 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) + void insert(DatabaseEngine& db) { - InsertQuery query(this->table_name, this->columns); - query.execute(db, this->columns); + 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); + } } void update(DatabaseEngine& db) |