summaryrefslogtreecommitdiff
path: root/src/events/guild.rs
blob: a677f0439025f8086c2ed496ae513c843ffaecc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::{client::Data, storage};
use storage::settings::Settings;

use anyhow::Result;
use log::{debug, warn};
use poise::serenity_prelude::{Guild, UnavailableGuild};

pub async fn handle_create(guild: &Guild, data: &Data) -> Result<()> {
	if let Some(storage) = &data.storage {
		if storage.guild_settings_exist(&guild.id).await? {
			debug!("Not recreating settings key for {}", guild.id);
			return Ok(());
		}

		let settings = Settings {
			guild_id: guild.id,
			..Default::default()
		};

		warn!("Creating new settings key for {}:\n{settings:#?}", guild.id);
		storage.create_guild_settings(settings).await?;
	} else {
		warn!("Can't create guild settings; no storage backend found!");
	}

	Ok(())
}

pub async fn handle_delete(guild: &UnavailableGuild, data: &Data) -> Result<()> {
	if let Some(storage) = &data.storage {
		storage.delete_guild_settings(&guild.id).await?;
	} else {
		warn!("Can't delete guild settings; no storage backend found!");
	}

	Ok(())
}