#include <samples_postgres_service/sql_queries.hpp>
namespace samples_postgres_service::pg {
public:
static constexpr std::string_view kName = "handler-key-value";
const override;
private:
std::string DeleteValue(std::string_view key) const;
};
}
namespace samples_postgres_service::pg {
: HttpHandlerBase(config, context),
pg_cluster_(context.FindComponent<
components::Postgres>(
"key-value-database").GetCluster()) {
pg_cluster_->Execute(ClusterHostType::kMaster, sql::kCreateTable);
}
const {
const auto& key = request.
GetArg(
"key");
if (key.empty()) {
}
switch (request.
GetMethod()) {
case server::http::HttpMethod::kGet:
return GetValue(key, request);
case server::http::HttpMethod::kPost:
return PostValue(key, request);
case server::http::HttpMethod::kDelete:
return DeleteValue(key);
default:
fmt::format("Unsupported method {}", request.GetMethod())});
}
}
"SELECT value FROM key_value_table WHERE key=$1",
};
return {};
}
}
"INSERT INTO key_value_table (key, value) "
"VALUES ($1, $2) "
"ON CONFLICT DO NOTHING",
};
const auto& value = request.
GetArg(
"value");
auto res = transaction.
Execute(kInsertValue, key, value);
if (res.
RowsAffected()) {
return std::string{value};
}
res = transaction.Execute(kSelectValue, key);
if (result != value) {
}
}
std::string KeyValue::DeleteValue(std::string_view key) const {
auto res = pg_cluster_->Execute(
);
return std::to_string(res.RowsAffected());
}
}
int main(int argc, char* argv[]) {
.
Append<samples_postgres_service::pg::KeyValue>()
.Append<components::Postgres>("key-value-database")
.Append<clients::dns::Component>();
}