Change return type to reference on query-builder
authorsangwan.kwon <sangwan.kwon@samsung.com>
Fri, 30 Nov 2018 04:32:47 +0000 (13:32 +0900)
committerJaemin Ryu <jm77.ryu@samsung.com>
Mon, 11 Feb 2019 04:25:37 +0000 (13:25 +0900)
- Database, Table should be returned by reference for recursive call

Change-Id: Ia97f32e260dc16855ef14a9661d623945c77e505
Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
include/klay/db/query-builder/database.hxx
include/klay/db/query-builder/table.hxx

index 7133f6c0636a37340ce1845e9a0cc772701ee2a7..b5f9250e5c0a36008a119a959b4435534b9f12ce 100644 (file)
@@ -36,16 +36,16 @@ public:
        using Self = Database<Tables...>;
 
        template<typename... ColumnTypes>
-       Self select(ColumnTypes&&... cts);
+       Self& select(ColumnTypes&&... cts);
 
        template<typename Expr>
-       Self where(Expr expr);
+       Self& where(Expr expr);
 
        template<typename Table>
-       Self join(condition::Join type = condition::Join::INNER);
+       Self& join(condition::Join type = condition::Join::INNER);
 
        template<typename Expr>
-       Self on(Expr expr);
+       Self& on(Expr expr);
 
        operator std::string();
 
@@ -125,7 +125,7 @@ Database<Tables...>::Database(const std::string& name, ImplType&& impl)
 
 template<typename... Tables>
 template<typename... ColumnTypes>
-Database<Tables...> Database<Tables...>::select(ColumnTypes&&... cts)
+Database<Tables...>& Database<Tables...>::select(ColumnTypes&&... cts)
 {
        this->cache.clear();
 
@@ -161,7 +161,7 @@ Database<Tables...> Database<Tables...>::select(ColumnTypes&&... cts)
 
 template<typename... Tables>
 template<typename Expr>
-Database<Tables...> Database<Tables...>::where(Expr expr)
+Database<Tables...>& Database<Tables...>::where(Expr expr)
 {
        std::stringstream ss;
        ss << "WHERE " << this->processWhere(expr);
@@ -173,7 +173,7 @@ Database<Tables...> Database<Tables...>::where(Expr expr)
 
 template<typename... Tables>
 template<typename Table>
-Database<Tables...> Database<Tables...>::join(condition::Join type)
+Database<Tables...>& Database<Tables...>::join(condition::Join type)
 {
        std::stringstream ss;
        ss << condition::to_string(type) << " ";
@@ -186,7 +186,7 @@ Database<Tables...> Database<Tables...>::join(condition::Join type)
 
 template<typename... Tables>
 template<typename Expr>
-Database<Tables...> Database<Tables...>::on(Expr expr)
+Database<Tables...>& Database<Tables...>::on(Expr expr)
 {
        std::stringstream ss;
        ss << "ON ";
index 68cfff1606384bb31a1999ee20397db2c422b73e..8ee466db9ef6b2e607f1cf14c0259c99f956f3d9 100644 (file)
@@ -36,24 +36,24 @@ public:
        using TableType = typename ImplType::TableType;
 
        template<typename... ColumnTypes>
-       Self select(ColumnTypes&&... cts);
+       Self& select(ColumnTypes&&... cts);
 
        template<typename Type>
-       Self select(Distinct<Type> distinct);
+       Self& select(Distinct<Type> distinct);
 
-       Self selectAll(void);
+       Self& selectAll(void);
 
        template<typename... ColumnTypes>
-       Self update(ColumnTypes&&... cts);
+       Self& update(ColumnTypes&&... cts);
 
        template<typename... ColumnTypes>
-       Self insert(ColumnTypes&&... cts);
+       Self& insert(ColumnTypes&&... cts);
 
        template<typename... ColumnTypes>
-       Self remove(ColumnTypes&&... cts);
+       Self& remove(ColumnTypes&&... cts);
 
        template<typename Expr>
-       Self where(Expr expr);
+       Self& where(Expr expr);
 
        template<typename That>
        bool compare(const That& that) const noexcept;
@@ -72,7 +72,7 @@ private:
        friend Table<Cs...> make_table(const std::string& name, Cs&& ...columns);
 
        template<typename ColumnTuple>
-       Self selectInternal(ColumnTuple&& ct, bool distinct = false);
+       Self& selectInternal(ColumnTuple&& ct, bool distinct = false);
 
        template<typename Cs>
        std::vector<std::string> getColumnNames(Cs&& tuple);
@@ -122,7 +122,7 @@ Table<Columns...>::Table(const std::string& name, ImplType&& impl)
 
 template<typename... Columns>
 template<typename... ColumnTypes>
-Table<Columns...> Table<Columns...>::select(ColumnTypes&&... cts)
+Table<Columns...>& Table<Columns...>::select(ColumnTypes&&... cts)
 {
        auto columnTuple = std::make_tuple(std::forward<ColumnTypes>(cts)...);
 
@@ -131,14 +131,14 @@ Table<Columns...> Table<Columns...>::select(ColumnTypes&&... cts)
 
 template<typename... Columns>
 template<typename Type>
-Table<Columns...> Table<Columns...>::select(Distinct<Type> distinct)
+Table<Columns...>& Table<Columns...>::select(Distinct<Type> distinct)
 {
        return this->selectInternal(std::move(distinct.value), true);
 }
 
 template<typename... Columns>
 template<typename ColumnTuple>
-Table<Columns...> Table<Columns...>::selectInternal(ColumnTuple&& ct, bool distinct)
+Table<Columns...>& Table<Columns...>::selectInternal(ColumnTuple&& ct, bool distinct)
 {
        this->cache.clear();
 
@@ -166,7 +166,7 @@ Table<Columns...> Table<Columns...>::selectInternal(ColumnTuple&& ct, bool disti
 }
 
 template<typename ...Columns>
-Table<Columns...> Table<Columns...>::selectAll(void)
+Table<Columns...>& Table<Columns...>::selectAll(void)
 {
        this->cache.clear();
 
@@ -180,7 +180,7 @@ Table<Columns...> Table<Columns...>::selectAll(void)
 
 template<typename... Columns>
 template<typename... ColumnTypes>
-Table<Columns...> Table<Columns...>::update(ColumnTypes&&... cts)
+Table<Columns...>& Table<Columns...>::update(ColumnTypes&&... cts)
 {
        this->cache.clear();
 
@@ -206,7 +206,7 @@ Table<Columns...> Table<Columns...>::update(ColumnTypes&&... cts)
 
 template<typename... Columns>
 template<typename... ColumnTypes>
-Table<Columns...> Table<Columns...>::insert(ColumnTypes&&... cts)
+Table<Columns...>& Table<Columns...>::insert(ColumnTypes&&... cts)
 {
        this->cache.clear();
 
@@ -240,7 +240,7 @@ Table<Columns...> Table<Columns...>::insert(ColumnTypes&&... cts)
 
 template<typename... Columns>
 template<typename... ColumnTypes>
-Table<Columns...> Table<Columns...>::remove(ColumnTypes&&... cts)
+Table<Columns...>& Table<Columns...>::remove(ColumnTypes&&... cts)
 {
        this->cache.clear();
 
@@ -257,7 +257,7 @@ Table<Columns...> Table<Columns...>::remove(ColumnTypes&&... cts)
 
 template<typename... Columns>
 template<typename Expr>
-Table<Columns...> Table<Columns...>::where(Expr expr)
+Table<Columns...>& Table<Columns...>::where(Expr expr)
 {
        std::stringstream ss;
        ss << "WHERE " << this->processWhere(expr);