]> git.stg.codes - stg.git/commitdiff
Merge branch 'new-daily-fee'
authorMaxim Mamontov <faust.madf@gmail.com>
Mon, 6 Jan 2014 15:51:09 +0000 (17:51 +0200)
committerMaxim Mamontov <faust.madf@gmail.com>
Mon, 6 Jan 2014 15:51:09 +0000 (17:51 +0200)
Conflicts:
include/stg/tariff_conf.h
projects/stargazer/plugins/store/firebird/Makefile
projects/stargazer/plugins/store/firebird/firebird_store.cpp
projects/stargazer/plugins/store/firebird/firebird_store.h
projects/stargazer/plugins/store/mysql/Makefile
projects/stargazer/plugins/store/mysql/mysql_store.cpp
projects/stargazer/plugins/store/mysql/mysql_store.h
projects/stargazer/plugins/store/postgresql/Makefile
projects/stargazer/plugins/store/postgresql/postgresql_store.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store.h
projects/stargazer/plugins/store/postgresql/postgresql_store_tariffs.cpp

14 files changed:
1  2 
include/stg/tariff_conf.h
projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp
projects/stargazer/plugins/store/files/file_store.cpp
projects/stargazer/plugins/store/firebird/firebird_store.cpp
projects/stargazer/plugins/store/firebird/firebird_store.h
projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp
projects/stargazer/plugins/store/mysql/mysql_store.cpp
projects/stargazer/plugins/store/mysql/mysql_store.h
projects/stargazer/plugins/store/postgresql/postgresql_store.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_tariffs.cpp
projects/stargazer/tariff_impl.h
projects/stargazer/user_impl.cpp
projects/stargazer/user_impl.h
projects/stargazer/users_impl.cpp

index b554e14ac63f761c8c35f192653114fda156bf8e,376ed378e527fc1ed74c0a3d79ba290677661ebb..6a296230d8413e3b148d3969ffc69992fb115ae2
@@@ -178,14 -184,15 +184,15 @@@ struct TARIFF_CONF_RE
          return *this;
          }
  
 -    TARIFF_CONF GetData()
 +    TARIFF_CONF GetData() const
          {
          TARIFF_CONF tc;
 -        tc.fee         = fee;
 -        tc.free        = free;
 -        tc.name        = name;
 -        tc.passiveCost = passiveCost;
 -        tc.traffType   = traffType;
 -        tc.period      = period;
 +        tc.fee         = fee.data();
 +        tc.free        = free.data();
 +        tc.name        = name.data();
 +        tc.passiveCost = passiveCost.data();
 +        tc.traffType   = traffType.data();
++        tc.period      = period.data();
          return tc;
          }
  
index 638067f2011516f1228af789cb3769f0757d4278,a5905fefa8438570e7e2606cf2f9571a0c328a1c..688f0e88651da56258aad827b29d4ff92a21c6d7
@@@ -123,11 -127,13 +123,13 @@@ private
      MODULE_SETTINGS settings;
      mutable IBPP::Database db;
      mutable pthread_mutex_t mutex;
 -    mutable IBPP::TIL til;
 -    mutable IBPP::TLR tlr;
 +    IBPP::TIL til;
 +    IBPP::TLR tlr;
+     int schemaVersion;
 -    STG_LOGGER & WriteServLog;
 +    PLUGIN_LOGGER logger;
  
      int SaveStat(const USER_STAT & stat, const std::string & login, int year = 0, int month = 0) const;
+     int CheckVersion();
  };
  
  time_t ts2time_t(const IBPP::Timestamp & ts);
index b4ac87155a762d5510d4700f624decf959956fd2,95ac298d732529891e18de18844a56df3b3518ca..11c2def3b5c1d2ca0dc3b82fb036fa6afcc00e71
@@@ -525,10 -578,33 +581,33 @@@ if(!IsTablePresent("stat",sock)
  return 0;
  }
  //-----------------------------------------------------------------------------
