Skip to content

Commit d4f8452

Browse files
committed
WIP: feat: Project restructure
1 parent 27e9f02 commit d4f8452

23 files changed

Lines changed: 238 additions & 278 deletions

Cargo.lock

Lines changed: 34 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
2-
name = "discord-bot"
3-
description = "A WASI plugin based Discord bot, configurable through YAML."
2+
name = "wbps"
3+
description = "WASM based plugin services."
44
version = "0.1.0"
55
authors = ["Eduard Smet <contact@celarye.dev>"]
66
license = "GPL-3.0-or-later"

src/config.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ use indexmap::IndexMap;
77
use serde::Deserialize;
88
use tracing::{error, info};
99

10-
use crate::plugins::ConfigPlugin;
10+
use crate::config::plugins::ConfigPlugin;
11+
12+
pub mod plugins;
1113

1214
#[derive(Deserialize)]
1315
pub struct Config {

src/config/plugins.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use std::collections::HashMap;
2+
3+
use serde::Deserialize;
4+
use sonic_rs::Value;
5+
6+
use crate::config::plugins::permissions::ConfigPluginPermissions;
7+
8+
pub mod permissions;
9+
10+
#[derive(Deserialize)]
11+
pub struct ConfigPlugin {
12+
pub plugin: String,
13+
pub cache: Option<bool>,
14+
pub permissions: ConfigPluginPermissions,
15+
pub environment: Option<HashMap<String, String>>,
16+
pub settings: Option<Value>,
17+
}

src/config/plugins/permissions.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use serde::{Deserialize, Serialize};
2+
3+
#[derive(Deserialize, Serialize)]
4+
pub struct ConfigPluginPermissions {
5+
#[serde(default)]
6+
pub core: Vec<ConfigSupportedCoreRegistrations>,
7+
#[serde(default)]
8+
pub job_scheduler: Vec<ConfigSupportedJobSchedulerRegistrations>,
9+
#[serde(default)]
10+
pub discord: Vec<ConfigSupportedDiscordRegistrations>,
11+
}
12+
13+
#[derive(Deserialize, PartialEq, Serialize)]
14+
#[serde(untagged)]
15+
pub enum ConfigSupportedCoreRegistrations {
16+
DependencyFunctions,
17+
Shutdown,
18+
}
19+
20+
#[derive(Deserialize, PartialEq, Serialize)]
21+
#[serde(untagged)]
22+
pub enum ConfigSupportedJobSchedulerRegistrations {
23+
ScheduledJobs,
24+
}
25+
26+
#[derive(Deserialize, PartialEq, Serialize)]
27+
#[serde(untagged)]
28+
pub enum ConfigSupportedDiscordRegistrations {
29+
MessageCreate,
30+
InteractionCreate,
31+
ThreadCreate,
32+
ThreadDelete,
33+
ThreadListSync,
34+
ThreadMemberUpdate,
35+
ThreadMembersUpdate,
36+
ThreadUpdate,
37+
}

src/discord/events.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use twilight_model::application::interaction::InteractionData;
1010

1111
use crate::{
1212
discord::DiscordBotClient,
13-
plugins::discord_bot::plugin::discord_export_types::DiscordEvents,
13+
runtime::plugins::exports::wbps::plugin::discord_export_functions::DiscordEvents,
1414
utils::channels::{CoreMessages, RuntimeMessages, RuntimeMessagesDiscord},
1515
};
1616

src/discord/interactions.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,19 @@ use twilight_model::{
1414
},
1515
};
1616

17-
use crate::{discord::DiscordBotClient, plugins::PluginRegistrationRequestsApplicationCommand};
17+
use crate::discord::DiscordBotClient;
1818

1919
impl DiscordBotClient {
2020
pub async fn application_command_registrations(
2121
http_client: Arc<Client>,
22-
discord_application_command_registration_request: Vec<
23-
PluginRegistrationRequestsApplicationCommand,
24-
>,
22+
discord_application_command_registration_request: Vec<Vec<u8>>,
2523
) -> Result<(Vec<String>, Vec<String>)> {
2624
let mut discord_commands = HashMap::new();
2725

2826
let mut commands = HashMap::new();
2927

3028
for command in discord_application_command_registration_request {
31-
let command_data = match sonic_rs::from_slice::<Command>(&command.data) {
29+
let command_data = match sonic_rs::from_slice::<Command>(&command) {
3230
Ok(command) => command,
3331
Err(err) => {
3432
error!(

src/discord/requests.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ use twilight_model::gateway::{
1717

1818
use crate::{
1919
discord::DiscordBotClient,
20-
plugins::discord_bot::plugin::{
21-
discord_import_functions::{DiscordRequests, DiscordResponses},
22-
discord_import_types::Body,
20+
runtime::plugins::wbps::plugin::discord_import_types::{
21+
Body, DiscordRequests, DiscordResponses,
2322
},
2423
};
2524

src/job_scheduler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ impl JobScheduler {
7878
let core_tx = core_tx.clone();
7979

8080
Box::pin(async move {
81-
let _ = core_tx.send(CoreMessages::RuntimeModule(RuntimeMessages::JobScheduler(
81+
let _ = core_tx.send(CoreMessages::Runtime(RuntimeMessages::JobScheduler(
8282
RuntimeMessagesJobScheduler::CallScheduledJob(plugin_id, job_id),
8383
)));
8484
})

src/main.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,20 @@ mod database;
2525
mod discord;
2626
mod http;
2727
mod job_scheduler;
28-
mod plugins;
28+
mod registry;
29+
mod runtime;
2930
mod utils;
3031

3132
use cli::{Cli, CliLogParameters};
3233
use config::Config;
3334
use discord::DiscordBotClient;
3435
use job_scheduler::JobScheduler;
35-
use plugins::{registry, runtime::Runtime};
3636
use utils::{channels::Channels, env::Secrets};
3737

38-
use crate::utils::channels::{ChannelsCore, CoreMessages};
38+
use crate::{
39+
runtime::Runtime,
40+
utils::channels::{ChannelsCore, CoreMessages},
41+
};
3942

4043
#[derive(PartialEq)]
4144
enum Shutdown {
@@ -149,7 +152,7 @@ fn start(database: Database, mut channels_core: ChannelsCore) -> JoinHandle<()>
149152
.discord_bot_client_tx
150153
.send(discord_bot_client_message);
151154
}
152-
CoreMessages::RuntimeModule(runtime_message) => {
155+
CoreMessages::Runtime(runtime_message) => {
153156
channels_core.runtime_tx.send(runtime_message);
154157
}
155158
CoreMessages::Shutdown(shutdown) => todo!(), // TODO: Figure shutdown out

0 commit comments

Comments
 (0)