74 using WriteGuard = std::function<void(sqlite3*,
const std::string& thread_id)>;
82 std::chrono::milliseconds busy_timeout);
84 std::chrono::milliseconds busy_timeout,
85 WriteGuard write_guard);
94 std::optional<Checkpoint>
load_latest(
const std::string& thread_id)
override;
95 std::optional<Checkpoint>
load_by_id(
const std::string&
id)
override;
96 std::vector<Checkpoint>
list(
const std::string& thread_id,
97 int limit = 100)
override;
101 const std::string& parent_checkpoint_id,
104 const std::string& thread_id,
105 const std::string& parent_checkpoint_id)
override;
107 const std::string& parent_checkpoint_id)
override;
111 asio::awaitable<bool> requires_managed_budget_async(std::string thread_id)
override;
113 std::shared_ptr<OwnedManagedBudgetLease> acquire_managed_budget_lease(
114 const ManagedBudgetLeaseScope& scope,
const std::string& expected_checkpoint_id,
115 const std::string& expected_checkpoint_commitment)
override;
116 asio::awaitable<std::shared_ptr<OwnedManagedBudgetLease>> acquire_managed_budget_lease_async(
117 ManagedBudgetLeaseScope scope, std::string expected_checkpoint_id,
118 std::string expected_checkpoint_commitment)
override;
120 const std::shared_ptr<OwnedManagedBudgetLease>& lease,
const std::string& effect_id,
121 std::uint64_t exact_claim_amount,
const std::string& prepared_request_digest)
override;
122 asio::awaitable<ManagedBudgetEffectReceipt> begin_managed_budget_effect_async(
123 std::shared_ptr<OwnedManagedBudgetLease> lease, std::string effect_id,
124 std::uint64_t exact_claim_amount, std::string prepared_request_digest)
override;
125 void settle_managed_budget_effect(
126 const std::shared_ptr<OwnedManagedBudgetLease>& lease,
128 const UsageAccumulator::AuthoritySnapshot& authority)
override;
129 asio::awaitable<void> settle_managed_budget_effect_async(
131 sp::runtime::Result genuine_outcome, UsageAccumulator::AuthoritySnapshot authority)
override;
132 void publish_managed_budget_checkpoint(
133 const std::shared_ptr<OwnedManagedBudgetLease>& lease,
const Checkpoint& checkpoint)
override;
134 asio::awaitable<void> publish_managed_budget_checkpoint_async(
135 std::shared_ptr<OwnedManagedBudgetLease> lease,
Checkpoint checkpoint)
override;
136 void release_managed_budget_lease(
137 const std::shared_ptr<OwnedManagedBudgetLease>& lease)
override;
138 asio::awaitable<void> release_managed_budget_lease_async(
139 std::shared_ptr<OwnedManagedBudgetLease> lease)
override;
152 void ensure_schema();
153 void exec_ddl(
const char* sql);
155 void save_locked(
const Checkpoint& checkpoint);
159 sqlite3* db_ =
nullptr;
160 std::mutex db_mutex_;
161 WriteGuard write_guard_;
std::vector< Checkpoint > list(const std::string &thread_id, int limit=100) override
List checkpoints for a thread, most recently saved first, one entry per ID; the first entry is load_l...