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
8#pragma once
9
10#include <mutex>
11#include <string>
12#include <unordered_map>
13#include <unordered_set>
14
16
23
25 public:
26 explicit LatestEventsRepository(DatabaseExecutor& executor);
27
28 [[nodiscard]] bool insert(const std::string& key, const std::string& value) noexcept;
29 [[nodiscard]] bool remove(const std::string& key) noexcept;
30 [[nodiscard]] bool exists(const std::string& key, const std::string& value) noexcept;
31 [[nodiscard]] YoutubeClaimResult try_claim_video(const std::string& key,
32 const std::string& video_id,
33 const std::string& title) noexcept;
34 [[nodiscard]] YoutubeClaimResult seed_video(const std::string& key,
35 const std::string& video_id,
36 const std::string& title) noexcept;
37 [[nodiscard]] bool has_announced(const std::string& key) noexcept;
38 [[nodiscard]] std::unordered_set<std::string> announced_ids(const std::string& key) noexcept;
39 [[nodiscard]] bool load() noexcept;
40 void set_active(const std::string& key, bool active) noexcept;
41 [[nodiscard]] bool is_active(const std::string& key) noexcept;
42
43 private:
44 [[nodiscard]] YoutubeClaimResult record_video(const std::string& key,
45 const std::string& video_id,
46 const std::string& title,
47 bool allow_announce) noexcept;
48
49 DatabaseExecutor& executor_;
50 std::unordered_map<std::string, std::string> latest_events;
51 std::unordered_map<std::string, std::unordered_set<std::string>> announced_videos;
52 std::unordered_map<std::string, bool> active_events;
53 std::mutex active_events_mutex;
54 std::mutex latest_events_mutex;
55};
YoutubeClaimResult
Definition LatestEventsRepository.hpp:17
@ Seeded
Definition LatestEventsRepository.hpp:19
@ AlreadyAnnounced
Definition LatestEventsRepository.hpp:18
@ Claimed
Definition LatestEventsRepository.hpp:20
@ Failed
Definition LatestEventsRepository.hpp:21
Definition DatabaseExecutor.hpp:14
bool insert(const std::string &key, const std::string &value) noexcept
Definition LatestEventsRepository.cpp:98
bool load() noexcept
Definition LatestEventsRepository.cpp:238
bool remove(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:124
YoutubeClaimResult seed_video(const std::string &key, const std::string &video_id, const std::string &title) noexcept
Definition LatestEventsRepository.cpp:208
YoutubeClaimResult try_claim_video(const std::string &key, const std::string &video_id, const std::string &title) noexcept
Definition LatestEventsRepository.cpp:199
bool has_announced(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:217
bool exists(const std::string &key, const std::string &value) noexcept
Definition LatestEventsRepository.cpp:146
LatestEventsRepository(DatabaseExecutor &executor)
Definition LatestEventsRepository.cpp:77
void set_active(const std::string &key, bool active) noexcept
Definition LatestEventsRepository.cpp:90
bool is_active(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:80
std::unordered_set< std::string > announced_ids(const std::string &key) noexcept
Definition LatestEventsRepository.cpp:226