X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/b3bf247163c78d1bac74702459a4d53700280ebe..90b793eb07dc190eeb1144a1da079de760d17c36:/projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp diff --git a/projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp b/projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp index 138a9ed9..58b57139 100644 --- a/projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp +++ b/projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp @@ -26,10 +26,14 @@ * */ -#include - #include "firebird_store.h" + #include "stg/ibpp.h" +#include "stg/tariff.h" +#include "stg/tariff_conf.h" +#include "stg/common.h" + +#include namespace { @@ -46,14 +50,13 @@ STG_LOCKER lock(&mutex); IBPP::Transaction tr = IBPP::TransactionFactory(db, IBPP::amRead, til, tlr); IBPP::Statement st = IBPP::StatementFactory(db, tr); -std::string name; - try { tr->Start(); st->Execute("select name from tb_tariffs"); while (st->Fetch()) { + std::string name; st->Get(1, name); tariffsList->push_back(name); } @@ -126,7 +129,7 @@ catch (IBPP::Exception & ex) return 0; } //----------------------------------------------------------------------------- -int FIREBIRD_STORE::SaveTariff(const TARIFF_DATA & td, +int FIREBIRD_STORE::SaveTariff(const STG::TariffData & td, const std::string & tariffName) const { STG_LOCKER lock(&mutex); @@ -150,36 +153,44 @@ try int32_t id; st->Get(1, id); st->Close(); + + std::string query = "update tb_tariffs set \ + fee = ?, \ + free = ?, \ + passive_cost = ?, \ + traff_type = ?"; + + if (schemaVersion > 0) + query += ", period = ?"; + if (schemaVersion > 1) + query += ", change_policy = ?, \ + change_policy_timeout = ?"; + + query += " where pk_tariff = ?"; + + unsigned num = 5; + st->Prepare(query); + st->Set(1, td.tariffConf.fee); + st->Set(2, td.tariffConf.free); + st->Set(3, td.tariffConf.passiveCost); + st->Set(4, td.tariffConf.traffType); + if (schemaVersion > 0) { - st->Prepare("update tb_tariffs set \ - fee = ?, \ - free = ?, \ - passive_cost = ?, \ - traff_type = ?, \ - period = ? \ - where pk_tariff = ?"); - st->Set(1, td.tariffConf.fee); - st->Set(2, td.tariffConf.free); - st->Set(3, td.tariffConf.passiveCost); - st->Set(4, td.tariffConf.traffType); - st->Set(5, TARIFF::PeriodToString(td.tariffConf.period)); - st->Set(6, id); + st->Set(5, STG::Tariff::toString(td.tariffConf.period)); + ++num; } - else + + if (schemaVersion > 1) { - st->Prepare("update tb_tariffs set \ - fee = ?, \ - free = ?, \ - passive_cost = ?, \ - traff_type = ? \ - where pk_tariff = ?"); - st->Set(1, td.tariffConf.fee); - st->Set(2, td.tariffConf.free); - st->Set(3, td.tariffConf.passiveCost); - st->Set(4, td.tariffConf.traffType); - st->Set(5, id); + st->Set(6, STG::Tariff::toString(td.tariffConf.changePolicy)); + IBPP::Timestamp policyTimeout; + time_t2ts(td.tariffConf.changePolicyTimeout, &policyTimeout); + st->Set(7, policyTimeout); + num += 2; } + + st->Set(num, id); st->Execute(); st->Close(); @@ -253,7 +264,7 @@ catch (IBPP::Exception & ex) return 0; } //----------------------------------------------------------------------------- -int FIREBIRD_STORE::RestoreTariff(TARIFF_DATA * td, +int FIREBIRD_STORE::RestoreTariff(STG::TariffData * td, const std::string & tariffName) const { STG_LOCKER lock(&mutex); @@ -282,9 +293,14 @@ try st->Get(3, td->tariffConf.fee); st->Get(4, td->tariffConf.free); st->Get(5, td->tariffConf.passiveCost); - td->tariffConf.traffType = TARIFF::IntToTraffType(Get(st, 6)); + td->tariffConf.traffType = STG::Tariff::fromInt(Get(st, 6)); if (schemaVersion > 0) - td->tariffConf.period = TARIFF::StringToPeriod(Get(st, 7)); + td->tariffConf.period = STG::Tariff::parsePeriod(Get(st, 7)); + if (schemaVersion > 1) + { + td->tariffConf.changePolicy = STG::Tariff::parseChangePolicy(Get(st, 8)); + td->tariffConf.changePolicyTimeout = ts2time_t(Get(st, 9)); + } st->Close(); st->Prepare("select * from tb_tariffs_params where fk_tariff = ?"); st->Set(1, id);