-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Expand file tree
/
Copy pathSQLiteVersion.cpp
More file actions
64 lines (53 loc) · 2.1 KB
/
SQLiteVersion.cpp
File metadata and controls
64 lines (53 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#include "pch.h"
#include "Public/winget/SQLiteVersion.h"
#include "Public/winget/SQLiteMetadataTable.h"
#include <limits>
namespace AppInstaller::SQLite
{
Version Version::GetSchemaVersion(Connection& connection)
{
int major = MetadataTable::GetNamedValue<int>(connection, s_MetadataValueName_MajorVersion);
int minor = MetadataTable::GetNamedValue<int>(connection, s_MetadataValueName_MinorVersion);
return { static_cast<uint32_t>(major), static_cast<uint32_t>(minor) };
}
void Version::SetSchemaVersion(Connection& connection) const
{
Savepoint savepoint = Savepoint::Create(connection, "version_setschemaversion");
MetadataTable::SetNamedValue(connection, s_MetadataValueName_MajorVersion, static_cast<int>(MajorVersion));
MetadataTable::SetNamedValue(connection, s_MetadataValueName_MinorVersion, static_cast<int>(MinorVersion));
savepoint.Commit();
}
std::ostream& operator<<(std::ostream& out, const Version& version)
{
if (version.IsLatest())
{
return out << "Latest";
}
else if (version.IsLatestForMajor(version.MajorVersion))
{
return out << version.MajorVersion << ".Latest";
}
else
{
return out << version.MajorVersion << '.' << version.MinorVersion;
}
}
Version Version::Latest()
{
return { std::numeric_limits<uint32_t>::max(), std::numeric_limits<uint32_t>::max() };
}
Version Version::LatestForMajor(uint32_t majorVersion)
{
return { majorVersion, std::numeric_limits<uint32_t>::max() };
}
bool Version::IsLatest() const
{
return (MajorVersion == std::numeric_limits<uint32_t>::max() && MinorVersion == std::numeric_limits<uint32_t>::max());
}
bool Version::IsLatestForMajor(uint32_t majorVersion) const
{
return (MajorVersion == majorVersion && MinorVersion == std::numeric_limits<uint32_t>::max());
}
}