/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2010, Tomasz Sowa * All rights reserved. * */ #include "tdb.h" #include "core/log.h" namespace Ticket { Error TDb::GetTicket(long dir_id, Ticket & ticket) { PGresult * r = 0; Error status = WINIX_ERR_OK; ticket.Clear(); try { query.Clear(); query << R("select dir_id, param, value from plugins.ticket " "where ticket.dir_id=") << dir_id << R(";"); r = AssertQuery(query); AssertResult(r, PGRES_TUPLES_OK); int rows = Rows(r); if( rows == 0 ) throw Error(WINIX_ERR_NO_TICKET); Ticket::TicketParam par; ticket.dir_id = dir_id; int cparam = AssertColumn(r, "param"); int cvalue = AssertColumn(r, "value"); for(int i=0 ; i & dir_id_tab, std::vector & ticket_tab) { PGresult * r = 0; Error status = WINIX_ERR_OK; ticket_tab.clear(); if( dir_id_tab.empty() ) return status; try { query.Clear(); CreateIdList(dir_id_tab, dir_list); query << R("select dir_id, param, value from plugins.ticket " "where ticket.dir_id in ") << R(dir_list) << R(" order by dir_id;"); // !! moze dodac operator <<(std::vector(long)) do query? r = AssertQuery(query); AssertResult(r, PGRES_TUPLES_OK); int rows = Rows(r); Ticket::TicketParam par; int cdir_id = AssertColumn(r, "dir_id"); int cparam = AssertColumn(r, "param"); int cvalue = AssertColumn(r, "value"); long last_dir_id = -1; for(int i=0 ; i 0 ) log << log2 << "Db: deleted " << rows << " rows from plugins.ticket" << logend; } catch(const Error & e) { status = e; } ClearResult(r); return status; } } // namespace