Poco::ActiveRecord

template < typename ActRec >

class Query

Library: ActiveRecord
Package: ActiveRecord
Header: Poco/ActiveRecord/Query.h

Description

A Query is used to retrieve ActiveRecord objects from a table.

As the name implies, Query supports selection of database rows based on a WHERE clause (see where()).

Furthermore, results can be sorted (see orderBy()) and filtered based on a lambda expression (see filter()).

Optional result paging is controlled by offset() and limit(). The total number of results is available via totalResults().

Member Summary

Member Functions: bind, execute, filter, fixPlaceholders, limit, offset, operator =, orderBy, reset, select, totalResults, where

Constructors

Query

Query() = delete;

Query inline

explicit Query(
    Context::Ptr pContext
);

Query

Query(
    const Query & param6
) = delete;

Destructor

~Query

~Query() = default;

Member Functions

bind inline

template < typename T > Query & bind(
    const T & value
);

Bind a value to a placeholder in the where() clause.

For each placeholder (?) in the where() clause, a value must be bound with bind() before the query can be executed.

execute inline

std::vector < typename ActRec::Ptr > execute();

Execute the query and return a vector with the results.

filter inline

Query & filter(
    const std::function < bool (const ActRec &)> & fn
);

Specify a lambda expression for filtering results.

The lamda takes a const reference to the ActiveRecord (template argument) as parameter and must return a bool. If the lambda returns true, the respective ActiveRecord is included in the query result.

filter inline

Query & filter(
    std::function < bool (const ActRec &)> && fn
);

limit inline

Query & limit(
    std::size_t limit
);

Specify the maximum number of rows to return for paging.

offset inline

Query & offset(
    std::size_t offset
);

Specify the index or offset of the first row to return for paging.

operator =

Query & operator = (
    const Query & param7
) = delete;

orderBy inline

Query & orderBy(
    const std::string & order
);

Specify a column name and optional direction (ASC, DESC) to order the result by.

reset inline

void reset();

Resets the query so that it can be executed again, with potentially different parameters.

totalResults inline

std::size_t totalResults() const;

In case of a paged query, returns the total number of results that would be returned without paging.

where inline

Query & where(
    const std::string & clause
);

Specify a WHERE clause (without the WHERE keyword) to select only rows matching the clause.

Placeholders (?) can be used in the clause. For each placeholder, an actual value must be bound before the query is executed (see bind()).

fixPlaceholders protected inline

std::string fixPlaceholders(
    const std::string & clause
);

select protected inline

void select();