void
ORM::Add( const Queued::eo::EOid & msg)
{
try
{
odb::transaction t(m_models->database().begin());
EST::Mapping::ModelPointer mp = m_models->modelSecond();
qlonglong msgUniKey = wtf(msg.UniKey) .toLongLong();
qlonglong msgTplma = wtf(msg.Tplma) .toLongLong();
qlonglong msgNamep = QString::fromStdString(msg.Namep).toLongLong();
QString msgPltxt = QString::fromStdString(msg.Pltxt);
EST::Mapping::Identifier idNode (msgUniKey); //значение id экземпляра получаем из data
EST::Mapping::Identifier idParent(msgTplma ); //значение id вышестоящего объекта
EST::Mapping::Identifier idType (msgNamep ); //значение id класса получаем из data
EST::Mapping::NodePointer nodep (mp->node(idNode));
if (0 != nodep) return; // уже существует
EST::Mapping::NodePointer parntp(mp->node(idParent));
if (0 == parntp) return; // нет родителя
EST::Mapping::TypePointer tp (mp->type(idType));
EST::Mapping::NodePointer newNode(new EST::Mapping::Node(mp,tp,idNode,msgPltxt,parntp));
m_models->database().persist(newNode);
t.commit();
}
catch(odb::exception &e)
{
EST::Syslog log;
log.critical(QString("ORM::Add failed: %1").arg(e.what()));
}
}