+ int MYSQL_STORE::MakeUpdates(MYSQL * sock)
+ {
+ if (schemaVersion  < 1)
+     {
+     if (MysqlQuery("ALTER TABLE tariffs ADD period VARCHAR(32) NOT NULL DEFAULT 'month'", sock))
+         {
+         errorStr = "Couldn't update tariffs table to version 1. With error:\n";
+         errorStr += mysql_error(sock);
+         mysql_close(sock);
+         return -1;
+         }
+     if (MysqlQuery("UPDATE info SET version = 1", sock))
+         {
+         errorStr = "Couldn't update DB schema version to 1. With error:\n";
+         errorStr += mysql_error(sock);
+         mysql_close(sock);
+         return -1;
+         }
+     schemaVersion = 1;
+     WriteServLog("MYSQL_STORE: Updated DB schema to version %d", schemaVersion);
+     }
+ return 0;
+ }
  //-----------------------------------------------------------------------------
  
 -int MYSQL_STORE::GetAllParams(vector<string> * ParamList, 
 -                            const string & table, const string & name) const
 +int MYSQL_STORE::GetAllParams(std::vector<std::string> * ParamList, 
 +                            const std::string & table, const std::string & name) const
  {
  MYSQL_RES *res;
  MYSQL_ROW row;
index af747c14518662884bbbf27359b22e7b8bff6758,8818f590cb603291aba8a481c1d318f6f910f0f8..4a492b3833694ece04130acf72fc81be96e78034
@@@ -129,20 -130,21 +129,22 @@@ private
      MYSQL_STORE(const MYSQL_STORE & rvalue);
      MYSQL_STORE & operator=(const MYSQL_STORE & rvalue);
  
 -    virtual int WriteLogString(const string & str, const string & login) const;
 -    int GetAllParams(vector<string> * ParamList, const string & table, const string & name) const;
 +    virtual int WriteLogString(const std::string & str, const std::string & login) const;
 +    int GetAllParams(std::vector<std::string> * ParamList, const std::string & table, const std::string & name) const;
      int CheckAllTables(MYSQL * sock);
 -    bool IsTablePresent(const string & str,MYSQL * sock);
 -    mutable string          errorStr;
 -    int                     MysqlQuery(const char* sQuery,MYSQL * sock) const;
+     int MakeUpdates(MYSQL * sock);
 +    bool IsTablePresent(const std::string & str,MYSQL * sock);
 +    mutable std::string          errorStr;
 +    int                        MysqlQuery(const char* sQuery,MYSQL * sock) const;
      int                     MysqlGetQuery(const char * Query,MYSQL * & sock) const;
      int                     MysqlSetQuery(const char * Query) const;
      MYSQL  *                MysqlConnect() const ;
 -    string                  version;
 +    std::string                  version;
      MYSQL_STORE_SETTINGS    storeSettings;
      MODULE_SETTINGS         settings;
 -    STG_LOGGER &            WriteServLog;
+     int                     schemaVersion;
 +
 +    PLUGIN_LOGGER           logger;
  };
  //-----------------------------------------------------------------------------
  
