1#include <xrpld/app/rdb/State.h>
7 soci::session& session,
11 open(session, config, dbName);
13 session <<
"PRAGMA synchronous=FULL;";
15 session <<
"CREATE TABLE IF NOT EXISTS DbState ("
16 " Key INTEGER PRIMARY KEY,"
19 " LastRotatedLedger INTEGER"
22 session <<
"CREATE TABLE IF NOT EXISTS CanDelete ("
23 " Key INTEGER PRIMARY KEY,"
24 " CanDeleteSeq INTEGER"
30 boost::optional<std::int64_t> countO;
31 session <<
"SELECT COUNT(Key) FROM DbState WHERE Key = 1;",
34 Throw<std::runtime_error>(
35 "Failed to fetch Key Count from DbState.");
41 session <<
"INSERT INTO DbState VALUES (1, '', '', 0);";
46 boost::optional<std::int64_t> countO;
47 session <<
"SELECT COUNT(Key) FROM CanDelete WHERE Key = 1;",
50 Throw<std::runtime_error>(
51 "Failed to fetch Key Count from CanDelete.");
57 session <<
"INSERT INTO CanDelete VALUES (1, 0);";
65 session <<
"SELECT CanDeleteSeq FROM CanDelete WHERE Key = 1;",
74 session <<
"UPDATE CanDelete SET CanDeleteSeq = :canDelete WHERE Key = 1;",
83 session <<
"SELECT WritableDb, ArchiveDb, LastRotatedLedger"
84 " FROM DbState WHERE Key = 1;",
94 session <<
"UPDATE DbState"
95 " SET WritableDb = :writableDb,"
96 " ArchiveDb = :archiveDb,"
97 " LastRotatedLedger = :lastRotated"
106 session <<
"UPDATE DbState SET LastRotatedLedger = :seq"
Holds unparsed configuration information.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
LedgerIndex getCanDelete(soci::session &session)
getCanDelete Returns the ledger sequence which can be deleted.
std::uint32_t LedgerIndex
A ledger index.
SavedState getSavedState(soci::session &session)
getSavedState Returns the saved state.
void setSavedState(soci::session &session, SavedState const &state)
setSavedState Saves the given state.
void initStateDB(soci::session &session, BasicConfig const &config, std::string const &dbName)
initStateDB Opens a session with the State database.
@ open
We haven't closed our ledger yet, but others might have.
LedgerIndex setCanDelete(soci::session &session, LedgerIndex canDelete)
setCanDelete Updates the ledger sequence which can be deleted.
void setLastRotated(soci::session &session, LedgerIndex seq)
setLastRotated Updates the last rotated ledger sequence.