35 [[nodiscard]]
virtual std::string_view
BooleanLiteral(
bool value)
const noexcept = 0;
38 [[nodiscard]]
virtual std::string_view
DateFunction() const noexcept = 0;
41 [[nodiscard]] virtual std::
string StringLiteral(std::string_view value) const noexcept = 0;
44 [[nodiscard]] virtual std::
string StringLiteral(
char value) const noexcept = 0;
47 [[nodiscard]] virtual std::
string BinaryLiteral(std::span<uint8_t const> data) const = 0;
53 [[nodiscard]] virtual std::
string QualifiedTableName(std::string_view schema, std::string_view table) const = 0;
62 [[nodiscard]] virtual std::
string Insert(std::string_view intoTable,
63 std::string_view fields,
64 std::string_view values) const = 0;
67 [[nodiscard]] virtual std::
string Insert(std::string_view schema,
68 std::string_view intoTable,
69 std::string_view fields,
70 std::string_view values) const = 0;
73 [[nodiscard]] virtual std::
string QueryLastInsertId(std::string_view tableName) const = 0;
76 [[nodiscard]] virtual std::
string SelectAll(
bool distinct,
77 std::string_view fields,
78 std::string_view fromTable,
79 std::string_view fromTableAlias,
80 std::string_view tableJoins,
81 std::string_view whereCondition,
82 std::string_view orderBy,
83 std::string_view groupBy) const = 0;
89 [[nodiscard]] virtual std::
string SelectFirst(
bool distinct,
90 std::string_view fields,
91 std::string_view fromTable,
92 std::string_view fromTableAlias,
93 std::string_view tableJoins,
94 std::string_view whereCondition,
95 std::string_view orderBy,
96 std::string_view groupBy,
97 size_t count) const = 0;
100 [[nodiscard]] virtual std::
string SelectRange(
bool distinct,
101 std::string_view fields,
102 std::string_view fromTable,
103 std::string_view fromTableAlias,
104 std::string_view tableJoins,
105 std::string_view whereCondition,
106 std::string_view orderBy,
107 std::string_view groupBy,
109 std::
size_t limit) const = 0;
115 [[nodiscard]] virtual std::
string SelectCount(
bool distinct,
116 std::string_view fromTable,
117 std::string_view fromTableAlias,
118 std::string_view tableJoins,
119 std::string_view whereCondition,
120 std::string_view groupBy) const = 0;
123 [[nodiscard]] virtual std::
string Update(std::string_view table,
124 std::string_view tableAlias,
125 std::string_view setFields,
126 std::string_view whereCondition) const = 0;
129 [[nodiscard]] virtual std::
string Delete(std::string_view fromTable,
130 std::string_view fromTableAlias,
131 std::string_view tableJoins,
132 std::string_view whereCondition) const = 0;
138 [[nodiscard]] virtual std::
string ColumnType(SqlColumnTypeDefinition const& type) const = 0;
147 [[nodiscard]] virtual
StringList CreateTable(std::string_view schema,
148 std::string_view tableName,
151 bool ifNotExists = false) const = 0;
154 [[nodiscard]] virtual
StringList AlterTable(std::string_view schema,
155 std::string_view tableName,
164 [[nodiscard]] virtual
StringList DropTable(std::string_view schema,
165 std::string_view const& tableName,
166 bool ifExists = false,
167 bool cascade = false) const = 0;
175 [[nodiscard]] virtual std::
string QueryServerVersion() const = 0;
196 [[nodiscard]] virtual
bool RequiresTableRebuildForSchemaChange() const noexcept
226 template <
typename Range>
229 std::string name {
"FK_" };
230 name.append(tableName);
231 for (
auto const& col: columns)
std::variant< SqlAlterTableCommands::RenameTable, SqlAlterTableCommands::AddColumn, SqlAlterTableCommands::AddColumnIfNotExists, SqlAlterTableCommands::AlterColumn, SqlAlterTableCommands::AddIndex, SqlAlterTableCommands::RenameColumn, SqlAlterTableCommands::DropColumn, SqlAlterTableCommands::DropColumnIfExists, SqlAlterTableCommands::DropIndex, SqlAlterTableCommands::DropIndexIfExists, SqlAlterTableCommands::AddForeignKey, SqlAlterTableCommands::AddCompositeForeignKey, SqlAlterTableCommands::DropForeignKey > SqlAlterTableCommand
Represents a single SQL ALTER TABLE command.