AnCH Framework 0.1
Another C++ Hack Framework
 
Loading...
Searching...
No Matches
fromBuilder.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2012 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include <string>
23
24#include "sql/builder/selectBuilderPart.hpp"
25
26
27namespace anch {
28 namespace sql {
29
30 class SelectBuilder;
31 class SQLQuery;
32 class ClausesBuilder;
33
42
43 // Constructors +
44 public:
48 FromBuilder() = delete;
49
56 FromBuilder(anch::sql::SelectBuilder& select, const std::string& table);
57
65
73
81 FromBuilder(anch::sql::SelectBuilder& select, const anch::sql::SelectBuilder& subquery, const std::string& alias);
82
90 FromBuilder(anch::sql::SelectBuilder& select, const anch::sql::SQLQuery& subquery, const std::string& alias);
91 // Constructors -
92
93 // Destructor +
94 public:
98 virtual ~FromBuilder();
99 // Destructor -
100
101 // SQL commands +
102 public:
110 FromBuilder& selfJoin(const std::string& table);
111
120 FromBuilder& selfJoin(const anch::sql::SQLQuery& subquery, const std::string& alias);
121
130 FromBuilder& selfJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias);
131
140 FromBuilder& innerJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
141
151 FromBuilder& innerJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
152
162 FromBuilder& innerJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
163
172 inline FromBuilder& join(const std::string& table, const anch::sql::ClausesBuilder& clauses);
173
183 inline FromBuilder& join(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
184
194 inline FromBuilder& join(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
195
204 FromBuilder& leftOuterJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
205
215 FromBuilder& leftOuterJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
216
226 FromBuilder& leftOuterJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
227
236 inline FromBuilder& leftJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
237
247 inline FromBuilder& leftJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
248
258 inline FromBuilder& leftJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
259
269
279 FromBuilder& rightOuterJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
280
290 FromBuilder& rightOuterJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
291
300 inline FromBuilder& rightJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
301
311 inline FromBuilder& rightJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
312
322 inline FromBuilder& rightJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
323
332 FromBuilder& fullOuterJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
333
343 FromBuilder& fullOuterJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
344
354 FromBuilder& fullOuterJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
355
364 inline FromBuilder& fullJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses);
365
375 inline FromBuilder& fullJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
376
386 inline FromBuilder& fullJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
387
395 FromBuilder& naturalJoin(const std::string& table);
396
405 FromBuilder& naturalJoin(const anch::sql::SQLQuery& subquery, const std::string& alias);
406
415 FromBuilder& naturalJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias);
416
424 FromBuilder& crossJoin(const std::string& table);
425
434 FromBuilder& crossJoin(const anch::sql::SQLQuery& subquery, const std::string& alias);
435
444 FromBuilder& crossJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias);
445
454 // SQL commands -
455
456 // Methods +
457 private:
465 void addJoin(const std::string& join, const anch::sql::SelectBuilder& subquery, const std::string& alias);
466
474 void addJoin(const std::string& join, const anch::sql::SQLQuery& subquery, const std::string& alias);
475
483 void addJoin(const std::string& join, const std::string& table, const anch::sql::ClausesBuilder& clauses);
484
493 void addJoin(const std::string& join, const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
494
503 void addJoin(const std::string& join, const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses);
504 // Methods -
505
506 };
507
508
510 FromBuilder::join(const std::string& table, const anch::sql::ClausesBuilder& clauses) {
511 return innerJoin(table, clauses);
512 }
513
515 FromBuilder::join(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
516 return innerJoin(subquery, alias, clauses);
517 }
518
520 FromBuilder::join(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
521 return innerJoin(subquery, alias, clauses);
522 }
523
525 FromBuilder::leftJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses) {
526 return leftOuterJoin(table, clauses);
527 }
528
530 FromBuilder::leftJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
531 return leftOuterJoin(subquery, alias, clauses);
532 }
533
535 FromBuilder::leftJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
536 return leftOuterJoin(subquery, alias, clauses);
537 }
538
540 FromBuilder::rightJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses) {
541 return rightOuterJoin(table, clauses);
542 }
543
545 FromBuilder::rightJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
546 return rightOuterJoin(subquery, alias, clauses);
547 }
548
550 FromBuilder::rightJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
551 return rightOuterJoin(subquery, alias, clauses);
552 }
553
555 FromBuilder::fullJoin(const std::string& table, const anch::sql::ClausesBuilder& clauses) {
556 return fullOuterJoin(table, clauses);
557 }
558
560 FromBuilder::fullJoin(const anch::sql::SQLQuery& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
561 return fullOuterJoin(subquery, alias, clauses);
562 }
563
565 FromBuilder::fullJoin(const anch::sql::SelectBuilder& subquery, const std::string& alias, const anch::sql::ClausesBuilder& clauses) {
566 return fullOuterJoin(subquery, alias, clauses);
567 }
568
569 } // sql
570} // anch
SQL clauses builder.
Definition clausesBuilder.hpp:73
Definition fromBuilder.hpp:41
FromBuilder & leftOuterJoin(const anch::sql::SQLQuery &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder(anch::sql::SelectBuilder &select, const anch::sql::SQLQuery &subquery)
FromBuilder & innerJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder(anch::sql::SelectBuilder &select, const anch::sql::SelectBuilder &subquery, const std::string &alias)
FromBuilder & leftOuterJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder & innerJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
FromBuilder & innerJoin(const anch::sql::SQLQuery &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder & join(const std::string &table, const anch::sql::ClausesBuilder &clauses)
Definition fromBuilder.hpp:510
FromBuilder & naturalJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias)
FromBuilder & selfJoin(const anch::sql::SQLQuery &subquery, const std::string &alias)
FromBuilder & selfJoin(const std::string &table)
FromBuilder & leftJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
Definition fromBuilder.hpp:525
FromBuilder & fullOuterJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
FromBuilder & naturalJoin(const std::string &table)
FromBuilder(anch::sql::SelectBuilder &select, const std::string &table)
FromBuilder & fullOuterJoin(const anch::sql::SQLQuery &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder & fullJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
Definition fromBuilder.hpp:555
FromBuilder & rightOuterJoin(const anch::sql::SQLQuery &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder & crossJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias)
FromBuilder & rightJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
Definition fromBuilder.hpp:540
FromBuilder & rightOuterJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
FromBuilder & leftOuterJoin(const std::string &table, const anch::sql::ClausesBuilder &clauses)
FromBuilder(anch::sql::SelectBuilder &select, const anch::sql::SQLQuery &subquery, const std::string &alias)
FromBuilder(anch::sql::SelectBuilder &select, const anch::sql::SelectBuilder &subquery)
FromBuilder & selfJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias)
FromBuilder & crossJoin(const anch::sql::SQLQuery &subquery, const std::string &alias)
FromBuilder & crossJoin(const std::string &table)
FromBuilder & rightOuterJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
FromBuilder & naturalJoin(const anch::sql::SQLQuery &subquery, const std::string &alias)
FromBuilder & fullOuterJoin(const anch::sql::SelectBuilder &subquery, const std::string &alias, const anch::sql::ClausesBuilder &clauses)
anch::sql::SelectBuilder & where(const anch::sql::ClausesBuilder &clauses)
SQL query.
Definition sqlQuery.hpp:42
Dynamic SQL select request builder.
Definition selectBuilder.hpp:47
SQL select query part builder.
Definition selectBuilderPart.hpp:44
SQL namespace.
Definition clauses.hpp:26
ClausesBuilder clauses()
SelectBuilder select()
AnCH framework base namespace.
Definition app.hpp:28