chore(commands, models): rename commands and model names/imports

This helps with consistency and makes it easier to see what code is actually databse-interaction code and what isn't
This commit is contained in:
Suya1671 2025-06-18 15:16:16 +02:00
parent 8c993f9532
commit 518a6864b7
No known key found for this signature in database
7 changed files with 73 additions and 70 deletions

0
src/commands/alias.rs Normal file
View file

View file

@ -5,18 +5,17 @@ use slack_morphism::prelude::*;
use tracing::{debug, info, trace};
use crate::{
BOT_TOKEN,
commands::members,
fields,
BOT_TOKEN, fields,
models::{
member::{self, Member, View},
system::{ChangeActiveMemberError, System},
self,
member::{self, View},
system::ChangeActiveMemberError,
user,
},
};
#[derive(clap::Subcommand, Debug)]
pub enum Members {
pub enum Member {
/// Adds a new member to your system. Expect a popup to fill in the member info!
Add,
/// Deletes a member from your system. Use the member id from /member list
@ -59,7 +58,7 @@ pub enum CommandError {
Sqlx,
}
impl Members {
impl Member {
#[tracing::instrument(skip_all)]
pub async fn run(
self,
@ -102,9 +101,10 @@ impl Members {
let states = state.read().await;
let user_state = states.get_user_state::<user::State>().unwrap();
let Some(mut system) = System::fetch_by_user_id(&user_state.db, &event.user_id.into())
.await
.change_context(CommandError::Sqlx)?
let Some(mut system) =
models::System::fetch_by_user_id(&user_state.db, &event.user_id.into())
.await
.change_context(CommandError::Sqlx)?
else {
debug!("User has no system configured");
return Ok(SlackCommandEventResponse::new(
@ -183,7 +183,7 @@ impl Members {
fields!(user_id = %user_id.clone());
let Some(system) = System::fetch_by_user_id(&user_state.db, &user_id)
let Some(system) = models::System::fetch_by_user_id(&user_state.db, &user_id)
.await
.change_context(CommandError::Sqlx)?
else {
@ -255,10 +255,11 @@ impl Members {
let user_state = states.get_user_state::<user::State>().unwrap();
let member_id = member::Id::new(member_id);
let Some(system_id) = System::fetch_by_user_id(&user_state.db, &event.user_id.into())
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
let Some(system_id) =
models::System::fetch_by_user_id(&user_state.db, &event.user_id.into())
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
else {
debug!("User has no system configured");
return Ok(SlackCommandEventResponse::new(
@ -270,9 +271,10 @@ impl Members {
fields!(system_id = %system_id);
let Some(member) = Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
let Some(member) =
models::Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
else {
debug!("Member not found");
return Ok(SlackCommandEventResponse::new(
@ -345,7 +347,7 @@ impl Members {
let user_id = user::Id::new(event.user_id);
let member_id = member::Id::new(member_id);
let Some(system_id) = System::fetch_by_user_id(&user_state.db, &user_id)
let Some(system_id) = models::System::fetch_by_user_id(&user_state.db, &user_id)
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
@ -358,9 +360,10 @@ impl Members {
));
};
let Some(member) = Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
let Some(member) =
models::Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
else {
return Ok(SlackCommandEventResponse::new(
SlackMessageContent::new()
@ -370,7 +373,7 @@ impl Members {
let member_id = member.id;
let view = members::View::from(member).create_edit_view(member_id);
let view = member::View::from(member).create_edit_view(member_id);
let view = session
.views_open(&SlackApiViewsOpenRequest::new(

View file

@ -1,17 +1,17 @@
use std::sync::Arc;
mod members;
mod member;
mod system;
mod triggers;
mod trigger;
use axum::{Extension, Json};
use clap::{Parser, error::ErrorKind};
use error_stack::ResultExt;
use members::Members;
use member::Member;
use slack_morphism::prelude::*;
use system::System;
use tracing::{Level, debug, error, trace};
use triggers::Triggers;
use trigger::Trigger;
use crate::fields;
@ -19,11 +19,11 @@ use crate::fields;
#[command(color(clap::ColorChoice::Never))]
enum Command {
#[clap(subcommand)]
Members(Members),
Members(Member),
#[clap(subcommand)]
System(System),
#[clap(subcommand)]
Triggers(Triggers),
Triggers(Trigger),
}
impl Command {

View file

@ -8,7 +8,7 @@ use tracing::{debug, trace};
use crate::{
fields,
models::{system, user},
models::{self, user},
oauth::create_oauth_client,
};
@ -88,7 +88,7 @@ impl System {
fields!(user_id = %&user_id);
trace!("Mapped user ID");
let system = system::System::fetch_by_user_id(&user_state.db, &user_id)
let system = models::System::fetch_by_user_id(&user_state.db, &user_id)
.await
.change_context(CommandError::Sqlx)?;
@ -137,7 +137,7 @@ impl System {
let user_state = states.get_user_state::<user::State>().unwrap();
let Some(system_id) =
system::System::fetch_by_user_id(&user_state.db, &event.user_id.into())
models::System::fetch_by_user_id(&user_state.db, &event.user_id.into())
.await
.change_context(CommandError::Sqlx)?
.map(|s| s.id)
@ -175,7 +175,7 @@ impl System {
let user_state = states.get_user_state::<user::State>().unwrap();
let user_id = user::Id::new(event.user_id);
if let Some(system) = system::System::fetch_by_user_id(&user_state.db, &user_id)
if let Some(system) = models::System::fetch_by_user_id(&user_state.db, &user_id)
.await
.change_context(CommandError::Sqlx)?
{

View file

@ -6,15 +6,11 @@ use tracing::debug;
use crate::{
BOT_TOKEN, fields,
models::{
member::{self, Member},
system::System,
trigger, user,
},
models::{self, member, trigger, user},
};
#[derive(clap::Subcommand, Debug)]
pub enum Triggers {
pub enum Trigger {
/// Adds a new trigger for a member. Expect a popup to fill in the info!
Add {
/// The member to add the trigger for. Use the member id from /member list
@ -45,7 +41,7 @@ pub enum CommandError {
Sqlx,
}
impl Triggers {
impl Trigger {
#[tracing::instrument(skip_all)]
pub async fn run(
self,
@ -81,7 +77,7 @@ impl Triggers {
let member_id = member::Id::new(member_id);
let Some(system_id) =
System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
models::System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
@ -96,10 +92,11 @@ impl Triggers {
fields!(system_id = %system_id);
let Some(member_id) = Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
.map(|member| member.id)
let Some(member_id) =
models::Member::fetch_by_and_trust_id(system_id, member_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?
.map(|member| member.id)
else {
debug!("Member not found");
return Ok(SlackCommandEventResponse::new(
@ -136,7 +133,7 @@ impl Triggers {
let trigger_id = trigger::Id::new(trigger_id);
let Some(system_id) =
System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
models::System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
@ -183,7 +180,7 @@ impl Triggers {
let user_state = states.get_user_state::<user::State>().unwrap();
let Some(system_id) =
System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
models::System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
@ -268,7 +265,7 @@ impl Triggers {
let trigger_id = trigger::Id::new(trigger_id);
let Some(system_id) =
System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
models::System::fetch_by_user_id(&user_state.db, &user::Id::new(event.user_id))
.await
.change_context(CommandError::Sqlx)?
.map(|system| system.id)
@ -297,7 +294,7 @@ impl Triggers {
fields!(trigger_id = %trigger_id);
// Fetch the trigger to edit
let trigger = trigger::Trigger::fetch_by_id(trigger_id, &user_state.db)
let trigger = models::Trigger::fetch_by_id(trigger_id, &user_state.db)
.await
.change_context(CommandError::Sqlx)?;

View file

@ -9,13 +9,7 @@ use tracing::{debug, error, trace};
use crate::{
BOT_TOKEN, fields,
models::{
member::{Member, TriggeredMember},
message::MessageLog,
system::System,
trigger::Type,
user,
},
models::{self, trigger, user},
};
#[derive(thiserror::Error, displaydoc::Display, Debug)]
@ -88,10 +82,13 @@ async fn push_event_callback(
let states = state.read().await;
let user_state = states.get_user_state::<user::State>().unwrap();
MessageLog::delete_by_message_id(message_event.deleted_ts.unwrap().0, &user_state.db)
.await
.change_context(PushEventError::SlackApi)
.attach_printable("Failed to delete message log")
models::MessageLog::delete_by_message_id(
message_event.deleted_ts.unwrap().0,
&user_state.db,
)
.await
.change_context(PushEventError::SlackApi)
.attach_printable("Failed to delete message log")
}
SlackEventCallbackBody::Message(message_event)
if message_event.subtype.is_none()
@ -125,7 +122,7 @@ async fn handle_message(
fields!(user_id = ?&user_id);
let Some(mut system) = System::fetch_by_user_id(&user_state.db, &user_id)
let Some(mut system) = models::System::fetch_by_user_id(&user_state.db, &user_id)
.await
.change_context(PushEventError::SystemFetch)?
else {
@ -185,7 +182,7 @@ async fn handle_message(
// No triggers ran, so check if there's any actively fronting member
if let Some(member_id) = system.active_member_id {
fields!(member = %&member_id);
let Some(member) = Member::fetch_by_id(member_id, &user_state.db)
let Some(member) = models::Member::fetch_by_id(member_id, &user_state.db)
.await
.change_context(PushEventError::MemberFetch)?
else {
@ -216,8 +213,8 @@ async fn rewrite_message(
channel_id: &SlackChannelId,
message_id: SlackTs,
mut content: SlackMessageContent,
member: TriggeredMember,
system: &System,
member: models::TriggeredMember,
system: &models::System,
db: &SqlitePool,
) -> error_stack::Result<(), RewriteMessageError> {
let token = SlackApiToken::new(system.slack_oauth_token.expose().into())
@ -303,7 +300,7 @@ async fn rewrite_message(
.await
.change_context(RewriteMessageError::PostMessage)?;
MessageLog::insert(member.id, res.ts, db)
models::MessageLog::insert(member.id, res.ts, db)
.await
.change_context(RewriteMessageError::MessageLog)?;
@ -317,17 +314,17 @@ async fn rewrite_message(
Ok(())
}
fn rewrite_content(content: &mut SlackMessageContent, member: &TriggeredMember) {
fn rewrite_content(content: &mut SlackMessageContent, member: &models::TriggeredMember) {
debug!("Rewriting message content");
if let Some(text) = &mut content.text {
match member.typ {
Type::Prefix => {
trigger::Type::Prefix => {
if let Some(new_text) = text.strip_prefix(&member.trigger_text) {
*text = new_text.to_string();
}
}
Type::Suffix => {
trigger::Type::Suffix => {
if let Some(new_text) = text.strip_suffix(&member.trigger_text) {
*text = new_text.to_string();
}
@ -344,7 +341,7 @@ fn rewrite_content(content: &mut SlackMessageContent, member: &TriggeredMember)
let first = elements.get_mut(0).unwrap();
if let Some(first_text) = first.pointer_mut("/elements/0/text") {
if member.typ == Type::Prefix {
if member.typ == trigger::Type::Prefix {
if let Some(new_text) = first_text
.as_str()
.and_then(|text| text.strip_prefix(&member.trigger_text))
@ -358,7 +355,7 @@ fn rewrite_content(content: &mut SlackMessageContent, member: &TriggeredMember)
let last = elements.get_mut(len - 1).unwrap();
if let Some(last_text) = last.pointer_mut("/elements/0/text") {
if member.typ == Type::Suffix {
if member.typ == trigger::Type::Suffix {
if let Some(new_text) = last_text
.as_str()
.and_then(|text| text.strip_suffix(&member.trigger_text))

View file

@ -7,6 +7,12 @@ pub mod system;
pub mod trigger;
pub mod user;
pub use alias::Alias;
pub use member::{Member, TriggeredMember};
pub use message::MessageLog;
pub use system::System;
pub use trigger::Trigger;
pub trait Trustability: Send + Sync + Debug {}
/// A trusted/valid ID