Skip to content

Commit c07958a

Browse files
committed
WIP: feat: Further plugin API tweaks and integration
1 parent 26da386 commit c07958a

15 files changed

Lines changed: 592 additions & 222 deletions

File tree

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 = "wbps"
3-
description = "WASM based plugin services."
2+
name = "wpbs"
3+
description = "WASM plugin based services."
44
version = "0.1.0"
55
authors = ["Eduard Smet <contact@celarye.dev>"]
66
license = "GPL-3.0-or-later"

src/config/plugins.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ use std::collections::HashMap;
33
use serde::Deserialize;
44
use sonic_rs::Value;
55

6-
use crate::config::plugins::permissions::ConfigPluginPermissions;
6+
use crate::config::plugins::permissions::PluginPermissions;
77

88
pub mod permissions;
99

1010
#[derive(Deserialize)]
1111
pub struct ConfigPlugin {
1212
pub plugin: String,
1313
pub cache: Option<bool>,
14-
pub permissions: ConfigPluginPermissions,
14+
pub permissions: PluginPermissions,
1515
#[serde(default)]
1616
pub environment: HashMap<String, String>,
1717
#[serde(default)]

src/config/plugins/permissions.rs

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,37 @@
11
use serde::{Deserialize, Serialize};
22

33
#[derive(Deserialize, Serialize)]
4-
pub struct ConfigPluginPermissions {
4+
pub struct PluginPermissions {
55
#[serde(default)]
6-
pub core: Vec<ConfigSupportedCoreRegistrations>,
6+
pub core: Vec<PluginPermissionsCore>,
77
#[serde(default)]
8-
pub job_scheduler: Vec<ConfigSupportedJobSchedulerRegistrations>,
8+
pub job_scheduler: Vec<PluginPermissionsJobScheduler>,
99
#[serde(default)]
10-
pub discord: Vec<ConfigSupportedDiscordRegistrations>,
10+
pub discord: PluginPermissionsDiscord,
1111
}
1212

13-
#[derive(Deserialize, PartialEq, Serialize)]
13+
#[derive(Default, Deserialize, Serialize)]
14+
pub struct PluginPermissionsDiscord {
15+
pub events: Vec<PluginPermissionsDiscordEvents>,
16+
pub interactions: Vec<PluginPermissionsDiscordInteractions>,
17+
}
18+
19+
#[derive(Debug, Deserialize, PartialEq, Serialize)]
1420
#[serde(untagged)]
15-
pub enum ConfigSupportedCoreRegistrations {
21+
pub enum PluginPermissionsCore {
1622
DependencyFunctions,
1723
Shutdown,
1824
}
1925

20-
#[derive(Deserialize, PartialEq, Serialize)]
26+
#[derive(Debug, Deserialize, PartialEq, Serialize)]
2127
#[serde(untagged)]
22-
pub enum ConfigSupportedJobSchedulerRegistrations {
28+
pub enum PluginPermissionsJobScheduler {
2329
ScheduledJobs,
2430
}
2531

26-
#[derive(Deserialize, PartialEq, Serialize)]
32+
#[derive(Debug, Deserialize, PartialEq, Serialize)]
2733
#[serde(untagged)]
28-
pub enum ConfigSupportedDiscordRegistrations {
34+
pub enum PluginPermissionsDiscordEvents {
2935
MessageCreate,
3036
InteractionCreate,
3137
ThreadCreate,
@@ -35,3 +41,11 @@ pub enum ConfigSupportedDiscordRegistrations {
3541
ThreadMembersUpdate,
3642
ThreadUpdate,
3743
}
44+
45+
#[derive(Debug, Deserialize, PartialEq, Serialize)]
46+
#[serde(untagged)]
47+
pub enum PluginPermissionsDiscordInteractions {
48+
ApplicationCommands,
49+
MessageComponents,
50+
Modals,
51+
}

src/database.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ pub fn handle_action(database: Database, message: DatabaseMessages) {
3939
DatabaseMessages::Get(keyspace, key, response_sender) => {
4040
response_sender.send(get(database, keyspace, key));
4141
}
42-
DatabaseMessages::GetAll(keyspace, response_sender) => {
43-
response_sender.send(get_all(database, keyspace));
42+
DatabaseMessages::GetAllKeys(keyspace, response_sender) => {
43+
response_sender.send(get_all_keys(database, keyspace));
44+
}
45+
DatabaseMessages::GetAllValues(keyspace, response_sender) => {
46+
response_sender.send(get_all_values(database, keyspace));
4447
}
4548
DatabaseMessages::Insert(keyspace, key, value, response_sender) => {
4649
response_sender.send(insert(database, keyspace, key, value));
@@ -74,7 +77,13 @@ where
7477
Ok(keyspace.range(range))
7578
}
7679

77-
pub fn get_all(database: Database, keyspace: Keyspaces) -> Result<Vec<Slice>> {
80+
pub fn get_all_keys(database: Database, keyspace: Keyspaces) -> Result<Vec<Slice>> {
81+
Ok(range(database, keyspace, Vec::new()..=Vec::new())?
82+
.map(|g| g.key())
83+
.collect::<std::result::Result<Vec<Slice>, fjall::Error>>()?)
84+
}
85+
86+
pub fn get_all_values(database: Database, keyspace: Keyspaces) -> Result<Vec<Slice>> {
7887
Ok(range(database, keyspace, Vec::new()..=Vec::new())?
7988
.map(|g| g.value())
8089
.collect::<std::result::Result<Vec<Slice>, fjall::Error>>()?)

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ async fn main() -> ExitCode {
6161
}
6262
}
6363

64-
ExitCode::from(0)
64+
ExitCode::from(1)
6565
}
6666

6767
async fn run() -> Result<(), ()> {
@@ -97,7 +97,7 @@ async fn run() -> Result<(), ()> {
9797
.await
9898
.map_err(|_| ())?;
9999

100-
let runtime = Runtime::new(channels.runtime.rx);
100+
let runtime = Runtime::new(channels.runtime.core_tx.clone(), channels.runtime.rx);
101101

102102
tasks.push(job_scheduler.start().await.map_err(|_| ())?);
103103

src/registry/plugins.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use semver::Version;
77
use serde::Deserialize;
88
use sonic_rs::Value;
99

10-
use crate::config::plugins::permissions::ConfigPluginPermissions;
10+
use crate::config::plugins::permissions::PluginPermissions;
1111

1212
#[derive(Deserialize)]
1313
#[allow(unused)]
@@ -31,7 +31,7 @@ pub struct AvailablePlugin {
3131
pub id: String,
3232
pub user_id: String,
3333
pub version: Version,
34-
pub permissions: ConfigPluginPermissions,
34+
pub permissions: PluginPermissions,
3535
pub environment: HashMap<String, String>,
3636
pub settings: Value,
3737
}

0 commit comments

Comments
 (0)