chore: rename data managers to just managers
This commit is contained in:
@@ -7,11 +7,11 @@ use snafu::{ResultExt as _, Snafu};
|
|||||||
use crate::{OperatorExt, bot_capnp, option_ext::OptionExt as _};
|
use crate::{OperatorExt, bot_capnp, option_ext::OptionExt as _};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct BotDataManager {
|
pub struct BotManager {
|
||||||
operator: Operator,
|
operator: Operator,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BotDataManager {
|
impl BotManager {
|
||||||
pub fn new(operator: Operator) -> Self {
|
pub fn new(operator: Operator) -> Self {
|
||||||
Self { operator }
|
Self { operator }
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ pub enum WithError {
|
|||||||
DeserializeError { source: capnp::Error },
|
DeserializeError { source: capnp::Error },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BotDataManager {
|
impl BotManager {
|
||||||
pub async fn with<R>(
|
pub async fn with<R>(
|
||||||
&self,
|
&self,
|
||||||
f: impl FnOnce(bot_capnp::bot::Reader<'_>) -> R,
|
f: impl FnOnce(bot_capnp::bot::Reader<'_>) -> R,
|
||||||
@@ -101,7 +101,7 @@ pub enum UpdateError {
|
|||||||
FinalizeError { source: std::io::Error },
|
FinalizeError { source: std::io::Error },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BotDataManager {
|
impl BotManager {
|
||||||
pub async fn update<R>(
|
pub async fn update<R>(
|
||||||
&self,
|
&self,
|
||||||
f: impl FnOnce(bot_capnp::bot::Builder<'_>) -> R,
|
f: impl FnOnce(bot_capnp::bot::Builder<'_>) -> R,
|
||||||
|
|||||||
22
src/call.rs
22
src/call.rs
@@ -1,7 +1,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
OneToManyUniqueBTreeMap, UserDataManager,
|
OneToManyUniqueBTreeMap, UserManager,
|
||||||
option_ext::OptionExt as _,
|
option_ext::OptionExt as _,
|
||||||
recording_data::{Clip, Recording, RecordingData, RecordingDataManager},
|
recording_data::{Clip, Recording, RecordingData, RecordingManager},
|
||||||
user_capnp::user::Consent,
|
user_capnp::user::Consent,
|
||||||
user_data::RECORD_IF_CONSENT_UNSPECIFIED,
|
user_data::RECORD_IF_CONSENT_UNSPECIFIED,
|
||||||
};
|
};
|
||||||
@@ -26,7 +26,7 @@ struct Handler {
|
|||||||
start_instant: Instant,
|
start_instant: Instant,
|
||||||
start_utc: UtcDateTime,
|
start_utc: UtcDateTime,
|
||||||
|
|
||||||
recording_data_manager: RecordingDataManager,
|
recording_manager: RecordingManager,
|
||||||
|
|
||||||
guild_id: Id<GuildMarker>,
|
guild_id: Id<GuildMarker>,
|
||||||
channel_id: Id<ChannelMarker>,
|
channel_id: Id<ChannelMarker>,
|
||||||
@@ -36,7 +36,7 @@ struct Handler {
|
|||||||
audio_channels: u16,
|
audio_channels: u16,
|
||||||
audio_sample_rate: u32,
|
audio_sample_rate: u32,
|
||||||
|
|
||||||
user_data_manager: UserDataManager,
|
user_manager: UserManager,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
@@ -73,7 +73,7 @@ impl EventHandler for Handler {
|
|||||||
if let Some(pcm) = &voice_data.decoded_voice {
|
if let Some(pcm) = &voice_data.decoded_voice {
|
||||||
let may_record = user_id
|
let may_record = user_id
|
||||||
.map_async(|user_id| {
|
.map_async(|user_id| {
|
||||||
self.user_data_manager
|
self.user_manager
|
||||||
.with(user_id, |user_data| {
|
.with(user_id, |user_data| {
|
||||||
user_data.get_voice_recording_consent().unwrap()
|
user_data.get_voice_recording_consent().unwrap()
|
||||||
})
|
})
|
||||||
@@ -133,7 +133,7 @@ impl EventHandler for Handler {
|
|||||||
|
|
||||||
tracing::info!("going to write the audio shortly");
|
tracing::info!("going to write the audio shortly");
|
||||||
|
|
||||||
let recording_data_manager = self.recording_data_manager.clone();
|
let recording_manager = self.recording_manager.clone();
|
||||||
let samples = pcm.clone();
|
let samples = pcm.clone();
|
||||||
|
|
||||||
let recording_data = RecordingData {
|
let recording_data = RecordingData {
|
||||||
@@ -143,7 +143,7 @@ impl EventHandler for Handler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
recording_data_manager
|
recording_manager
|
||||||
.write(&recording, recording_data)
|
.write(&recording, recording_data)
|
||||||
.await
|
.await
|
||||||
.expect("TODO");
|
.expect("TODO");
|
||||||
@@ -175,9 +175,9 @@ pub async fn join_and_record(
|
|||||||
audio_channels: Channels,
|
audio_channels: Channels,
|
||||||
audio_sample_rate: SampleRate,
|
audio_sample_rate: SampleRate,
|
||||||
guild_id: Id<GuildMarker>,
|
guild_id: Id<GuildMarker>,
|
||||||
recording_data_manager: RecordingDataManager,
|
recording_manager: RecordingManager,
|
||||||
songbird: &Songbird,
|
songbird: &Songbird,
|
||||||
user_data_manager: UserDataManager,
|
user_manager: UserManager,
|
||||||
voice_channel_id: Id<ChannelMarker>,
|
voice_channel_id: Id<ChannelMarker>,
|
||||||
) -> Result<(), songbird::error::JoinError> {
|
) -> Result<(), songbird::error::JoinError> {
|
||||||
let start_instant = Instant::now();
|
let start_instant = Instant::now();
|
||||||
@@ -190,7 +190,7 @@ pub async fn join_and_record(
|
|||||||
let handler = Handler {
|
let handler = Handler {
|
||||||
start_instant,
|
start_instant,
|
||||||
start_utc,
|
start_utc,
|
||||||
recording_data_manager,
|
recording_manager,
|
||||||
guild_id,
|
guild_id,
|
||||||
channel_id: voice_channel_id,
|
channel_id: voice_channel_id,
|
||||||
known_ssrcs: Default::default(),
|
known_ssrcs: Default::default(),
|
||||||
@@ -198,7 +198,7 @@ pub async fn join_and_record(
|
|||||||
audio_channels,
|
audio_channels,
|
||||||
audio_sample_rate,
|
audio_sample_rate,
|
||||||
|
|
||||||
user_data_manager,
|
user_manager,
|
||||||
};
|
};
|
||||||
|
|
||||||
let call = songbird.get_or_insert(guild_id);
|
let call = songbird.get_or_insert(guild_id);
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
|
|
||||||
if is_bot_owner {
|
if is_bot_owner {
|
||||||
let heat_script_description = state
|
let heat_script_description = state
|
||||||
.bot_data_manager
|
.bot_manager
|
||||||
.with(|bot_data| {
|
.with(|bot_data| {
|
||||||
let heat_script_option = bot_data.has_heat_script().then(|| {
|
let heat_script_option = bot_data.has_heat_script().then(|| {
|
||||||
bot_data
|
bot_data
|
||||||
@@ -118,11 +118,11 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
.await
|
.await
|
||||||
.expect("TODO");
|
.expect("TODO");
|
||||||
|
|
||||||
let mut user_id_stream = state.user_data_manager.list().await.expect("TODO");
|
let mut user_id_stream = state.user_manager.list().await.expect("TODO");
|
||||||
|
|
||||||
while let Some(user_id) = user_id_stream.try_next().await.expect("TODO") {
|
while let Some(user_id) = user_id_stream.try_next().await.expect("TODO") {
|
||||||
let (consent, notification_script) = state
|
let (consent, notification_script) = state
|
||||||
.user_data_manager
|
.user_manager
|
||||||
.with(user_id, |user_data| {
|
.with(user_id, |user_data| {
|
||||||
let consent = user_data.get_voice_recording_consent().unwrap();
|
let consent = user_data.get_voice_recording_consent().unwrap();
|
||||||
let notification_script = user_data.has_notification_script().then_some(
|
let notification_script = user_data.has_notification_script().then_some(
|
||||||
|
|||||||
@@ -123,9 +123,9 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
.audio_channels(state.audio_channels)
|
.audio_channels(state.audio_channels)
|
||||||
.audio_sample_rate(state.audio_sample_rate)
|
.audio_sample_rate(state.audio_sample_rate)
|
||||||
.guild_id(guild_id)
|
.guild_id(guild_id)
|
||||||
.recording_data_manager(state.recording_data_manager)
|
.recording_manager(state.recording_manager)
|
||||||
.songbird(&state.songbird)
|
.songbird(&state.songbird)
|
||||||
.user_data_manager(state.user_data_manager)
|
.user_manager(state.user_manager)
|
||||||
.voice_channel_id(voice_channel_id)
|
.voice_channel_id(voice_channel_id)
|
||||||
.call()
|
.call()
|
||||||
.await
|
.await
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ use twilight_model::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
BotDataManager, GuildVoiceChannelToTextChannel, UserDataManager, VCsSender,
|
BotManager, GuildVoiceChannelToTextChannel, UserManager, VCsSender,
|
||||||
recording_data::RecordingDataManager, render_data::RenderDataManager,
|
recording_data::RecordingManager, render_data::RenderManager,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub mod info;
|
pub mod info;
|
||||||
@@ -31,7 +31,7 @@ pub mod render;
|
|||||||
pub struct State {
|
pub struct State {
|
||||||
pub audio_channels: Channels,
|
pub audio_channels: Channels,
|
||||||
pub audio_sample_rate: SampleRate,
|
pub audio_sample_rate: SampleRate,
|
||||||
pub bot_data_manager: BotDataManager,
|
pub bot_manager: BotManager,
|
||||||
pub cancellation_token: CancellationToken,
|
pub cancellation_token: CancellationToken,
|
||||||
pub discord_application_id: Id<ApplicationMarker>,
|
pub discord_application_id: Id<ApplicationMarker>,
|
||||||
pub discord_bot_owner_user_id: Id<UserMarker>,
|
pub discord_bot_owner_user_id: Id<UserMarker>,
|
||||||
@@ -44,10 +44,10 @@ pub struct State {
|
|||||||
pub discord_opt_out_command_name: Arc<str>,
|
pub discord_opt_out_command_name: Arc<str>,
|
||||||
pub discord_user_id: Id<UserMarker>,
|
pub discord_user_id: Id<UserMarker>,
|
||||||
pub discord_voice_channel_corresponding_text_channel: Arc<GuildVoiceChannelToTextChannel>,
|
pub discord_voice_channel_corresponding_text_channel: Arc<GuildVoiceChannelToTextChannel>,
|
||||||
pub recording_data_manager: RecordingDataManager,
|
pub recording_manager: RecordingManager,
|
||||||
pub render_data_manager: RenderDataManager,
|
pub render_manager: RenderManager,
|
||||||
pub songbird: Arc<Songbird>,
|
pub songbird: Arc<Songbird>,
|
||||||
pub user_data_manager: UserDataManager,
|
pub user_manager: UserManager,
|
||||||
pub vcs_sender: VCsSender,
|
pub vcs_sender: VCsSender,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let previous_consent = state
|
let previous_consent = state
|
||||||
.user_data_manager
|
.user_manager
|
||||||
.update(user_id, |mut user_data| {
|
.update(user_id, |mut user_data| {
|
||||||
let previous_consent = user_data
|
let previous_consent = user_data
|
||||||
.reborrow()
|
.reborrow()
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let previous_consent = state
|
let previous_consent = state
|
||||||
.user_data_manager
|
.user_manager
|
||||||
.update(user_id, |mut user_data| {
|
.update(user_id, |mut user_data| {
|
||||||
let previous_consent = user_data
|
let previous_consent = user_data
|
||||||
.reborrow()
|
.reborrow()
|
||||||
|
|||||||
@@ -296,13 +296,13 @@ pub async fn handle(state: State, interaction: Interaction) {
|
|||||||
|
|
||||||
let mut recordings =
|
let mut recordings =
|
||||||
state
|
state
|
||||||
.recording_data_manager
|
.recording_manager
|
||||||
.between_in_vc(start, end, guild_id, voice_channel_id);
|
.between_in_vc(start, end, guild_id, voice_channel_id);
|
||||||
|
|
||||||
while let Some(recording) = recordings.try_next().await.expect("TODO") {
|
while let Some(recording) = recordings.try_next().await.expect("TODO") {
|
||||||
tracing::debug!(?recording);
|
tracing::debug!(?recording);
|
||||||
let recording_data = state
|
let recording_data = state
|
||||||
.recording_data_manager
|
.recording_manager
|
||||||
.read(&recording)
|
.read(&recording)
|
||||||
.await
|
.await
|
||||||
.expect("TODO");
|
.expect("TODO");
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use twilight_model::id::{
|
|||||||
use twilight_util::builder::embed::EmbedBuilder;
|
use twilight_util::builder::embed::EmbedBuilder;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
BotDataManager, OneToManyUniqueBTreeMap, State, UserInVCData, bot_data,
|
BotManager, OneToManyUniqueBTreeMap, State, UserInVCData, bot_data,
|
||||||
call::join_and_record,
|
call::join_and_record,
|
||||||
track_vcs::VCsInGuild,
|
track_vcs::VCsInGuild,
|
||||||
vc_user::{Camera, Headphone, Microphone, Stream},
|
vc_user::{Camera, Headphone, Microphone, Stream},
|
||||||
@@ -41,7 +41,7 @@ pub async fn heat_seek(state: State) {
|
|||||||
|
|
||||||
tokio::spawn(
|
tokio::spawn(
|
||||||
evaluate_heat()
|
evaluate_heat()
|
||||||
.bot_data_manager(state.bot_data_manager.clone())
|
.bot_manager(state.bot_manager.clone())
|
||||||
.bot_owner_user_id(state.discord_bot_owner_user_id)
|
.bot_owner_user_id(state.discord_bot_owner_user_id)
|
||||||
.bot_user_id(state.discord_user_id)
|
.bot_user_id(state.discord_user_id)
|
||||||
.cancellation_token(state.cancellation_token.clone())
|
.cancellation_token(state.cancellation_token.clone())
|
||||||
@@ -110,9 +110,9 @@ async fn get_heat(
|
|||||||
users_in_vc: &BTreeMap<Id<UserMarker>, UserInVCData>,
|
users_in_vc: &BTreeMap<Id<UserMarker>, UserInVCData>,
|
||||||
bot_user_id: Id<UserMarker>,
|
bot_user_id: Id<UserMarker>,
|
||||||
bot_owner_user_id: Id<UserMarker>,
|
bot_owner_user_id: Id<UserMarker>,
|
||||||
bot_data_manager: &BotDataManager,
|
bot_manager: &BotManager,
|
||||||
) -> Result<Heat, GetHeatError> {
|
) -> Result<Heat, GetHeatError> {
|
||||||
let heat_script = bot_data_manager
|
let heat_script = bot_manager
|
||||||
.with(|bot_data| {
|
.with(|bot_data| {
|
||||||
bot_data.has_heat_script().then(|| {
|
bot_data.has_heat_script().then(|| {
|
||||||
bot_data
|
bot_data
|
||||||
@@ -185,7 +185,7 @@ async fn get_heat(
|
|||||||
#[bon::builder]
|
#[bon::builder]
|
||||||
#[tracing::instrument(skip(vcs_in_guild_watcher, channel_heat_sender))]
|
#[tracing::instrument(skip(vcs_in_guild_watcher, channel_heat_sender))]
|
||||||
async fn evaluate_heat(
|
async fn evaluate_heat(
|
||||||
bot_data_manager: BotDataManager,
|
bot_manager: BotManager,
|
||||||
bot_owner_user_id: Id<UserMarker>,
|
bot_owner_user_id: Id<UserMarker>,
|
||||||
bot_user_id: Id<UserMarker>,
|
bot_user_id: Id<UserMarker>,
|
||||||
cancellation_token: CancellationToken,
|
cancellation_token: CancellationToken,
|
||||||
@@ -199,12 +199,12 @@ async fn evaluate_heat(
|
|||||||
let channel_heat_results: BTreeMap<_, _> = {
|
let channel_heat_results: BTreeMap<_, _> = {
|
||||||
FuturesUnordered::from_iter((&*vcs_in_guild).into_iter().map(
|
FuturesUnordered::from_iter((&*vcs_in_guild).into_iter().map(
|
||||||
|(&channel_id, users_in_vc)| {
|
|(&channel_id, users_in_vc)| {
|
||||||
let bot_data_manager = bot_data_manager.clone();
|
let bot_manager = bot_manager.clone();
|
||||||
async move {
|
async move {
|
||||||
(
|
(
|
||||||
channel_id,
|
channel_id,
|
||||||
get_heat()
|
get_heat()
|
||||||
.bot_data_manager(&bot_data_manager)
|
.bot_manager(&bot_manager)
|
||||||
.bot_owner_user_id(bot_owner_user_id)
|
.bot_owner_user_id(bot_owner_user_id)
|
||||||
.bot_user_id(bot_user_id)
|
.bot_user_id(bot_user_id)
|
||||||
.users_in_vc(users_in_vc)
|
.users_in_vc(users_in_vc)
|
||||||
@@ -326,9 +326,9 @@ async fn follow_hottest_vc(
|
|||||||
.audio_channels(state.audio_channels)
|
.audio_channels(state.audio_channels)
|
||||||
.audio_sample_rate(state.audio_sample_rate)
|
.audio_sample_rate(state.audio_sample_rate)
|
||||||
.guild_id(guild_id)
|
.guild_id(guild_id)
|
||||||
.recording_data_manager(state.recording_data_manager.clone())
|
.recording_manager(state.recording_manager.clone())
|
||||||
.songbird(&state.songbird)
|
.songbird(&state.songbird)
|
||||||
.user_data_manager(state.user_data_manager.clone())
|
.user_manager(state.user_manager.clone())
|
||||||
.voice_channel_id(hottest_vc)
|
.voice_channel_id(hottest_vc)
|
||||||
.call()
|
.call()
|
||||||
.await
|
.await
|
||||||
|
|||||||
@@ -17,16 +17,16 @@ capnp::generated_code!(mod bot_capnp);
|
|||||||
capnp::generated_code!(mod user_capnp);
|
capnp::generated_code!(mod user_capnp);
|
||||||
shadow_rs::shadow!(build_info);
|
shadow_rs::shadow!(build_info);
|
||||||
|
|
||||||
pub use bot_data::BotDataManager;
|
pub use bot_data::BotManager;
|
||||||
pub use command::{Router as CommandRouter, State, all as all_commands};
|
pub use command::{Router as CommandRouter, State, all as all_commands};
|
||||||
pub use heat_seek::heat_seek;
|
pub use heat_seek::heat_seek;
|
||||||
pub use one_to_many::OneToManyUniqueBTreeMap;
|
pub use one_to_many::OneToManyUniqueBTreeMap;
|
||||||
pub use one_to_many_with_data::OneToManyUniqueBTreeMapWithData;
|
pub use one_to_many_with_data::OneToManyUniqueBTreeMapWithData;
|
||||||
pub use one_to_one::OneToOneBTreeMap;
|
pub use one_to_one::OneToOneBTreeMap;
|
||||||
pub use operator_ext::OperatorExt;
|
pub use operator_ext::OperatorExt;
|
||||||
pub use recording_data::RecordingDataManager;
|
pub use recording_data::RecordingManager;
|
||||||
pub use render_data::RenderDataManager;
|
pub use render_data::RenderManager;
|
||||||
pub use storage::Storage;
|
pub use storage::Storage;
|
||||||
pub use track_vcs::{GuildVoiceChannelToTextChannel, VCs, VCsSender, initialize_vcs, update_vcs};
|
pub use track_vcs::{GuildVoiceChannelToTextChannel, VCs, VCsSender, initialize_vcs, update_vcs};
|
||||||
pub use user_data::UserDataManager;
|
pub use user_data::UserManager;
|
||||||
pub use vc_user::{UserInVCData, VoiceStatus};
|
pub use vc_user::{UserInVCData, VoiceStatus};
|
||||||
|
|||||||
22
src/main.rs
22
src/main.rs
@@ -1,8 +1,8 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use fomo_reducer::{
|
use fomo_reducer::{
|
||||||
BotDataManager, CommandRouter, GuildVoiceChannelToTextChannel, RecordingDataManager,
|
BotManager, CommandRouter, GuildVoiceChannelToTextChannel, RecordingManager, RenderManager,
|
||||||
RenderDataManager, State, Storage, UserDataManager, VCsSender, all_commands, command,
|
State, Storage, UserManager, VCsSender, all_commands, command, heat_seek, initialize_vcs,
|
||||||
heat_seek, initialize_vcs, update_vcs,
|
update_vcs,
|
||||||
};
|
};
|
||||||
use secrecy::{ExposeSecret, SecretString};
|
use secrecy::{ExposeSecret, SecretString};
|
||||||
use snafu::{OptionExt, ResultExt, Snafu};
|
use snafu::{OptionExt, ResultExt, Snafu};
|
||||||
@@ -348,10 +348,10 @@ async fn main() -> Result<(), MainError> {
|
|||||||
let render_data = render_data.into_inner();
|
let render_data = render_data.into_inner();
|
||||||
let user_data = user_data.into_inner();
|
let user_data = user_data.into_inner();
|
||||||
|
|
||||||
let bot_data_manager = BotDataManager::new(bot_data);
|
let bot_manager = BotManager::new(bot_data);
|
||||||
let recording_data_manager = RecordingDataManager::new(recording_data);
|
let recording_manager = RecordingManager::new(recording_data);
|
||||||
let render_data_manager = RenderDataManager::new(render_data);
|
let render_manager = RenderManager::new(render_data);
|
||||||
let user_data_manager = UserDataManager::new(user_data);
|
let user_manager = UserManager::new(user_data);
|
||||||
|
|
||||||
let discord_voice_channel_corresponding_text_channel = {
|
let discord_voice_channel_corresponding_text_channel = {
|
||||||
let mut map = GuildVoiceChannelToTextChannel::default();
|
let mut map = GuildVoiceChannelToTextChannel::default();
|
||||||
@@ -372,7 +372,7 @@ async fn main() -> Result<(), MainError> {
|
|||||||
let state = State {
|
let state = State {
|
||||||
audio_channels,
|
audio_channels,
|
||||||
audio_sample_rate,
|
audio_sample_rate,
|
||||||
bot_data_manager,
|
bot_manager,
|
||||||
cancellation_token: cancellation_token.clone(),
|
cancellation_token: cancellation_token.clone(),
|
||||||
discord_application_id,
|
discord_application_id,
|
||||||
discord_bot_owner_user_id,
|
discord_bot_owner_user_id,
|
||||||
@@ -385,10 +385,10 @@ async fn main() -> Result<(), MainError> {
|
|||||||
discord_opt_out_command_name,
|
discord_opt_out_command_name,
|
||||||
discord_user_id,
|
discord_user_id,
|
||||||
discord_voice_channel_corresponding_text_channel,
|
discord_voice_channel_corresponding_text_channel,
|
||||||
recording_data_manager,
|
recording_manager,
|
||||||
render_data_manager,
|
render_manager,
|
||||||
songbird,
|
songbird,
|
||||||
user_data_manager,
|
user_manager,
|
||||||
vcs_sender,
|
vcs_sender,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use twilight_model::id::{
|
|||||||
marker::{ChannelMarker, GuildMarker},
|
marker::{ChannelMarker, GuildMarker},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{ClipEntryError, ListError, Recording, RecordingDataManager};
|
use super::{ClipEntryError, ListError, Recording, RecordingManager};
|
||||||
|
|
||||||
const BUFFER_SIZE: usize = 2048;
|
const BUFFER_SIZE: usize = 2048;
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ pub enum RecordingEntryError {
|
|||||||
ClipEntryError { source: ClipEntryError },
|
ClipEntryError { source: ClipEntryError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub fn between(
|
pub fn between(
|
||||||
&self,
|
&self,
|
||||||
start: UtcDateTime,
|
start: UtcDateTime,
|
||||||
@@ -141,7 +141,7 @@ impl RecordingDataManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub fn between_in_vc(
|
pub fn between_in_vc(
|
||||||
&self,
|
&self,
|
||||||
start: UtcDateTime,
|
start: UtcDateTime,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::{fmt::Display, str::FromStr};
|
|||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
CreateListerSnafu, Day, Guild, Hour, ListError, Microsecond, Minute, Month,
|
CreateListerSnafu, Day, Guild, Hour, ListError, Microsecond, Minute, Month,
|
||||||
RecordingDataManager, Second, User, VoiceChannel, Year, guild, microsecond, second, user,
|
RecordingManager, Second, User, VoiceChannel, Year, guild, microsecond, second, user,
|
||||||
voice_channel,
|
voice_channel,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ pub enum ClipEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn clips(
|
pub async fn clips(
|
||||||
&self,
|
&self,
|
||||||
year: Year,
|
year: Year,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use futures::{TryStream, TryStreamExt as _};
|
|||||||
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
||||||
use std::num::ParseIntError;
|
use std::num::ParseIntError;
|
||||||
|
|
||||||
use super::{CreateListerSnafu, ListError, Month, RecordingDataManager, Year};
|
use super::{CreateListerSnafu, ListError, Month, RecordingManager, Year};
|
||||||
|
|
||||||
pub type Day = u8;
|
pub type Day = u8;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ pub enum DayEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn days(
|
pub async fn days(
|
||||||
&self,
|
&self,
|
||||||
year: Year,
|
year: Year,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use futures::{TryStream, TryStreamExt as _};
|
|||||||
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
||||||
use std::num::ParseIntError;
|
use std::num::ParseIntError;
|
||||||
|
|
||||||
use super::{CreateListerSnafu, Day, ListError, Month, RecordingDataManager, Year};
|
use super::{CreateListerSnafu, Day, ListError, Month, RecordingManager, Year};
|
||||||
|
|
||||||
pub type Hour = u8;
|
pub type Hour = u8;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ pub enum HourEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn hours(
|
pub async fn hours(
|
||||||
&self,
|
&self,
|
||||||
year: Year,
|
year: Year,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use futures::{TryStream, TryStreamExt as _};
|
|||||||
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
||||||
use std::num::ParseIntError;
|
use std::num::ParseIntError;
|
||||||
|
|
||||||
use super::{CreateListerSnafu, Day, Hour, ListError, Month, RecordingDataManager, Year};
|
use super::{CreateListerSnafu, Day, Hour, ListError, Month, RecordingManager, Year};
|
||||||
|
|
||||||
pub type Minute = u8;
|
pub type Minute = u8;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ pub enum MinuteEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn minutes(
|
pub async fn minutes(
|
||||||
&self,
|
&self,
|
||||||
year: Year,
|
year: Year,
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ use voice_channel::VoiceChannel;
|
|||||||
use year::Year;
|
use year::Year;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct RecordingDataManager {
|
pub struct RecordingManager {
|
||||||
operator: Operator,
|
operator: Operator,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub fn new(operator: Operator) -> Self {
|
pub fn new(operator: Operator) -> Self {
|
||||||
Self { operator }
|
Self { operator }
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ pub struct RecordingData {
|
|||||||
pub samples: Vec<i16>,
|
pub samples: Vec<i16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn write(
|
pub async fn write(
|
||||||
&self,
|
&self,
|
||||||
recording: &Recording,
|
recording: &Recording,
|
||||||
@@ -92,7 +92,7 @@ impl RecordingDataManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn read(
|
pub async fn read(
|
||||||
&self,
|
&self,
|
||||||
recording: &Recording,
|
recording: &Recording,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use futures::{TryStream, TryStreamExt as _};
|
use futures::{TryStream, TryStreamExt as _};
|
||||||
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
||||||
|
|
||||||
use super::{CreateListerSnafu, ListError, RecordingDataManager, Year};
|
use super::{CreateListerSnafu, ListError, RecordingManager, Year};
|
||||||
|
|
||||||
pub use time::Month;
|
pub use time::Month;
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ pub enum MonthEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn months(
|
pub async fn months(
|
||||||
&self,
|
&self,
|
||||||
year: Year,
|
year: Year,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use futures::{TryStream, TryStreamExt as _};
|
|||||||
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
use snafu::{OptionExt as _, ResultExt as _, Snafu};
|
||||||
use std::num::ParseIntError;
|
use std::num::ParseIntError;
|
||||||
|
|
||||||
use super::{CreateListerSnafu, ListError, RecordingDataManager};
|
use super::{CreateListerSnafu, ListError, RecordingManager};
|
||||||
|
|
||||||
pub type Year = i32;
|
pub type Year = i32;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ pub enum YearEntryError {
|
|||||||
ParseError { source: TakeError },
|
ParseError { source: TakeError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RecordingDataManager {
|
impl RecordingManager {
|
||||||
pub async fn years(
|
pub async fn years(
|
||||||
&self,
|
&self,
|
||||||
) -> Result<impl TryStream<Ok = Year, Error = YearEntryError> + Unpin, ListError> {
|
) -> Result<impl TryStream<Ok = Year, Error = YearEntryError> + Unpin, ListError> {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use opendal::Operator;
|
use opendal::Operator;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct RenderDataManager {
|
pub struct RenderManager {
|
||||||
operator: Operator,
|
operator: Operator,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RenderDataManager {
|
impl RenderManager {
|
||||||
pub fn new(operator: Operator) -> Self {
|
pub fn new(operator: Operator) -> Self {
|
||||||
Self { operator }
|
Self { operator }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ use crate::{OperatorExt, option_ext::OptionExt as _, user_capnp};
|
|||||||
pub const RECORD_IF_CONSENT_UNSPECIFIED: bool = true;
|
pub const RECORD_IF_CONSENT_UNSPECIFIED: bool = true;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct UserDataManager {
|
pub struct UserManager {
|
||||||
operator: Operator,
|
operator: Operator,
|
||||||
cache: Cache<Id<UserMarker>, Bytes>,
|
cache: Cache<Id<UserMarker>, Bytes>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
pub fn new(operator: Operator) -> Self {
|
pub fn new(operator: Operator) -> Self {
|
||||||
Self {
|
Self {
|
||||||
operator,
|
operator,
|
||||||
@@ -83,7 +83,7 @@ pub enum EntryError {
|
|||||||
ParsePathError { source: ParsePathError },
|
ParsePathError { source: ParsePathError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
pub async fn list(
|
pub async fn list(
|
||||||
&self,
|
&self,
|
||||||
) -> Result<impl TryStream<Ok = Id<UserMarker>, Error = EntryError> + Unpin, ListError> {
|
) -> Result<impl TryStream<Ok = Id<UserMarker>, Error = EntryError> + Unpin, ListError> {
|
||||||
@@ -111,7 +111,7 @@ pub enum ReadError {
|
|||||||
DecompressionError { source: std::io::Error },
|
DecompressionError { source: std::io::Error },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
async fn read(&self, id: Id<UserMarker>) -> Result<Bytes, ReadError> {
|
async fn read(&self, id: Id<UserMarker>) -> Result<Bytes, ReadError> {
|
||||||
self.cache
|
self.cache
|
||||||
.try_get_with::<_, ReadError>(id, async {
|
.try_get_with::<_, ReadError>(id, async {
|
||||||
@@ -168,7 +168,7 @@ pub enum WriteError {
|
|||||||
FinalizeError { source: std::io::Error },
|
FinalizeError { source: std::io::Error },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
async fn write(&self, id: Id<UserMarker>, bytes: Bytes) -> Result<(), WriteError> {
|
async fn write(&self, id: Id<UserMarker>, bytes: Bytes) -> Result<(), WriteError> {
|
||||||
let path = path(id);
|
let path = path(id);
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ pub enum WithError {
|
|||||||
DeserializeError { source: capnp::Error },
|
DeserializeError { source: capnp::Error },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
pub async fn with<R>(
|
pub async fn with<R>(
|
||||||
&self,
|
&self,
|
||||||
id: Id<UserMarker>,
|
id: Id<UserMarker>,
|
||||||
@@ -245,7 +245,7 @@ pub enum UpdateError {
|
|||||||
WriteError { source: WriteError },
|
WriteError { source: WriteError },
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserDataManager {
|
impl UserManager {
|
||||||
pub async fn update<R>(
|
pub async fn update<R>(
|
||||||
&self,
|
&self,
|
||||||
id: Id<UserMarker>,
|
id: Id<UserMarker>,
|
||||||
|
|||||||
Reference in New Issue
Block a user