droplet 1.3.0
A multipurpose Discord bot with the hacker in mind
Loading...
Searching...
No Matches
LatestEventsRepository.hpp
Go to the documentation of this file.
1/*
2 * (c) Copyright erarnitox.de - All rights reserved
3 * Author: Erarnitox <david@erarnitox.de>
4 *
5 * License: MIT License
6 *
7 * Description:
8 *
9 * Documentation: https://droplet.erarnitox.de/doxygen/html/
10 */
11
12#pragma once
13
14#include <mutex>
15#include <string>
16#include <unordered_map>
17#include <unordered_set>
18
19//-----------------------------------------------------
20//
21//-----------------------------------------------------
23 AlreadyAnnounced, // video id already recorded; do not post
24 Seeded, // first observation for this key; record without posting
25 Claimed, // new video id claimed; caller should post
26 Failed, // DB/connection failure; do not post
27};
28
29//-----------------------------------------------------
30//
31//-----------------------------------------------------
33 private:
34 static std::unordered_map<std::string, std::string> latest_events;
35 static std::unordered_map<std::string, std::unordered_set<std::string>> announced_videos;
36 static std::unordered_map<std::string, bool> active_events;
37 static std::mutex active_events_mutex;
38 static std::mutex latest_events_mutex;
39
40 public:
41 [[nodiscard]] static bool insert(const std::string& key, const std::string& value) noexcept;
42
43 [[nodiscard]] static bool remove(const std::string& key) noexcept;
44
45 [[nodiscard]] static bool exists(const std::string& key, const std::string& value) noexcept;
46
47 [[nodiscard]] static YoutubeClaimResult try_claim_video(const std::string& key,
48 const std::string& video_id,
49 const std::string& title) noexcept;
50
51 [[nodiscard]] static bool load() noexcept;
52
53 static void set_active(const std::string& key, bool active) noexcept;
54
55 [[nodiscard]] static bool is_active(const std::string& key) noexcept;
56};
YoutubeClaimResult
Definition LatestEventsRepository.hpp:22
@ Seeded
Definition LatestEventsRepository.hpp:24
@ AlreadyAnnounced
Definition LatestEventsRepository.hpp:23
@ Claimed
Definition LatestEventsRepository.hpp:25
@ Failed
Definition LatestEventsRepository.hpp:26
Definition LatestEventsRepository.hpp:32
static bool insert(const std::string &key, const std::string &value) noexcept
Definition LatestEventsRepository.cpp:104
static bool load() noexcept
Definition LatestEventsRepository.cpp:204
static bool remove(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:131
static YoutubeClaimResult try_claim_video(const std::string &key, const std::string &video_id, const std::string &title) noexcept
Definition LatestEventsRepository.cpp:162
static bool exists(const std::string &key, const std::string &value) noexcept
Definition LatestEventsRepository.cpp:154
static void set_active(const std::string &key, bool active) noexcept
Definition LatestEventsRepository.cpp:96
static bool is_active(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:86