Я пытаюсь реализовать функцию поиска с использованием c ++ и libpqxx.
Но у меня есть следующая проблема:
Пользователь может указать 4 различных шаблона поиска (каждый из них необязательный):
- от даты
- до даты
- тип документа
- идентификатор документа
Каждый из них не является обязательным. Поэтому, если я хочу использовать подготовленные утверждения, мне нужно 2 ^ 4 = 16 различных подготовленных утверждений. Ну, это возможно, но я хочу этого избежать.
Вот в качестве примера, как выглядит подготовленный оператор в libpqxx:
_connection->prepare("ExampleStmnt", "SELECT * FROM foo WHERE title=$1 AND id=$2 AND date=$3")
("text", pqxx::prepare::treat_string)
("smallint", pqxx::prepare::treat_direct)
("timestamp", pqxx::prepare::treat_direct);
Поэтому я также понятия не имею, как бы я собрал такое подготовленное утверждение.
Есть ли какой-нибудь другой "хороший" способ, о котором я не думал?