@@ -410,7 +410,7 @@ bool CDatabaseTree::OnInitializeDatabase()
410410 bool success = query.exec (
411411 " CREATE TABLE IF NOT EXISTS " + m_szTableName + " ("
412412 " id INTEGER PRIMARY KEY AUTOINCREMENT,"
413- " name TEXT NOT NULL ,"
413+ " name TEXT,"
414414 " key INTEGER DEFAULT 0,"
415415 " created_time DATETIME DEFAULT CURRENT_TIMESTAMP,"
416416 " modified_time DATETIME DEFAULT CURRENT_TIMESTAMP,"
@@ -470,7 +470,7 @@ bool CDatabaseTree::Update(const TreeItem &item)
470470 " created_time = :created_time, "
471471 " modified_time = :modified_time, "
472472 " last_visit_time = :last_visit_time, "
473- " parent_id = :parent_id"
473+ " parent_id = :parent_id "
474474 " WHERE id = :id"
475475 );
476476 query.bindValue (" :name" , item.GetName ());
@@ -479,9 +479,10 @@ bool CDatabaseTree::Update(const TreeItem &item)
479479 query.bindValue (" :modified_time" , QDateTime::currentDateTime ());
480480 query.bindValue (" :last_visit_time" , item.GetLastVisitTime ());
481481 query.bindValue (" :parent_id" , item.GetParentId ());
482-
482+ query.bindValue (" :id" , item.GetId ());
483+ qDebug (log) << " Sql:" << query.executedQuery ();
484+ qDebug (log) << " Bound value:" << query.boundValues ();
483485 bool success = query.exec ();
484-
485486 if (!success) {
486487 qCritical (log) << " Failed to update tree item:" << m_szTableName << query.lastError ().text ();
487488 }
@@ -589,7 +590,7 @@ QList<TreeItem> CDatabaseTree::GetLeaves(int nodeId)
589590 QSqlQuery query (GetDatabase ());
590591 QString szSql;
591592 szSql = " SELECT id, name, key, "
592- " created_time, modified_time, last_visit_time "
593+ " created_time, modified_time, last_visit_time, parent_id "
593594 " FROM " + m_szTableName;
594595 if (0 < nodeId)
595596 szSql += " WHERE parent_id = :parent_id" ;
@@ -610,7 +611,7 @@ QList<TreeItem> CDatabaseTree::GetLeaves(int nodeId)
610611 item.SetCreateTime (query.value (3 ).toDateTime ());
611612 item.SetModifyTime (query.value (4 ).toDateTime ());
612613 item.SetLastVisitTime (query.value (5 ).toDateTime ());
613- item.SetParentId (nodeId );
614+ item.SetParentId (query. value ( 6 ). toInt () );
614615
615616 items.append (item);
616617 }
@@ -641,6 +642,47 @@ QList<TreeItem> CDatabaseTree::GetLeavesByKey(int key)
641642 item.SetId (query.value (0 ).toInt ());
642643 item.SetName (query.value (1 ).toString ());
643644 item.SetKey (key);
645+ item.SetCreateTime (query.value (2 ).toDateTime ());
646+ item.SetModifyTime (query.value (3 ).toDateTime ());
647+ item.SetLastVisitTime (query.value (4 ).toDateTime ());
648+ item.SetParentId (query.value (5 ).toInt ());
649+
650+ items.append (item);
651+ }
652+ return items;
653+ }
654+
655+ QList<TreeItem> CDatabaseTree::GetLeavesByKey (QList<int > key)
656+ {
657+ QList<TreeItem> items;
658+ if (key.isEmpty ()) return items;
659+
660+ QSqlQuery query (GetDatabase ());
661+ QString szSql;
662+ szSql = " SELECT id, name, key, "
663+ " created_time, modified_time, last_visit_time, parent_id "
664+ " FROM " + m_szTableName +
665+ " WHERE " ;
666+ int i = 0 ;
667+ foreach (auto KeyId, key) {
668+ if (0 == i++) {
669+ szSql += " key = " + QString::number (KeyId);
670+ continue ;
671+ }
672+ szSql += " OR key = " + QString::number (KeyId);
673+ }
674+ bool success = query.exec (szSql);
675+ if (!success) {
676+ qCritical (log) << " Failed to get leaves:" << m_szTableName << query.lastError ().text ();
677+ return items;
678+ }
679+
680+ while (query.next ()) {
681+ TreeItem item;
682+ item.SetType (TreeItem::Leaf);
683+ item.SetId (query.value (0 ).toInt ());
684+ item.SetName (query.value (1 ).toString ());
685+ item.SetKey (query.value (2 ).toInt ());
644686 item.SetCreateTime (query.value (3 ).toDateTime ());
645687 item.SetModifyTime (query.value (4 ).toDateTime ());
646688 item.SetLastVisitTime (query.value (5 ).toDateTime ());
0 commit comments