File indexing completed on 2025-01-05 03:54:14

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2017-06-30
0007  * Description : Similarity DB schema update
0008  *
0009  * SPDX-FileCopyrightText: 2007-2009 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
0010  * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0011  * SPDX-FileCopyrightText:      2017 by Swati  Lodha   <swatilodha27 at gmail dot com>
0012  * SPDX-FileCopyrightText:      2018 by Mario Frank    <mario dot frank at uni minus potsdam dot de>
0013  *
0014  * SPDX-License-Identifier: GPL-2.0-or-later
0015  *
0016  * ============================================================ */
0017 
0018 #ifndef DIGIKAM_SIMILARITY_DB_SCHEMA_UPDATER_H
0019 #define DIGIKAM_SIMILARITY_DB_SCHEMA_UPDATER_H
0020 
0021 namespace Digikam
0022 {
0023 
0024 class SimilarityDbAccess;
0025 class InitializationObserver;
0026 
0027 class SimilarityDbSchemaUpdater
0028 {
0029 public:
0030 
0031     static int schemaVersion();
0032 
0033 public:
0034 
0035     explicit SimilarityDbSchemaUpdater(SimilarityDbAccess* const dbAccess);
0036     ~SimilarityDbSchemaUpdater();
0037 
0038     bool update();
0039     void setObserver(InitializationObserver* const observer);
0040 
0041 private:
0042 
0043     bool startUpdates();
0044     bool makeUpdates();
0045     bool createDatabase();
0046     bool createTables();
0047     bool createIndices();
0048     bool createTriggers();
0049     bool updateV1ToV2();
0050 
0051 private:
0052 
0053     // Disable
0054     SimilarityDbSchemaUpdater(const SimilarityDbSchemaUpdater&)            = delete;
0055     SimilarityDbSchemaUpdater& operator=(const SimilarityDbSchemaUpdater&) = delete;
0056 
0057     class Private;
0058     Private* const d;
0059 };
0060 
0061 } // namespace Digikam
0062 
0063 #endif // DIGIKAM_SIMILARITY_DB_SCHEMA_UPDATER_H