Skip to content

Commit beaf536

Browse files
authored
Merge pull request #25 from amfoss/develop
release v1.2.0
2 parents 97a3279 + 8eb84c2 commit beaf536

File tree

10 files changed

+304
-27
lines changed

10 files changed

+304
-27
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ target/
1010
*.pdb
1111

1212
.env
13+
amd.log

Cargo.lock

+127-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ tracing = "0.1.37"
1616
dotenv = "0.15.0"
1717
serenity = { version = "0.12.4", features = ["chrono"] }
1818
poise = "0.6.1"
19+
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }

src/commands.rs

+35-1
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,49 @@ GNU General Public License for more details.
1515
You should have received a copy of the GNU General Public License
1616
along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
*/
18+
use tracing::{info, trace};
19+
use tracing_subscriber::EnvFilter;
20+
1821
use crate::{Context, Data, Error};
1922

2023
#[poise::command(prefix_command)]
2124
async fn amdctl(ctx: Context<'_>) -> Result<(), Error> {
25+
trace!("Running amdctl command");
2226
ctx.say("amD is up and running.").await?;
2327
Ok(())
2428
}
2529

30+
#[poise::command(prefix_command, owners_only)]
31+
async fn set_log_level(ctx: Context<'_>, level: String) -> Result<(), Error> {
32+
trace!("Running set_log_level command");
33+
let data = ctx.data();
34+
let reload_handle = data.log_reload_handle.write().await;
35+
36+
let new_filter = match level.to_lowercase().as_str() {
37+
"trace" => "trace",
38+
"debug" => "debug",
39+
"info" => "info",
40+
"warn" => "warn",
41+
"error" => "error",
42+
_ => {
43+
ctx.say("Invalid log level! Use: trace, debug, info, warn, error")
44+
.await?;
45+
return Ok(());
46+
}
47+
};
48+
49+
if reload_handle.reload(EnvFilter::new(new_filter)).is_ok() {
50+
ctx.say(format!("Log level changed to **{}**", new_filter))
51+
.await?;
52+
info!("Log level changed to {}", new_filter);
53+
} else {
54+
ctx.say("Failed to update log level.").await?;
55+
}
56+
57+
Ok(())
58+
}
59+
2660
/// Returns a vector containg [Poise Commands][`poise::Command`]
2761
pub fn get_commands() -> Vec<poise::Command<Data, Error>> {
28-
vec![amdctl()]
62+
vec![amdctl(), set_log_level()]
2963
}

src/graphql/queries.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ GNU General Public License for more details.
1515
You should have received a copy of the GNU General Public License
1616
along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
*/
18-
use crate::graphql::models::{Member, Streak};
1918
use anyhow::{anyhow, Context};
19+
use tracing::debug;
20+
21+
use crate::graphql::models::{Member, Streak};
2022

2123
pub async fn fetch_members() -> anyhow::Result<Vec<Member>> {
2224
let request_url = std::env::var("ROOT_URL").context("ROOT_URL not found in ENV")?;
@@ -35,6 +37,7 @@ pub async fn fetch_members() -> anyhow::Result<Vec<Member>> {
3537
}
3638
}"#;
3739

40+
debug!("Sending query {}", query);
3841
let response = client
3942
.post(request_url)
4043
.json(&serde_json::json!({"query": query}))
@@ -54,6 +57,7 @@ pub async fn fetch_members() -> anyhow::Result<Vec<Member>> {
5457
.await
5558
.context("Failed to serialize response")?;
5659

60+
debug!("Response: {}", response_json);
5761
let members = response_json
5862
.get("data")
5963
.and_then(|data| data.get("members"))
@@ -85,6 +89,7 @@ pub async fn increment_streak(member: &mut Member) -> anyhow::Result<()> {
8589
member.member_id
8690
);
8791

92+
debug!("Sending mutation {}", mutation);
8893
let response = client
8994
.post(request_url)
9095
.json(&serde_json::json!({"query": mutation}))
@@ -98,6 +103,7 @@ pub async fn increment_streak(member: &mut Member) -> anyhow::Result<()> {
98103
response.status()
99104
));
100105
}
106+
debug!("Response: {:?}", response.text().await);
101107

102108
// Handle the streak vector
103109
if member.streak.is_empty() {
@@ -134,6 +140,7 @@ pub async fn reset_streak(member: &mut Member) -> anyhow::Result<()> {
134140
member.member_id
135141
);
136142

143+
debug!("Sending mutation {}", mutation);
137144
let response = client
138145
.post(&request_url)
139146
.json(&serde_json::json!({ "query": mutation }))
@@ -152,6 +159,7 @@ pub async fn reset_streak(member: &mut Member) -> anyhow::Result<()> {
152159
.json()
153160
.await
154161
.context("Failed to parse response JSON")?;
162+
debug!("Response: {}", response_json);
155163

156164
if let Some(data) = response_json
157165
.get("data")

0 commit comments

Comments
 (0)