index fb8caf9dee0b97b9d9a8a76724bd3f4595ae0301,ffce284614452cf9f87a3d5cd77257aaf90daffc..c9cb7ccfe79f19968eb646c81b2f57652f16985d
@@@ -292,26 -289,26 +292,30 @@@ if (tuples != 1
      return -1;
      }
  
 -std::stringstream tuple;
 -tuple << PQgetvalue(result, 0, 0);
 +    {
 +    std::stringstream tuple;
 +    tuple << PQgetvalue(result, 0, 0);
  
 -PQclear(result);
 +    PQclear(result);
  
 -tuple >> id;
 +    tuple >> id;
 +    }
  
 -query.str("");
 -query << "UPDATE tb_tariffs SET \
 -              fee = " << td.tariffConf.fee << ", \
 -              free = " << td.tariffConf.free << ", \
 -              passive_cost = " << td.tariffConf.passiveCost << ", \
 -              traff_type = " << td.tariffConf.traffType;
 +    {
 +    std::ostringstream query;
 +    query << "UPDATE tb_tariffs SET \
 +                  fee = " << td.tariffConf.fee << ", \
 +                  free = " << td.tariffConf.free << ", \
 +                  passive_cost = " << td.tariffConf.passiveCost << ", \
-                   traff_type = " << td.tariffConf.traffType << " \
-               WHERE pk_tariff = " << id;
++                  traff_type = " << td.tariffConf.traffType;
 -if (version > 6)
 -    query << ", period = '" << TARIFF::PeriodToString(td.tariffConf.period) << "'";
++    if (version > 6)
++        query << ", period = '" << TARIFF::PeriodToString(td.tariffConf.period) << "'";
 -query << " WHERE pk_tariff = " << id;
++    query << " WHERE pk_tariff = " << id;
  
 -result = PQexec(connection, query.str().c_str());
 +    result = PQexec(connection, query.str().c_str());
 +    }
  
  if (PQresultStatus(result) != PGRES_COMMAND_OK)
      {
@@@ -434,13 -429,17 +438,17 @@@ if (EscapeString(ename)
  
  td->tariffConf.name = tariffName;
  
 -std::stringstream query;
 +std::ostringstream query;
  query << "SELECT pk_tariff, \
                   fee, \
-                free, \
-                passive_cost, \
-                traff_type \
-         FROM tb_tariffs WHERE name = '" << ename << "'";
+                  free, \
+                  passive_cost, \
+                  traff_type";
+ if (version > 6)
+     query << ", period";
+ query << " FROM tb_tariffs WHERE name = '" << ename << "'";
  
  result = PQexec(connection, query.str().c_str());
  
@@@ -470,23 -469,23 +478,26 @@@ if (tuples != 1
      return -1;
      }
  
 -std::stringstream tuple;
 -tuple << PQgetvalue(result, 0, 0) << " ";
 -tuple << PQgetvalue(result, 0, 1) << " ";
 -tuple << PQgetvalue(result, 0, 2) << " ";
 -tuple << PQgetvalue(result, 0, 3) << " ";
 -tuple << PQgetvalue(result, 0, 4) << " ";
 -
  int id;
 -tuple >> id;
 -tuple >> td->tariffConf.fee;
 -tuple >> td->tariffConf.free;
 -tuple >> td->tariffConf.passiveCost;
 -tuple >> td->tariffConf.traffType;
 +
 +    {
 +    std::stringstream tuple;
 +    tuple << PQgetvalue(result, 0, 0) << " ";
 +    tuple << PQgetvalue(result, 0, 1) << " ";
 +    tuple << PQgetvalue(result, 0, 2) << " ";
 +    tuple << PQgetvalue(result, 0, 3) << " ";
 +    tuple << PQgetvalue(result, 0, 4) << " ";
 +
 +    tuple >> id;
 +    tuple >> td->tariffConf.fee;
 +    tuple >> td->tariffConf.free;
 +    tuple >> td->tariffConf.passiveCost;
 +    tuple >> td->tariffConf.traffType;
 +    }
  
+ if (version > 6)
+     td->tariffConf.period = TARIFF::StringToPeriod(PQgetvalue(result, 0, 5));
  PQclear(result);
  
  query.str("");
Simple merge
index 7b0348bc57e75928936640cbed90d90bd9b28481,42650effed158034cd7e30569df661bf0763f376..3b2489ad319bc1d660d089f4f5a0b2bf4264e93f
@@@ -1253,9 -1231,12 +1253,12 @@@ STG_LOCKER lock(&mutex, __FILE__, __LIN
  if (passive.ConstData() || tariff == NULL)
      return;
  
+ if (tariff->GetPeriod() != TARIFF::MONTH)
+     return;
  double fee = tariff->GetFee() / DaysInCurrentMonth();
  
 -if (fee == 0.0)
 +if (std::fabs(fee) < 1.0e-3)
      return;
  
  double c = cash;
Simple merge
Simple merge