|
Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
|
Abstract base class for database-specific SQL dialects. More...
#include <sql_dialect.h>


Public Member Functions | |
| virtual | ~sql_dialect ()=default |
| virtual std::string | placeholder (int index) const =0 |
| Generate parameter placeholder. | |
| virtual std::string | quote_identifier (std::string_view name) const =0 |
| Quote an identifier (table or column name) | |
| virtual std::string | escape_string (std::string_view str) const =0 |
| Escape a string value for safe SQL inclusion. | |
| virtual std::string | returning_clause (std::string_view column="") const =0 |
| Generate RETURNING clause for INSERT/UPDATE. | |
| virtual std::string | upsert_clause (const std::vector< std::string > &conflict_columns, const std::vector< std::string > &update_columns) const =0 |
| Generate UPSERT (INSERT OR UPDATE) clause. | |
| virtual std::string | limit_clause (size_t limit, size_t offset) const =0 |
| Generate LIMIT clause. | |
| virtual std::string | auto_increment () const =0 |
| Get auto-increment column definition. | |
| virtual std::string | current_timestamp () const =0 |
| Get current timestamp function. | |
| virtual std::string | concat_operator () const =0 |
| Get string concatenation operator. | |
| virtual bool | supports_feature (const std::string &feature) const =0 |
| Check if database supports specific feature. | |
Static Public Member Functions | |
| static std::unique_ptr< sql_dialect > | create (database_types type) |
| Factory method to create appropriate dialect. | |
Abstract base class for database-specific SQL dialects.
Strategy Pattern:
Responsibilities:
Definition at line 36 of file sql_dialect.h.
|
virtualdefault |
|
pure virtual |
Get auto-increment column definition.
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Get string concatenation operator.
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
static |
Factory method to create appropriate dialect.
| type | Database type |
Definition at line 11 of file sql_dialect.cpp.
References database::postgres, and database::sqlite.
Referenced by database::query::tests::CrossDialectTest::SetUp(), database::query::tests::PostgreSQLDialectTest::SetUp(), database::query::tests::SQLiteDialectTest::SetUp(), database::query::tests::TEST(), database::query::tests::TEST(), and database::query::tests::TEST().

|
pure virtual |
Get current timestamp function.
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Escape a string value for safe SQL inclusion.
| str | The string to escape |
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Generate LIMIT clause.
| limit | Maximum number of rows |
| offset | Number of rows to skip |
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Generate parameter placeholder.
| index | 1-based parameter index |
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Quote an identifier (table or column name)
| name | The identifier to quote |
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Generate RETURNING clause for INSERT/UPDATE.
| column | The column to return (empty for all) |
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Check if database supports specific feature.
| feature | Feature name |
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.
|
pure virtual |
Generate UPSERT (INSERT OR UPDATE) clause.
| conflict_columns | Columns that define conflict |
| update_columns | Columns to update on conflict |
Examples:
Implemented in database::query::postgresql_dialect, and database::query::sqlite_dialect.