Lightweight 0.20260303.0
Loading...
Searching...
No Matches
Delete.hpp
1// SPDX-License-Identifier: Apache-2.0
2
3#pragma once
4
5#include "Core.hpp"
6
7#include <string>
8
9namespace Lightweight
10{
11
12/// @brief Query builder for building DELETE FROM ... queries.
13///
14/// @ingroup QueryBuilder
15class LIGHTWEIGHT_API SqlDeleteQueryBuilder final: public SqlWhereClauseBuilder<SqlDeleteQueryBuilder>
16{
17 public:
18 /// Constructs a DELETE query builder.
19 explicit SqlDeleteQueryBuilder(SqlQueryFormatter const& formatter, std::string table, std::string tableAlias) noexcept:
21 m_formatter { formatter }
22 {
23 m_searchCondition.tableName = std::move(table);
24 m_searchCondition.tableAlias = std::move(tableAlias);
25 }
26
27 /// Returns the search condition for the query.
28 SqlSearchCondition& SearchCondition() noexcept // NOLINT(bugprone-derived-method-shadowing-base-method)
29 {
30 return m_searchCondition;
31 }
32
33 // clang-format off
34 /// Returns the SQL query formatter.
35 [[nodiscard]] SqlQueryFormatter const& Formatter() const noexcept // NOLINT(bugprone-derived-method-shadowing-base-method)
36 {
37 // clang-format on
38 return m_formatter;
39 }
40
41 /// Finalizes building the query as DELETE FROM ... query.
42 [[nodiscard]] std::string ToSql() const;
43
44 private:
45 SqlQueryFormatter const& m_formatter;
46 SqlSearchCondition m_searchCondition;
47};
48
49inline LIGHTWEIGHT_FORCE_INLINE std::string SqlDeleteQueryBuilder::ToSql() const
50{
51 return m_formatter.Delete(m_searchCondition.tableName,
52 m_searchCondition.tableAlias,
53 m_searchCondition.tableJoins,
54 m_searchCondition.condition);
55}
56
57} // namespace Lightweight
Query builder for building DELETE FROM ... queries.
Definition Delete.hpp:16
SqlSearchCondition & SearchCondition() noexcept
Returns the search condition for the query.
Definition Delete.hpp:28
SqlQueryFormatter const & Formatter() const noexcept
Returns the SQL query formatter.
Definition Delete.hpp:35
SqlDeleteQueryBuilder(SqlQueryFormatter const &formatter, std::string table, std::string tableAlias) noexcept
Constructs a DELETE query builder.
Definition Delete.hpp:19
std::string ToSql() const
Finalizes building the query as DELETE FROM ... query.
Definition Delete.hpp:49
API to format SQL queries for different SQL dialects.
virtual std::string Delete(std::string_view fromTable, std::string_view fromTableAlias, std::string_view tableJoins, std::string_view whereCondition) const =0
Constructs an SQL DELETE query.
LIGHTWEIGHT_API std::vector< std::string > ToSql(SqlQueryFormatter const &formatter, SqlMigrationPlanElement const &element)