Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
DatabaseSetup.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_DATABASE_SETUP_H
7#define SKYFIRE_DATABASE_SETUP_H
8
9#include <cstddef>
10#include <cstdint>
11#include <functional>
12#include <iosfwd>
13#include <map>
14#include <set>
15#include <string>
16#include <vector>
17
18namespace Skyfire
19{
20namespace Database
21{
23 {
24 bool AutoSetup = false;
25 bool AutoCreate = false;
26 bool AutoBaseline = false;
29 std::string Domain;
30 std::string SqlPath;
31 std::string BaseFileName;
32 std::string ExternalBaseFile;
33 std::vector<std::string> RequiredBaseFileNames;
34 std::string UpdatesDirectory;
36 };
37
39 {
40 bool DatabaseExists = false;
42 unsigned int SchemaTableCount = 0;
43 std::set<std::string> AppliedUpdates;
44 std::map<std::string, std::string> AppliedUpdateHashes;
45 };
46
48 {
49 std::string Name;
50 std::string Path;
51 std::string Hash;
52 };
53
55 {
56 std::size_t StatementCount = 0;
57 std::uintmax_t BytesRead = 0;
58 std::uintmax_t TotalBytes = 0;
59 };
60
61 struct SetupPlan
62 {
64 bool ShouldInstallBase = false;
66 std::vector<SqlUpdateFile> PendingUpdates;
67 std::vector<SqlUpdateFile> BaselineUpdates;
68 std::vector<SqlUpdateFile> HashMismatchedUpdates;
69 std::string Error;
70
71 bool IsValid() const;
72 };
73
74 SetupOptions MakeAuthDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath);
75 SetupOptions MakeAuthDatabaseSetupOptions(bool autoSetup, bool autoCreate, bool autoBaseline, std::string sqlPath);
76 SetupOptions MakeCharacterDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath);
77 SetupOptions MakeCharacterDatabaseSetupOptions(bool autoSetup, bool autoCreate, bool autoBaseline, std::string sqlPath);
78 SetupOptions MakeWorldDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath,
79 std::string externalBaseFile);
80 SetupOptions MakeWorldDatabaseSetupOptions(bool autoSetup, bool autoCreate, bool autoBaseline, std::string sqlPath,
81 std::string externalBaseFile);
82 std::vector<SqlUpdateFile> BuildSortedSqlUpdateList(std::vector<std::string> const& names, std::string const& directory);
83 std::vector<SqlUpdateFile> DiscoverSqlUpdates(SetupOptions const& options);
84 std::vector<std::string> SplitSqlStatements(std::string const& sql);
85 bool ExecuteSqlStream(std::istream& input, std::uintmax_t totalBytes,
86 std::function<bool(std::string const&, SqlStatementContext const&)> const& executor);
87 bool ExecuteSqlScript(std::string const& sql, std::function<bool(std::string const&)> const& executor);
88 std::string CalculateStableSqlHash(std::string const& sql);
89 std::string EscapeSqlString(std::string const& value);
90 std::string EscapeSqlIdentifier(std::string const& identifier);
91 std::string BuildCreateDatabaseSql(std::string const& databaseName);
92 std::string BuildUpdateTrackingTableSql();
93 std::string BuildUpdateTrackingInsertSql(std::string const& domain, std::string const& filename,
94 std::string const& hash);
95 std::string BuildDbUpdateAuditTableSql();
96 std::string BuildDbUpdateAuditInsertSql(std::string const& filename);
97 std::string BuildSetupPlanSummary(std::string const& databaseName, SetupPlan const& plan,
98 std::size_t discoveredUpdateCount, bool appliesRequiredSql);
99 SetupPlan BuildDatabaseSetupPlan(SetupOptions const& options, SetupState const& state, bool baseSqlExists,
100 std::vector<SqlUpdateFile> const& updates);
101 SetupPlan BuildAuthDatabaseSetupPlan(SetupOptions const& options, SetupState const& state, bool baseSqlExists,
102 std::vector<SqlUpdateFile> const& updates);
103 SetupPlan BuildCharacterDatabaseSetupPlan(SetupOptions const& options, SetupState const& state, bool baseSqlExists,
104 std::vector<SqlUpdateFile> const& updates);
105 SetupPlan BuildWorldDatabaseSetupPlan(SetupOptions const& options, SetupState const& state, bool externalBaseSqlExists,
106 bool requiredBaseSqlExists, std::vector<SqlUpdateFile> const& updates);
107}
108}
109
110#endif
std::vector< SqlUpdateFile > DiscoverSqlUpdates(SetupOptions const &options)
SetupPlan BuildWorldDatabaseSetupPlan(SetupOptions const &options, SetupState const &state, bool externalBaseSqlExists, bool requiredBaseSqlExists, std::vector< SqlUpdateFile > const &updates)
std::vector< std::string > SplitSqlStatements(std::string const &sql)
std::string EscapeSqlString(std::string const &value)
std::string BuildUpdateTrackingInsertSql(std::string const &domain, std::string const &filename, std::string const &hash)
SetupPlan BuildDatabaseSetupPlan(SetupOptions const &options, SetupState const &state, bool baseSqlExists, std::vector< SqlUpdateFile > const &updates)
std::string BuildDbUpdateAuditTableSql()
bool ExecuteSqlScript(std::string const &sql, std::function< bool(std::string const &)> const &executor)
SetupOptions MakeWorldDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath, std::string externalBaseFile)
bool ExecuteSqlStream(std::istream &input, std::uintmax_t totalBytes, std::function< bool(std::string const &, SqlStatementContext const &)> const &executor)
SetupOptions MakeCharacterDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath)
SetupPlan BuildCharacterDatabaseSetupPlan(SetupOptions const &options, SetupState const &state, bool baseSqlExists, std::vector< SqlUpdateFile > const &updates)
std::string BuildCreateDatabaseSql(std::string const &databaseName)
std::vector< SqlUpdateFile > BuildSortedSqlUpdateList(std::vector< std::string > const &names, std::string const &directory)
std::string BuildDbUpdateAuditInsertSql(std::string const &filename)
SetupPlan BuildAuthDatabaseSetupPlan(SetupOptions const &options, SetupState const &state, bool baseSqlExists, std::vector< SqlUpdateFile > const &updates)
std::string EscapeSqlIdentifier(std::string const &identifier)
std::string CalculateStableSqlHash(std::string const &sql)
SetupOptions MakeAuthDatabaseSetupOptions(bool autoSetup, bool autoCreate, std::string sqlPath)
std::string BuildSetupPlanSummary(std::string const &databaseName, SetupPlan const &plan, std::size_t discoveredUpdateCount, bool appliesRequiredSql)
std::string BuildUpdateTrackingTableSql()
std::vector< std::string > RequiredBaseFileNames
std::vector< SqlUpdateFile > PendingUpdates
std::vector< SqlUpdateFile > BaselineUpdates
std::vector< SqlUpdateFile > HashMismatchedUpdates
std::set< std::string > AppliedUpdates
std::map< std::string, std::string > AppliedUpdateHashes