void query( const data::RecordId &id,
ProcessResolvable fnc )
{
- sqlite3_connection con((_dbdir + "zypp.db").asString().c_str());
- //con.executenonquery("PRAGMA cache_size=8000;");
- con.executenonquery("BEGIN;");
- sqlite3_command cmd( con, "select " + _fields + " from resolvables where id=:id;");
+ sqlite3_command cmd( _con, "select " + _fields + " from resolvables where id=:id;");
cmd.bind(":id", id);
sqlite3_reader reader = cmd.executereader();
while(reader.read())
{
fnc( id, fromRow(reader) );
}
- con.executenonquery("COMMIT;");
}
ProcessResolvable fnc )
{
- sqlite3_connection con((_dbdir + "zypp.db").asString().c_str());
- //con.executenonquery("PRAGMA cache_size=8000;");
- con.executenonquery("BEGIN;");
- sqlite3_command cmd( con, "select " + _fields + " from resolvables where name like :name;");
+ sqlite3_command cmd( _con, "select " + _fields + " from resolvables where name like :name;");
cmd.bind(":name", string("%") + s + "%");
sqlite3_reader reader = cmd.executereader();
while(reader.read())
{
fnc( reader.getint64(0), fromRow(reader) );
}
- con.executenonquery("COMMIT;");
+ }
+
+ void queryByName( const std::string &name, int wild, ProcessResolvable fnc )
+ {
+ std::string sqlcmd = "select " + _fields + " from resolvables where name ";
+ std::string s( name );
+ if (wild == 0)
+ {
+ sqlcmd += "=";
+ }
+ else
+ {
+ sqlcmd += "like";
+ }
+ sqlite3_command cmd( _con, sqlcmd + " :name;");
+ if (wild & 1)
+ s += "%";
+ if (wild & 2)
+ s = string("%") + s;
+ cmd.bind( ":name", s );
+ sqlite3_reader reader = cmd.executereader();
+ while(reader.read())
+ {
+ fnc( reader.getint64(0), fromRow(reader) );
+ }
}
du.add(entry);
}
}
+
+ std::string queryRepositoryAlias( const data::RecordId &repo_id )
+ {
+ std::string alias;
+ sqlite3_command cmd( _con, "select alias from repositories where id=:id;" );
+ cmd.bind( ":id", repo_id );
+ sqlite3_reader reader = cmd.executereader();
+ while( reader.read() )
+ {
+ alias = reader.getstring( 0 );
+ break;
+ }
+ return alias;
+ }
private:
_pimpl->queryDiskUsage(record_id, du);
}
+std::string ResolvableQuery::queryRepositoryAlias( const data::RecordId &repo_id )
+{
+ return _pimpl->queryRepositoryAlias( repo_id );
+}
+
+void ResolvableQuery::queryByName( const std::string &name, int wild, ProcessResolvable fnc )
+{
+ _pimpl->queryByName( name, wild, fnc );
+}
+
//////////////////////////////////////////////////////////////////////////////
} } // namespace zypp::cache
*/
void queryDiskUsage( const data::RecordId &record_id,
DiskUsage &du );
+
+ /**
+ * \short Query repo alias by id
+ */
+ std::string queryRepositoryAlias( const data::RecordId &repo_id );
+
+ /**
+ * Query by matching name
+ * \param name name to match
+ * \param wild 0 = no wild, 1 = trailing wild, 2 = leading wild, 3 = trailing & leading wild
+ * \param fnc callback to send the data to. (Will be called once per result)
+ */
+ void queryByName( const std::string &name, int wild,
+ ProcessResolvable fnc );
+
private:
/** Implementation. */
class Impl;