treewide: allow for running w/o storage

This commit is contained in:
seth 2024-03-27 18:55:31 -04:00
parent 827b5a4bd7
commit a9a63f36ad
14 changed files with 174 additions and 90 deletions

View file

@ -1,4 +1,4 @@
use crate::Data;
use crate::{api, Data};
use eyre::Result;
use log::trace;
@ -189,20 +189,15 @@ async fn outdated_launcher(log: &str, data: &Data) -> Result<Issue> {
let version_from_log = captures[0].replace("Prism Launcher version: ", "");
let storage = &data.storage;
let latest_version = if let Ok(version) = storage.get_launcher_version().await {
version
let latest_version = if let Some(storage) = &data.storage {
if let Ok(version) = storage.get_launcher_version().await {
version
} else {
api::github::get_latest_prism_version().await?
}
} else {
let version = data
.octocrab
.repos("PrismLauncher", "PrismLauncher")
.releases()
.get_latest()
.await?
.tag_name;
storage.cache_launcher_version(&version).await?;
version
trace!("Not caching launcher version, as we're running without a storage backend");
api::github::get_latest_prism_version().await?
};
if version_from_log < latest_version {

View file

@ -41,14 +41,16 @@ pub async fn handle(
return Ok(());
}
// detect PK users first to make sure we don't respond to unproxied messages
pluralkit::handle(ctx, new_message, data).await?;
if let Some(storage) = &data.storage {
// detect PK users first to make sure we don't respond to unproxied messages
pluralkit::handle(ctx, new_message, storage).await?;
if data.storage.is_user_plural(new_message.author.id).await?
&& pluralkit::is_message_proxied(new_message).await?
{
debug!("Not replying to unproxied PluralKit message");
return Ok(());
if storage.is_user_plural(new_message.author.id).await?
&& pluralkit::is_message_proxied(new_message).await?
{
debug!("Not replying to unproxied PluralKit message");
return Ok(());
}
}
eta::handle(ctx, new_message).await?;

View file

@ -1,4 +1,4 @@
use crate::{api, Data};
use crate::{api, storage::Storage};
use std::time::Duration;
use eyre::Result;
@ -20,7 +20,7 @@ pub async fn is_message_proxied(message: &Message) -> Result<bool> {
Ok(proxied)
}
pub async fn handle(_: &Context, msg: &Message, data: &Data) -> Result<()> {
pub async fn handle(_: &Context, msg: &Message, storage: &Storage) -> Result<()> {
if msg.webhook_id.is_none() {
return Ok(());
}
@ -37,7 +37,7 @@ pub async fn handle(_: &Context, msg: &Message, data: &Data) -> Result<()> {
sleep(PK_DELAY).await;
if let Ok(sender) = api::pluralkit::get_sender(msg.id).await {
data.storage.store_user_plurality(sender).await?;
storage.store_user_plurality(sender).await?;
}
Ok(())