34 std::cout <<
"=== query_builder_usage example ===" << std::endl;
39 std::cout <<
"\n--- SELECT ---" << std::endl;
43 auto query = builder.
select({
"id",
"name",
"email"})
45 .
where(
"age",
">=", int64_t{18})
46 .where(
"is_active",
"=",
true)
52 std::cout <<
"SELECT query:\n " << query << std::endl;
58 std::cout <<
"\n--- INSERT ---" << std::endl;
62 std::map<std::string, core::database_value> row;
63 row[
"name"] = std::string(
"Alice");
64 row[
"email"] = std::string(
"alice@example.com");
65 row[
"age"] = int64_t{30};
66 row[
"is_active"] =
true;
70 std::cout <<
"INSERT query:\n " << query << std::endl;
76 std::cout <<
"\n--- Batch INSERT ---" << std::endl;
80 std::vector<std::map<std::string, core::database_value>> rows;
82 std::map<std::string, core::database_value> row1;
83 row1[
"name"] = std::string(
"Bob");
84 row1[
"email"] = std::string(
"bob@example.com");
85 row1[
"age"] = int64_t{25};
88 std::map<std::string, core::database_value> row2;
89 row2[
"name"] = std::string(
"Carol");
90 row2[
"email"] = std::string(
"carol@example.com");
91 row2[
"age"] = int64_t{28};
96 std::cout <<
"Batch INSERT query:\n " << query << std::endl;
102 std::cout <<
"\n--- UPDATE ---" << std::endl;
106 auto query = builder.
update(
"users")
107 .
set(
"email", std::string(
"newalice@example.com"))
108 .
set(
"age", int64_t{31})
109 .where(
"name",
"=", std::string(
"Alice"))
112 std::cout <<
"UPDATE query:\n " << query << std::endl;
118 std::cout <<
"\n--- DELETE ---" << std::endl;
123 .
where(
"is_active",
"=",
false)
126 std::cout <<
"DELETE query:\n " << query << std::endl;
132 std::cout <<
"\n--- JOIN ---" << std::endl;
136 auto query = builder.
select({
"u.name",
"o.total"})
138 .
join(
"orders o",
"u.id = o.user_id", join_type::inner)
139 .
where(
"o.total",
">", 100.0)
140 .
order_by(
"o.total", sort_order::desc)
143 std::cout <<
"JOIN query:\n " << query << std::endl;
149 std::cout <<
"\n--- GROUP BY ---" << std::endl;
153 auto query = builder.
select({
"department",
"COUNT(*) AS cnt"})
160 std::cout <<
"GROUP BY query:\n " << query << std::endl;
166 std::cout <<
"\n--- Compound conditions ---" << std::endl;
175 auto combined = age_check && active_check;
179 std::cout <<
"Compound condition query:\n " << query << std::endl;
185 std::cout <<
"\n--- Dialect switch ---" << std::endl;
189 auto pg_query = builder.
select({
"id",
"name"})
191 .
where(
"id",
"=", int64_t{1})
193 std::cout <<
"PostgreSQL: " << pg_query << std::endl;
199 auto sqlite_query = builder.
select({
"id",
"name"})
201 .
where(
"id",
"=", int64_t{1})
203 std::cout <<
"SQLite: " << sqlite_query << std::endl;
206 std::cout <<
"\n=== query_builder_usage example completed ===" << std::endl;
Universal query builder that adapts to different database types.
query_builder & select(const std::vector< std::string > &columns)
query_builder & for_database(database_types db_type)
std::string build() const
query_builder & group_by(const std::vector< std::string > &columns)
query_builder & where(const std::string &field, const std::string &op, const core::database_value &value)
query_builder & limit(size_t count)
query_builder & update(const std::string &table)
query_builder & having(const std::string &condition)
query_builder & order_by(const std::string &column, sort_order order=sort_order::asc)
query_builder & offset(size_t count)
query_builder & set(const std::string &field, const core::database_value &value)
query_builder & delete_from(const std::string &table)
query_builder & join(const std::string &table, const std::string &condition, join_type type=join_type::inner)
query_builder & insert_into(const std::string &table)
query_builder & values(const std::map< std::string, core::database_value > &data)
Represents a WHERE condition in a query.
Defines the enumeration of supported database types.