data: Store separate storage version number in SqliteStorage for managing migrations

* deprecated the third version number as storage update number
* version can now have either 3 or 4 numbers
* whether a .coatidb file is outdated is now solely determined by the SqliteStorage::STORAGE_VERSION
This commit is contained in:
Eberhard Graether
2016-07-20 14:14:21 +02:00
parent eb8808b624
commit cb869c2465
8 changed files with 103 additions and 78 deletions
+13 -35
View File
@@ -49,51 +49,24 @@ const Version& Version::getApplicationVersion()
Version::Version()
: m_majorNumber(0)
, m_minorNumber(0)
, m_refreshNumber(0)
, m_refreshNumber(-1)
, m_commitNumber(0)
{
}
bool Version::isEmpty() const
{
return m_majorNumber == 0 && m_minorNumber == 0 && m_refreshNumber == 0 && m_commitNumber == 0;
}
bool Version::operator<(const Version& other) const
{
if (m_majorNumber != other.m_majorNumber)
{
return m_majorNumber < other.m_majorNumber;
}
else if (m_minorNumber != other.m_minorNumber)
{
return m_minorNumber < other.m_minorNumber;
}
else if (m_refreshNumber != other.m_refreshNumber)
{
return m_refreshNumber < other.m_refreshNumber;
}
else if (m_commitNumber != other.m_commitNumber)
{
return m_commitNumber < other.m_commitNumber;
}
else
{
return false;
}
}
bool Version::isDifferentStorageVersionThan(const Version& other) const
{
return m_majorNumber != other.m_majorNumber ||
m_minorNumber != other.m_minorNumber ||
m_refreshNumber != other.m_refreshNumber;
return m_majorNumber == 0 && m_minorNumber == 0 && m_refreshNumber == -1 && m_commitNumber == 0;
}
std::string Version::toString() const
{
std::stringstream ss;
ss << m_majorNumber << '.' << m_minorNumber << '.' << m_refreshNumber;
ss << m_majorNumber << '.' << m_minorNumber;
if (m_refreshNumber != -1)
{
ss << '.' << m_refreshNumber;
}
ss << '-' << m_commitNumber << '-' << m_commitHash;
return ss.str();
}
@@ -101,6 +74,11 @@ std::string Version::toString() const
std::string Version::toDisplayString() const
{
std::stringstream ss;
ss << m_majorNumber << '.' << m_minorNumber << '.' << m_refreshNumber << '.' << m_commitNumber;
ss << m_majorNumber << '.' << m_minorNumber;
if (m_refreshNumber != -1)
{
ss << '.' << m_refreshNumber;
}
ss << '.' << m_commitNumber;
return ss.str();
}
+1 -3
View File
@@ -14,8 +14,6 @@ public:
Version();
bool isEmpty() const;
bool operator<(const Version& other) const;
bool isDifferentStorageVersionThan(const Version& other) const;
std::string toString() const;
std::string toDisplayString() const;
@@ -25,7 +23,7 @@ private:
int m_majorNumber;
int m_minorNumber;
int m_refreshNumber;
int m_refreshNumber; // deprecated since switch to storage_version, left for downward compatibility
int m_commitNumber;
std::string m_commitHash;