mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
Add original id to QgsHistoryEntry
This commit is contained in:
parent
2fafc2828d
commit
aa7535ffab
@ -45,6 +45,8 @@ Returns ``True`` if the entry is valid.
|
||||
.. versionadded:: 3.32
|
||||
%End
|
||||
|
||||
long long id;
|
||||
|
||||
QDateTime timestamp;
|
||||
|
||||
QString providerId;
|
||||
|
@ -59,6 +59,13 @@ class GUI_EXPORT QgsHistoryEntry
|
||||
*/
|
||||
bool isValid() const;
|
||||
|
||||
/**
|
||||
* Entry ID.
|
||||
*
|
||||
* \since QGIS 3.32
|
||||
*/
|
||||
long long id = 0;
|
||||
|
||||
//! Entry timestamp
|
||||
QDateTime timestamp;
|
||||
|
||||
|
@ -115,7 +115,10 @@ long long QgsHistoryProviderRegistry::addEntry( const QgsHistoryEntry &entry, bo
|
||||
}
|
||||
id = static_cast< int >( sqlite3_last_insert_rowid( mLocalDB.get() ) );
|
||||
|
||||
emit entryAdded( id, entry, Qgis::HistoryProviderBackend::LocalProfile );
|
||||
QgsHistoryEntry addedEntry( entry );
|
||||
addedEntry.id = id;
|
||||
|
||||
emit entryAdded( id, addedEntry, Qgis::HistoryProviderBackend::LocalProfile );
|
||||
}
|
||||
|
||||
return id;
|
||||
@ -163,11 +166,13 @@ QgsHistoryEntry QgsHistoryProviderRegistry::entry( long long id, bool &ok, Qgis:
|
||||
}
|
||||
|
||||
ok = true;
|
||||
return QgsHistoryEntry(
|
||||
statement.columnAsText( 0 ),
|
||||
QDateTime::fromString( statement.columnAsText( 2 ), QStringLiteral( "yyyy-MM-dd HH:mm:ss" ) ),
|
||||
QgsXmlUtils::readVariant( doc.documentElement() ).toMap()
|
||||
);
|
||||
QgsHistoryEntry res = QgsHistoryEntry(
|
||||
statement.columnAsText( 0 ),
|
||||
QDateTime::fromString( statement.columnAsText( 2 ), QStringLiteral( "yyyy-MM-dd HH:mm:ss" ) ),
|
||||
QgsXmlUtils::readVariant( doc.documentElement() ).toMap()
|
||||
);
|
||||
res.id = id;
|
||||
return res;
|
||||
}
|
||||
|
||||
QgsDebugMsg( QStringLiteral( "Cannot find history item with matching ID" ) );
|
||||
@ -213,7 +218,7 @@ QList<QgsHistoryEntry> QgsHistoryProviderRegistry::queryEntries( const QDateTime
|
||||
return {};
|
||||
}
|
||||
|
||||
QString sql = QStringLiteral( "SELECT provider_id, xml, timestamp FROM history" );
|
||||
QString sql = QStringLiteral( "SELECT id, provider_id, xml, timestamp FROM history" );
|
||||
QStringList whereClauses;
|
||||
if ( !providerId.isEmpty() )
|
||||
{
|
||||
@ -237,17 +242,20 @@ QList<QgsHistoryEntry> QgsHistoryProviderRegistry::queryEntries( const QDateTime
|
||||
while ( nErr == SQLITE_OK && sqlite3_step( statement.get() ) == SQLITE_ROW )
|
||||
{
|
||||
QDomDocument doc;
|
||||
if ( !doc.setContent( statement.columnAsText( 1 ) ) )
|
||||
if ( !doc.setContent( statement.columnAsText( 2 ) ) )
|
||||
{
|
||||
QgsDebugMsg( QStringLiteral( "Cannot read history entry" ) );
|
||||
continue;
|
||||
}
|
||||
|
||||
entries.append( QgsHistoryEntry(
|
||||
statement.columnAsText( 0 ),
|
||||
QDateTime::fromString( statement.columnAsText( 2 ), QStringLiteral( "yyyy-MM-dd HH:mm:ss" ) ),
|
||||
QgsXmlUtils::readVariant( doc.documentElement() ).toMap()
|
||||
) );
|
||||
QgsHistoryEntry entry(
|
||||
statement.columnAsText( 1 ),
|
||||
QDateTime::fromString( statement.columnAsText( 3 ), QStringLiteral( "yyyy-MM-dd HH:mm:ss" ) ),
|
||||
QgsXmlUtils::readVariant( doc.documentElement() ).toMap()
|
||||
);
|
||||
entry.id = statement.columnAsInt64( 0 );
|
||||
|
||||
entries.append( entry );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -110,6 +110,7 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
self.assertEqual(len(added_spy), 1)
|
||||
self.assertEqual(added_spy[-1][0], id_1)
|
||||
self.assertEqual(added_spy[-1][1].providerId, 'my provider')
|
||||
self.assertEqual(added_spy[-1][1].id, id_1)
|
||||
self.assertEqual(added_spy[-1][1].entry, {'some var': 5, 'other_var': [1, 2, 3], 'final_var': {'a': 'b'}})
|
||||
|
||||
id_2, ok = reg.addEntry('my provider 2', {'some var': 6},
|
||||
@ -118,14 +119,17 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
self.assertEqual(len(added_spy), 2)
|
||||
self.assertEqual(added_spy[-1][0], id_2)
|
||||
self.assertEqual(added_spy[-1][1].providerId, 'my provider 2')
|
||||
self.assertEqual(added_spy[-1][1].id, id_2)
|
||||
self.assertEqual(added_spy[-1][1].entry, {'some var': 6})
|
||||
|
||||
self.assertEqual(len(reg.queryEntries()), 2)
|
||||
self.assertEqual(reg.queryEntries()[0].providerId, 'my provider')
|
||||
self.assertEqual(reg.queryEntries()[0].id, id_1)
|
||||
self.assertEqual(reg.queryEntries()[0].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(reg.queryEntries()[0].entry, {'some var': 5, 'other_var': [1, 2, 3], 'final_var': {'a': 'b'}})
|
||||
|
||||
self.assertEqual(reg.queryEntries()[1].providerId, 'my provider 2')
|
||||
self.assertEqual(reg.queryEntries()[1].id, id_2)
|
||||
self.assertEqual(reg.queryEntries()[1].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(reg.queryEntries()[1].entry, {'some var': 6})
|
||||
|
||||
@ -134,11 +138,13 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
entry, ok = reg.entry(id_1)
|
||||
self.assertTrue(ok)
|
||||
self.assertEqual(entry.providerId, 'my provider')
|
||||
self.assertEqual(entry.id, id_1)
|
||||
self.assertEqual(entry.timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(entry.entry, {'some var': 5, 'other_var': [1, 2, 3], 'final_var': {'a': 'b'}})
|
||||
entry, ok = reg.entry(id_2)
|
||||
self.assertTrue(ok)
|
||||
self.assertEqual(entry.providerId, 'my provider 2')
|
||||
self.assertEqual(entry.id, id_2)
|
||||
self.assertEqual(entry.timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(entry.entry, {'some var': 6})
|
||||
|
||||
@ -148,16 +154,20 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
self.assertEqual(len(added_spy), 3)
|
||||
self.assertEqual(added_spy[-1][0], id_3)
|
||||
self.assertEqual(added_spy[-1][1].providerId, 'my provider 3')
|
||||
self.assertEqual(added_spy[-1][1].id, id_3)
|
||||
self.assertEqual(added_spy[-1][1].entry, {'var': 7})
|
||||
|
||||
self.assertEqual(len(reg.queryEntries()), 3)
|
||||
self.assertEqual(reg.queryEntries()[0].providerId, 'my provider')
|
||||
self.assertEqual(reg.queryEntries()[0].id, id_1)
|
||||
self.assertEqual(reg.queryEntries()[0].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(reg.queryEntries()[0].entry, {'some var': 5, 'other_var': [1, 2, 3], 'final_var': {'a': 'b'}})
|
||||
self.assertEqual(reg.queryEntries()[1].providerId, 'my provider 2')
|
||||
self.assertEqual(reg.queryEntries()[1].id, id_2)
|
||||
self.assertEqual(reg.queryEntries()[1].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(reg.queryEntries()[1].entry, {'some var': 6})
|
||||
self.assertEqual(reg.queryEntries()[2].providerId, 'my provider 3')
|
||||
self.assertEqual(reg.queryEntries()[2].id, id_3)
|
||||
self.assertEqual(reg.queryEntries()[2].timestamp.date(), QDate(2021, 1, 2))
|
||||
self.assertEqual(reg.queryEntries()[2].entry, {'var': 7})
|
||||
|
||||
@ -165,12 +175,14 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
entries = reg.queryEntries(providerId='my provider')
|
||||
self.assertEqual(len(entries), 1)
|
||||
self.assertEqual(entries[0].providerId, 'my provider')
|
||||
self.assertEqual(entries[0].id, id_1)
|
||||
self.assertEqual(entries[0].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(entries[0].entry, {'some var': 5, 'other_var': [1, 2, 3], 'final_var': {'a': 'b'}})
|
||||
|
||||
entries = reg.queryEntries(providerId='my provider 2')
|
||||
self.assertEqual(len(entries), 1)
|
||||
self.assertEqual(entries[0].providerId, 'my provider 2')
|
||||
self.assertEqual(entries[0].id, id_2)
|
||||
self.assertEqual(entries[0].timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(entries[0].entry, {'some var': 6})
|
||||
|
||||
@ -195,6 +207,7 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
|
||||
entry, ok = reg.entry(id_1)
|
||||
self.assertEqual(entry.providerId, 'my provider')
|
||||
self.assertEqual(entry.id, id_1)
|
||||
self.assertEqual(entry.timestamp.date(), QDateTime.currentDateTime().date())
|
||||
self.assertEqual(entry.entry, {'new_props': 54})
|
||||
|
||||
@ -213,14 +226,18 @@ class TestQgsHistoryProviderRegistry(unittest.TestCase):
|
||||
|
||||
self.assertEqual(len(added_spy), 5)
|
||||
self.assertEqual(added_spy[-2][1].providerId, 'my provider 4')
|
||||
self.assertEqual(added_spy[-2][1].id, 1)
|
||||
self.assertEqual(added_spy[-2][1].entry, {'var': 7})
|
||||
self.assertEqual(added_spy[-1][1].providerId, 'my provider 5')
|
||||
self.assertEqual(added_spy[-1][1].id, 2)
|
||||
self.assertEqual(added_spy[-1][1].entry, {'var': 8})
|
||||
|
||||
self.assertEqual(reg.queryEntries()[0].providerId, 'my provider 4')
|
||||
self.assertEqual(reg.queryEntries()[0].id, 1)
|
||||
self.assertEqual(reg.queryEntries()[0].entry, {'var': 7})
|
||||
|
||||
self.assertEqual(reg.queryEntries()[1].providerId, 'my provider 5')
|
||||
self.assertEqual(reg.queryEntries()[1].id, 2)
|
||||
self.assertEqual(reg.queryEntries()[1].entry, {'var': 8})
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user