mirror of
https://github.com/System-End/plura.git
synced 2026-04-19 20:55:11 +00:00
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:
parent
8c993f9532
commit
518a6864b7
7 changed files with 73 additions and 70 deletions
0
src/commands/alias.rs
Normal file
0
src/commands/alias.rs
Normal 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(
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)?
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)?;
|
||||
|
||||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue