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,
Exit,
Delete,
Purge,
Skip,
}
struct ParseScriptActionErr;
@ -77,6 +78,7 @@ impl std::str::FromStr for ScriptActionParseResult{
"block\n"=>Ok(Self::Block),
"exit\n"=>Ok(Self::Exit),
"delete\n"=>Ok(Self::Delete),
"purge\n"=>Ok(Self::Purge),
"skip\n"=>Ok(Self::Skip),
_=>Err(ParseScriptActionErr),
}
@ -93,6 +95,7 @@ enum ReviewError{
NoScript,
WriteCurrent(std::io::Error),
ActionIO(std::io::Error),
PurgeScript(submissions_api::Error),
ReadCurrent(std::io::Error),
DeduplicateModified(submissions_api::types::SingleItemError),
UploadModified(submissions_api::Error),
@ -152,6 +155,17 @@ async fn review(config:ReviewConfig)->Result<(),ReviewError>{
let mut to_script_id=None;
// interpret 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=>{
//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)?;