digiKam
Loading...
Searching...
No Matches
coredbschemaupdater.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2007-04-16
7 * Description : Core database Schema updater
8 *
9 * SPDX-FileCopyrightText: 2007-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QString>
21#include <QVariant>
22
23// Local includes
24
25#include "coredb.h"
26#include "coredbaccess.h"
27#include "coredbbackend.h"
28#include "dbengineparameters.h"
29
30namespace Digikam
31{
32
33class CoreDbAccess;
34class InitializationObserver;
35
36class DIGIKAM_DATABASE_EXPORT CoreDbSchemaUpdater
37{
38public:
39
40 static int schemaVersion();
41 static int filterSettingsVersion();
42 static int uniqueHashVersion();
43 static bool isUniqueHashUpToDate();
44
45public:
46
47 explicit CoreDbSchemaUpdater(CoreDB* const albumDB,
48 CoreDbBackend* const backend,
49 const DbEngineParameters& parameters);
50 virtual ~CoreDbSchemaUpdater();
51
52 bool update();
53 bool updateUniqueHash();
54 void setObserver(InitializationObserver* const observer);
55 const QString getLastErrorMessage();
56 void setCoreDbAccess(CoreDbAccess* const dbAccess);
57
58private:
59
60 bool startUpdates();
61 bool makeUpdates();
62 bool beginWrapSchemaUpdateStep();
63 bool endWrapSchemaUpdateStep(bool stepOperationSuccess, const QString& errorMsg);
64 void defaultFilterSettings(QStringList& defaultItemFilter,
65 QStringList& defaultVideoFilter,
66 QStringList& defaultAudioFilter);
67 void defaultIgnoreDirectoryFilterSettings(QStringList& defaultIgnoreDirectoryFilter);
68 bool createFilterSettings();
69 bool updateFilterSettings();
70 bool createDatabase();
71 bool createTables();
72 bool createIndices();
73 bool createTriggers();
74 bool copyV3toV4(const QString& digikam3DBPath, const QString& currentDBPath);
75 bool performUpdateToVersion(const QString& actionName, int newVersion, int newRequiredVersion);
76 bool updateToVersion(int targetVersion);
77 bool updateV4toV7();
78 void setLegacySettingEntries();
79 void readVersionSettings();
80 void setVersionSettings();
81
82private:
83
84 // cppcheck-suppress unusedPrivateFunction
85 bool createTablesV3();
86 // cppcheck-suppress unusedPrivateFunction
87 void preAlpha010Update1();
88 // cppcheck-suppress unusedPrivateFunction
89 void preAlpha010Update2();
90 // cppcheck-suppress unusedPrivateFunction
91 void preAlpha010Update3();
92 // cppcheck-suppress unusedPrivateFunction
93 void beta010Update1();
94 // cppcheck-suppress unusedPrivateFunction
95 void beta010Update2();
96
97private:
98
99 // Disable
101 CoreDbSchemaUpdater& operator=(const CoreDbSchemaUpdater&) = delete;
102
103private:
104
105 class Private;
106 Private* const d = nullptr;
107};
108
109} // namespace Digikam
Definition coredb.h:48
Definition coredbaccess.h:46
Definition coredbbackend.h:32
Definition coredbschemaupdater.h:37
Definition dbengineparameters.h:39
Definition collectionscannerobserver.h:47
Definition datefolderview.cpp:34