add purge action

This commit is contained in:
2025-06-06 16:22:43 -07:00
parent dcc31e46b3
commit 1b1c20a9e4

@ -66,6 +66,7 @@ enum ScriptActionParseResult{
Block, Block,
Exit, Exit,
Delete, Delete,
Purge,
Skip, Skip,
} }
struct ParseScriptActionErr; struct ParseScriptActionErr;
@ -77,6 +78,7 @@ impl std::str::FromStr for ScriptActionParseResult{
"block\n"=>Ok(Self::Block), "block\n"=>Ok(Self::Block),
"exit\n"=>Ok(Self::Exit), "exit\n"=>Ok(Self::Exit),
"delete\n"=>Ok(Self::Delete), "delete\n"=>Ok(Self::Delete),
"purge\n"=>Ok(Self::Purge),
"skip\n"=>Ok(Self::Skip), "skip\n"=>Ok(Self::Skip),
_=>Err(ParseScriptActionErr), _=>Err(ParseScriptActionErr),
} }
@ -93,6 +95,7 @@ enum ReviewError{
NoScript, NoScript,
WriteCurrent(std::io::Error), WriteCurrent(std::io::Error),
ActionIO(std::io::Error), ActionIO(std::io::Error),
PurgeScript(submissions_api::Error),
ReadCurrent(std::io::Error), ReadCurrent(std::io::Error),
DeduplicateModified(submissions_api::types::SingleItemError), DeduplicateModified(submissions_api::types::SingleItemError),
UploadModified(submissions_api::Error), UploadModified(submissions_api::Error),
@ -152,6 +155,17 @@ async fn review(config:ReviewConfig)->Result<(),ReviewError>{
let mut to_script_id=None; let mut to_script_id=None;
// interpret action // interpret action
let reviewed_policy=match script_action{ let reviewed_policy=match script_action{
ScriptActionParseResult::Purge=>{
// remove script and policy from the database.
let remove_script_fut=api.delete_script(submissions_api::types::GetScriptRequest{
ScriptID:script_response.ID,
});
let remove_script_policy_fut=api.delete_script_policy(submissions_api::types::GetScriptPolicyRequest{
ScriptPolicyID:unreviewed_policy.ID,
});
tokio::try_join!(remove_script_fut,remove_script_policy_fut).map_err(ReviewError::PurgeScript)?;
continue;
},
ScriptActionParseResult::Pass=>{ ScriptActionParseResult::Pass=>{
//if current.lua was updated, create an allowed and replace file and set script_action to replace(new_id) //if current.lua was updated, create an allowed and replace file and set script_action to replace(new_id)
let modified_source=tokio::fs::read_to_string("current.lua").await.map_err(ReviewError::ReadCurrent)?; let modified_source=tokio::fs::read_to_string("current.lua").await.map_err(ReviewError::ReadCurrent)?;