Lightweight 0.20250627.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
9/// @brief Query builder for building DELETE FROM ... queries.
10///
11/// @ingroup QueryBuilder
12class LIGHTWEIGHT_API SqlDeleteQueryBuilder final: public SqlWhereClauseBuilder<SqlDeleteQueryBuilder>
13{
14 public:
15 explicit SqlDeleteQueryBuilder(SqlQueryFormatter const& formatter, std::string table, std::string tableAlias) noexcept:
16 SqlWhereClauseBuilder<SqlDeleteQueryBuilder> {},
17 m_formatter { formatter }
18 {
19 m_searchCondition.tableName = std::move(table);
20 m_searchCondition.tableAlias = std::move(tableAlias);
21 }
22
23 SqlSearchCondition& SearchCondition() noexcept
24 {
25 return m_searchCondition;
26 }
27
28 [[nodiscard]] SqlQueryFormatter const& Formatter() const noexcept
29 {
30 return m_formatter;
31 }
32
33 // Finalizes building the query as DELETE FROM ... query.
34 [[nodiscard]] std::string ToSql() const;
35
36 private:
37 SqlQueryFormatter const& m_formatter;
38 SqlSearchCondition m_searchCondition;
39};
40
41inline LIGHTWEIGHT_FORCE_INLINE std::string SqlDeleteQueryBuilder::ToSql() const
42{
43 return m_formatter.Delete(m_searchCondition.tableName,
44 m_searchCondition.tableAlias,
45 m_searchCondition.tableJoins,
46 m_searchCondition.condition);
47}
Query builder for building DELETE FROM ... queries.
Definition Delete.hpp:13
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)