# HG changeset patch # User Sebastien Jodogne # Date 1680874127 -7200 # Node ID 19bd3ee1f0b35d6cd1c71e996966fd06981a2100 # Parent 8dedfd982b83064be1279395bb500afabfabcd66 support for labels in sqlite diff -r 8dedfd982b83 -r 19bd3ee1f0b3 Framework/Plugins/IndexBackend.cpp --- a/Framework/Plugins/IndexBackend.cpp Thu Apr 06 19:09:51 2023 +0200 +++ b/Framework/Plugins/IndexBackend.cpp Fri Apr 07 15:28:47 2023 +0200 @@ -2626,6 +2626,12 @@ "INSERT INTO Labels VALUES(${id}, ${label}) ON CONFLICT DO NOTHING")); break; + case Dialect_SQLite: + statement.reset(new DatabaseManager::CachedStatement( + STATEMENT_FROM_HERE, manager, + "INSERT OR IGNORE INTO Labels VALUES(${id}, ${label})")); + break; + default: throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); } diff -r 8dedfd982b83 -r 19bd3ee1f0b3 SQLite/Plugins/SQLiteIndex.cpp --- a/SQLite/Plugins/SQLiteIndex.cpp Thu Apr 06 19:09:51 2023 +0200 +++ b/SQLite/Plugins/SQLiteIndex.cpp Fri Apr 07 15:28:47 2023 +0200 @@ -166,6 +166,23 @@ t.Commit(); } + + { + DatabaseManager::Transaction t(manager, TransactionType_ReadWrite); + + if (!t.GetDatabaseTransaction().DoesTableExist("Labels")) + { + t.GetDatabaseTransaction().ExecuteMultiLines( + "CREATE TABLE Labels(" + " id INTEGER REFERENCES Resources(internalId) ON DELETE CASCADE," + " label TEXT NOT NULL," + " PRIMARY KEY(id, label));" + "CREATE INDEX LabelsIndex1 ON Labels(id);" + "CREATE INDEX LabelsIndex2 ON Labels(label);"); + } + + t.Commit(); + } } diff -r 8dedfd982b83 -r 19bd3ee1f0b3 SQLite/Plugins/SQLiteIndex.h --- a/SQLite/Plugins/SQLiteIndex.h Thu Apr 06 19:09:51 2023 +0200 +++ b/SQLite/Plugins/SQLiteIndex.h Fri Apr 07 15:28:47 2023 +0200 @@ -62,7 +62,7 @@ // New primitive since Orthanc 1.12.0 virtual bool HasLabelsSupport() const ORTHANC_OVERRIDE { - return false; + return true; } }; }