~d-nelson/research-assistant/nextDNK

« back to all changes in this revision

Viewing changes to RANet/DB_SQL_Net.cpp

  • Committer: Viktor Bursian at blin-ubuntu
  • Date: 2020-04-24 22:41:35 UTC
  • mto: (9.22.1 admin)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: vbursian@gmail.com-20200424224135-i2bbzygntaiae5f1
Partition link editing via RAdmin. Also correct URL parsing for SQLite.

Show diffs side-by-side

added added

removed removed

Lines of Context:
793
793
              if( recursive )
794
794
                OK = LoadDatabases(Databases[reference.Id]) && OK;
795
795
            }
 
796
            //!@todo{NetIO} Databases[reference.Id]->SetReferencedFrom(database->Id)
796
797
          }
797
798
        }
798
799
      }catch( rxSQL ){ ///@todo{1_6} Убрать чтение старого формата таблиц.
927
928
      InQ.prepare(sString("INSERT INTO ")+RootDB->TableFullName("databases")
928
929
                 +" (id,type,name,host,port,login,password)"
929
930
                 +" VALUES(?,?,?,?,?,?,?)");
930
 
      InQ.addBindString( sNodeUUID::ForTheRoot(this,link.Id,link.Version)
931
 
                                        .FormattedDBId() );
 
931
      InQ.addBindString( link.Id.ToString() );
932
932
      InQ.addBindValue ( quint8(link.Type) );
933
933
      if( link.TableNamePrefix.Empty() ){
934
934
        InQ.addBindString( link.DBName + "?" + link.SchemaName );
943
943
    }else{
944
944
      InQ.prepare(sString("INSERT INTO ")+RootDB->TableFullName("parts")
945
945
                 +" VALUES(?,?,?)");
946
 
      InQ.addBindString( sNodeUUID::ForTheRoot(this,link.Id,link.Version)
947
 
                                        .FormattedDBId() );
 
946
      InQ.addBindString( link.Id.ToString() );
948
947
      InQ.addBindString( link.URL() );
949
948
      InQ.addBindValue( QByteArray((literal)(link.Password)).toBase64()
950
949
                      , QSql::In | QSql::Binary );
966
965
}
967
966
 
968
967
 
 
968
void  sDB_SQL_Net::EditLink (rsDB_Link  link)
 
969
{
 
970
  try{
 
971
    psDatabase                  RootDB(Databases[RootDB_UUID]);
 
972
    sSQLQuery                   UpdateQ (RootDB->Connection());
 
973
    if( RootDB->Version < sVersion(1,5) ){
 
974
      UpdateQ.prepare(sString("UPDATE ")+RootDB->TableFullName("databases")
 
975
                 +" SET type=?,name=?,host=?,port=?,login=?,password=?"
 
976
                 +" WHERE id=?");
 
977
      UpdateQ.addBindValue ( quint8(link.Type) );
 
978
      if( link.TableNamePrefix.Empty() ){
 
979
        UpdateQ.addBindString( link.DBName + "?" + link.SchemaName );
 
980
      }else{
 
981
        UpdateQ.addBindString( link.DBName + "?" + link.SchemaName
 
982
                                       + ";" + link.TableNamePrefix );
 
983
      }
 
984
      UpdateQ.addBindString( link.Host );
 
985
      UpdateQ.addBindValue( link.Port );
 
986
      UpdateQ.addBindString( link.Login );
 
987
      UpdateQ.addBindString( link.Password );
 
988
    }else{
 
989
      UpdateQ.prepare(sString("UPDATE ")+RootDB->TableFullName("parts")
 
990
                 +" SET part_url = ? , pcode = ? WHERE part_id = ?");
 
991
      UpdateQ.addBindString( link.URL() );
 
992
      UpdateQ.addBindValue( QByteArray((literal)(link.Password)).toBase64()
 
993
                      , QSql::In | QSql::Binary );
 
994
    }
 
995
    UpdateQ.addBindString( link.Id.ToString() );
 
996
    UpdateQ.exec();
 
997
  }catch( rxSQL E ){
 
998
    throw xNetIO(sString("SQL error in sDB_SQL_Net::EditLink\n")
 
999
                +E.Error);
 
1000
  }catch( ... ){
 
1001
    throw xNetIO("Unknown error in sDB_SQL_Net::EditLink\n"
 
1002
                 "while updating link.");
 
1003
  }
 
1004
}
 
1005
 
 
1006
 
 
1007
void  sDB_SQL_Net::RemovePartition (psDatabase  partition)
 
1008
{
 
1009
  try{
 
1010
    psDatabase                  RootDB(Databases[RootDB_UUID]);
 
1011
    sSQLQuery                   SQL (RootDB->Connection());
 
1012
    if( RootDB->Version < sVersion(1,5) ){
 
1013
      SQL.prepare(sString("DELETE FROM ")+RootDB->TableFullName("databases")
 
1014
                 +" WHERE id=?");
 
1015
    }else{
 
1016
      SQL.prepare(sString("DELETE FROM ")+RootDB->TableFullName("parts")
 
1017
                 +" WHERE part_id = ?");
 
1018
    }
 
1019
    SQL.addBindString( partition->Id.ToString() );
 
1020
    SQL.exec();
 
1021
    Databases.erase(partition->Id);
 
1022
  }catch( rxSQL E ){
 
1023
    throw xNetIO(sString("SQL error in sDB_SQL_Net::RemovePartition\n")
 
1024
                +E.Error);
 
1025
  }catch( ... ){
 
1026
    throw xNetIO("Unknown error in sDB_SQL_Net::RemovePartition\n");
 
1027
  }
 
1028
}
 
1029
 
 
1030
 
969
1031
bool  sDB_SQL_Net::CreateTables (rcsDB_Info  info
970
1032
                                ,bool        initiate)
971
1033
{