From 50a63b8d52b775b786be89309eaae6a512fa103f Mon Sep 17 00:00:00 2001 From: Quaternions Date: Tue, 10 Jun 2025 21:43:44 -0700 Subject: [PATCH 1/2] submissions-api: type all ids --- validation/api/src/external.rs | 2 +- validation/api/src/internal.rs | 24 +++++------ validation/api/src/types.rs | 60 ++++++++++++++++++--------- validation/src/main.rs | 1 - validation/src/nats_types.rs | 18 ++++---- validation/src/types.rs | 4 -- validation/src/validate_mapfix.rs | 2 +- validation/src/validate_submission.rs | 2 +- validation/src/validator.rs | 20 ++++----- 9 files changed, 73 insertions(+), 60 deletions(-) delete mode 100644 validation/src/types.rs diff --git a/validation/api/src/external.rs b/validation/api/src/external.rs index 82ade93..8523d12 100644 --- a/validation/api/src/external.rs +++ b/validation/api/src/external.rs @@ -36,7 +36,7 @@ impl Context{ if let Some(resource_type)=config.ResourceType{ query_pairs.append_pair("ResourceType",(resource_type as i32).to_string().as_str()); } - if let Some(resource_id)=config.ResourceID{ + if let Some(ResourceID(resource_id))=config.ResourceID{ query_pairs.append_pair("ResourceID",resource_id.to_string().as_str()); } } diff --git a/validation/api/src/internal.rs b/validation/api/src/internal.rs index f9717cc..7ed9516 100644 --- a/validation/api/src/internal.rs +++ b/validation/api/src/internal.rs @@ -66,7 +66,7 @@ impl Context{ if let Some(resource_type)=config.ResourceType{ query_pairs.append_pair("ResourceType",(resource_type as i32).to_string().as_str()); } - if let Some(resource_id)=config.ResourceID{ + if let Some(ResourceID(resource_id))=config.ResourceID{ query_pairs.append_pair("ResourceID",resource_id.to_string().as_str()); } } @@ -162,24 +162,24 @@ impl Context{ .json().await.map_err(Error::ReqwestJson) } // simple submission endpoints - action!("submissions",action_submission_request_changes,config,ActionSubmissionRequestChangesRequest,"status/validator-request-changes",config.SubmissionID, + action!("submissions",action_submission_request_changes,config,ActionSubmissionRequestChangesRequest,"status/validator-request-changes",config.SubmissionID.0, ("ErrorMessage",config.ErrorMessage.as_str()) ); - action!("submissions",action_submission_submitted,config,ActionSubmissionSubmittedRequest,"status/validator-submitted",config.SubmissionID, + action!("submissions",action_submission_submitted,config,ActionSubmissionSubmittedRequest,"status/validator-submitted",config.SubmissionID.0, ("ModelVersion",config.ModelVersion.to_string().as_str()) ("DisplayName",config.DisplayName.as_str()) ("Creator",config.Creator.as_str()) ("GameID",(config.GameID as u8).to_string().as_str()) ); action!("submissions",action_submission_validated,config,SubmissionID,"status/validator-validated",config.0,); - action!("submissions",update_submission_validated_model,config,UpdateSubmissionModelRequest,"validated-model",config.SubmissionID, + action!("submissions",update_submission_validated_model,config,UpdateSubmissionModelRequest,"validated-model",config.SubmissionID.0, ("ValidatedModelID",config.ModelID.to_string().as_str()) ("ValidatedModelVersion",config.ModelVersion.to_string().as_str()) ); - action!("submissions",action_submission_uploaded,config,ActionSubmissionUploadedRequest,"status/validator-uploaded",config.SubmissionID, + action!("submissions",action_submission_uploaded,config,ActionSubmissionUploadedRequest,"status/validator-uploaded",config.SubmissionID.0, ("UploadedAssetID",config.UploadedAssetID.to_string().as_str()) ); - action!("submissions",action_submission_accepted,config,ActionSubmissionAcceptedRequest,"status/validator-failed",config.SubmissionID, + action!("submissions",action_submission_accepted,config,ActionSubmissionAcceptedRequest,"status/validator-failed",config.SubmissionID.0, ("ErrorMessage",config.ErrorMessage.as_str()) ); pub async fn create_mapfix(&self,config:CreateMapfixRequest<'_>)->Result{ @@ -194,26 +194,26 @@ impl Context{ .json().await.map_err(Error::ReqwestJson) } // simple mapfixes endpoints - action!("mapfixes",action_mapfix_request_changes,config,ActionMapfixRequestChangesRequest,"status/validator-request-changes",config.MapfixID, + action!("mapfixes",action_mapfix_request_changes,config,ActionMapfixRequestChangesRequest,"status/validator-request-changes",config.MapfixID.0, ("ErrorMessage",config.ErrorMessage.as_str()) ); - action!("mapfixes",action_mapfix_submitted,config,ActionMapfixSubmittedRequest,"status/validator-submitted",config.MapfixID, + action!("mapfixes",action_mapfix_submitted,config,ActionMapfixSubmittedRequest,"status/validator-submitted",config.MapfixID.0, ("ModelVersion",config.ModelVersion.to_string().as_str()) ("DisplayName",config.DisplayName.as_str()) ("Creator",config.Creator.as_str()) ("GameID",(config.GameID as u8).to_string().as_str()) ); action!("mapfixes",action_mapfix_validated,config,MapfixID,"status/validator-validated",config.0,); - action!("mapfixes",update_mapfix_validated_model,config,UpdateMapfixModelRequest,"validated-model",config.MapfixID, + action!("mapfixes",update_mapfix_validated_model,config,UpdateMapfixModelRequest,"validated-model",config.MapfixID.0, ("ValidatedModelID",config.ModelID.to_string().as_str()) ("ValidatedModelVersion",config.ModelVersion.to_string().as_str()) ); - action!("mapfixes",action_mapfix_uploaded,config,ActionMapfixUploadedRequest,"status/validator-uploaded",config.MapfixID,); - action!("mapfixes",action_mapfix_accepted,config,ActionMapfixAcceptedRequest,"status/validator-failed",config.MapfixID, + action!("mapfixes",action_mapfix_uploaded,config,ActionMapfixUploadedRequest,"status/validator-uploaded",config.MapfixID.0,); + action!("mapfixes",action_mapfix_accepted,config,ActionMapfixAcceptedRequest,"status/validator-failed",config.MapfixID.0, ("ErrorMessage",config.ErrorMessage.as_str()) ); // simple operation endpoint - action!("operations",action_operation_failed,config,ActionOperationFailedRequest,"status/operation-failed",config.OperationID, + action!("operations",action_operation_failed,config,ActionOperationFailedRequest,"status/operation-failed",config.OperationID.0, ("StatusMessage",config.StatusMessage.as_str()) ); } diff --git a/validation/api/src/types.rs b/validation/api/src/types.rs index 14207c4..1969599 100644 --- a/validation/api/src/types.rs +++ b/validation/api/src/types.rs @@ -79,7 +79,7 @@ pub enum GameID{ #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Serialize)] pub struct CreateMapfixRequest<'a>{ - pub OperationID:i32, + pub OperationID:OperationID, pub AssetOwner:i64, pub DisplayName:&'a str, pub Creator:&'a str, @@ -98,7 +98,7 @@ pub struct MapfixIDResponse{ #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Serialize)] pub struct CreateSubmissionRequest<'a>{ - pub OperationID:i32, + pub OperationID:OperationID, pub AssetOwner:i64, pub DisplayName:&'a str, pub Creator:&'a str, @@ -145,7 +145,7 @@ pub struct GetScriptsRequest<'a>{ #[serde(skip_serializing_if="Option::is_none")] pub ResourceType:Option, #[serde(skip_serializing_if="Option::is_none")] - pub ResourceID:Option, + pub ResourceID:Option, } #[derive(Clone,Copy,Debug)] pub struct HashRequest<'a>{ @@ -159,7 +159,7 @@ pub struct ScriptResponse{ pub Hash:String, pub Source:String, pub ResourceType:ResourceType, - pub ResourceID:i64, + pub ResourceID:ResourceID, } #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Serialize)] @@ -168,7 +168,7 @@ pub struct CreateScriptRequest<'a>{ pub Source:&'a str, pub ResourceType:ResourceType, #[serde(skip_serializing_if="Option::is_none")] - pub ResourceID:Option, + pub ResourceID:Option, } #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Deserialize)] @@ -238,7 +238,7 @@ pub struct UpdateScriptPolicyRequest{ #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct UpdateSubmissionModelRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ModelID:u64, pub ModelVersion:u64, } @@ -293,7 +293,7 @@ pub struct GetSubmissionsRequest<'a>{ #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Deserialize)] pub struct SubmissionResponse{ - pub ID:i64, + pub ID:SubmissionID, pub DisplayName:String, pub Creator:String, pub GameID:GameID, @@ -337,7 +337,7 @@ pub struct MapResponse{ #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionSubmissionSubmittedRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ModelVersion:u64, pub DisplayName:String, pub Creator:String, @@ -347,31 +347,31 @@ pub struct ActionSubmissionSubmittedRequest{ #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionSubmissionRequestChangesRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ErrorMessage:String, } #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionSubmissionUploadedRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub UploadedAssetID:u64, } #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionSubmissionAcceptedRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ErrorMessage:String, } #[derive(Clone,Copy,Debug,serde::Serialize,serde::Deserialize)] -pub struct SubmissionID(pub i64); +pub struct SubmissionID(pub(crate)i64); #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct UpdateMapfixModelRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ModelID:u64, pub ModelVersion:u64, } @@ -379,7 +379,7 @@ pub struct UpdateMapfixModelRequest{ #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionMapfixSubmittedRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ModelVersion:u64, pub DisplayName:String, pub Creator:String, @@ -389,33 +389,53 @@ pub struct ActionMapfixSubmittedRequest{ #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionMapfixRequestChangesRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ErrorMessage:String, } #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionMapfixUploadedRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, } #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionMapfixAcceptedRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ErrorMessage:String, } -#[derive(Clone,Copy,Debug,serde::Deserialize)] -pub struct MapfixID(pub i64); +#[derive(Clone,Copy,Debug,serde::Serialize,serde::Deserialize)] +pub struct MapfixID(pub(crate)i64); #[allow(nonstandard_style)] #[derive(Clone,Debug)] pub struct ActionOperationFailedRequest{ - pub OperationID:i32, + pub OperationID:OperationID, pub StatusMessage:String, } +#[derive(Clone,Copy,Debug,serde::Serialize,serde::Deserialize)] +pub struct OperationID(pub(crate)i64); + +#[derive(Clone,Copy,Debug,serde::Serialize,serde::Deserialize)] +pub struct ResourceID(pub(crate)i64); + +#[derive(Clone,Copy,Debug)] +pub enum Resource{ + Submission(SubmissionID), + Mapfix(MapfixID), +} +impl Resource{ + pub fn split(self)->(ResourceType,ResourceID){ + match self{ + Resource::Mapfix(MapfixID(mapfix_id))=>(ResourceType::Mapfix,ResourceID(mapfix_id)), + Resource::Submission(SubmissionID(submission_id))=>(ResourceType::Submission,ResourceID(submission_id)), + } + } +} + #[allow(nonstandard_style)] #[derive(Clone,Debug,serde::Serialize)] pub struct ReleaseInfo{ diff --git a/validation/src/main.rs b/validation/src/main.rs index 69ea99a..02d1d3a 100644 --- a/validation/src/main.rs +++ b/validation/src/main.rs @@ -3,7 +3,6 @@ use futures::StreamExt; mod rbx_util; mod message_handler; mod nats_types; -mod types; mod download; mod check; mod check_mapfix; diff --git a/validation/src/nats_types.rs b/validation/src/nats_types.rs index 6d8d712..db2a7e2 100644 --- a/validation/src/nats_types.rs +++ b/validation/src/nats_types.rs @@ -1,3 +1,5 @@ +use submissions_api::types::{SubmissionID,MapfixID,OperationID}; + // These represent the information needed in the nats message // to perform the operation, not necessarily the over-the-wire format @@ -8,7 +10,7 @@ #[derive(serde::Deserialize)] pub struct CreateSubmissionRequest{ // operation_id is passed back in the response message - pub OperationID:i32, + pub OperationID:OperationID, pub ModelID:u64, pub DisplayName:String, pub Creator:String, @@ -21,7 +23,7 @@ pub struct CreateSubmissionRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CreateMapfixRequest{ - pub OperationID:i32, + pub OperationID:OperationID, pub ModelID:u64, pub TargetAssetID:u64, pub Description:String, @@ -30,14 +32,14 @@ pub struct CreateMapfixRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CheckSubmissionRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ModelID:u64, } #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CheckMapfixRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ModelID:u64, } @@ -45,7 +47,7 @@ pub struct CheckMapfixRequest{ #[derive(serde::Deserialize)] pub struct ValidateSubmissionRequest{ // submission_id is passed back in the response message - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ModelID:u64, pub ModelVersion:u64, pub ValidatedModelID:Option, @@ -55,7 +57,7 @@ pub struct ValidateSubmissionRequest{ #[derive(serde::Deserialize)] pub struct ValidateMapfixRequest{ // submission_id is passed back in the response message - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ModelID:u64, pub ModelVersion:u64, pub ValidatedModelID:Option, @@ -65,7 +67,7 @@ pub struct ValidateMapfixRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct UploadSubmissionRequest{ - pub SubmissionID:i64, + pub SubmissionID:SubmissionID, pub ModelID:u64, pub ModelVersion:u64, pub ModelName:String, @@ -74,7 +76,7 @@ pub struct UploadSubmissionRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct UploadMapfixRequest{ - pub MapfixID:i64, + pub MapfixID:MapfixID, pub ModelID:u64, pub ModelVersion:u64, pub TargetAssetID:u64, diff --git a/validation/src/types.rs b/validation/src/types.rs deleted file mode 100644 index 875c18e..0000000 --- a/validation/src/types.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub enum ResourceID{ - Mapfix(i64), - Submission(i64), -} diff --git a/validation/src/validate_mapfix.rs b/validation/src/validate_mapfix.rs index e08197d..93e087f 100644 --- a/validation/src/validate_mapfix.rs +++ b/validation/src/validate_mapfix.rs @@ -22,7 +22,7 @@ impl crate::message_handler::MessageHandler{ Ok(())=>{ // update the mapfix model status to validated self.api.action_mapfix_validated( - submissions_api::types::MapfixID(mapfix_id) + mapfix_id ).await.map_err(Error::ApiActionMapfixValidate)?; }, Err(e)=>{ diff --git a/validation/src/validate_submission.rs b/validation/src/validate_submission.rs index 5bf97b3..6f6b4c4 100644 --- a/validation/src/validate_submission.rs +++ b/validation/src/validate_submission.rs @@ -22,7 +22,7 @@ impl crate::message_handler::MessageHandler{ Ok(())=>{ // update the submission model status to validated self.api.action_submission_validated( - submissions_api::types::SubmissionID(submission_id) + submission_id ).await.map_err(Error::ApiActionSubmissionValidate)?; }, Err(e)=>{ diff --git a/validation/src/validator.rs b/validation/src/validator.rs index 7912b99..39ffa0c 100644 --- a/validation/src/validator.rs +++ b/validation/src/validator.rs @@ -1,9 +1,8 @@ use futures::TryStreamExt; -use submissions_api::types::ResourceType; +use submissions_api::types::Resource; use crate::download::download_asset_version; use crate::rbx_util::{read_dom,static_ustr,ReadDomError}; -use crate::types::ResourceID; const SCRIPT_CONCURRENCY:usize=16; @@ -70,7 +69,7 @@ pub struct ValidateRequest{ pub ModelID:u64, pub ModelVersion:u64, pub ValidatedModelID:Option, - pub ResourceID:ResourceID, + pub Resource:Resource, } impl From for ValidateRequest{ @@ -79,7 +78,7 @@ impl From for ValidateRequest{ ModelID:value.ModelID, ModelVersion:value.ModelVersion, ValidatedModelID:value.ValidatedModelID, - ResourceID:ResourceID::Mapfix(value.MapfixID), + Resource:Resource::Mapfix(value.MapfixID), } } } @@ -89,7 +88,7 @@ impl From for ValidateRequest{ ModelID:value.ModelID, ModelVersion:value.ModelVersion, ValidatedModelID:value.ValidatedModelID, - ResourceID:ResourceID::Submission(value.SubmissionID), + Resource:Resource::Submission(value.SubmissionID), } } } @@ -177,10 +176,7 @@ impl crate::message_handler::MessageHandler{ }, }; }else{ - let (resource_type,resource_id)=match validate_info.ResourceID{ - ResourceID::Mapfix(mapfix_id)=>(ResourceType::Mapfix,mapfix_id), - ResourceID::Submission(submission_id)=>(ResourceType::Submission,submission_id), - }; + let (resource_type,resource_id)=validate_info.Resource.split(); // upload the script let script=self.api.create_script(submissions_api::types::CreateScriptRequest{ @@ -281,8 +277,8 @@ impl crate::message_handler::MessageHandler{ (validate_info.ModelID,validate_info.ModelVersion) }; - match validate_info.ResourceID{ - ResourceID::Mapfix(mapfix_id)=>{ + match validate_info.Resource{ + Resource::Mapfix(mapfix_id)=>{ // update the mapfix to use the validated model self.api.update_mapfix_validated_model(submissions_api::types::UpdateMapfixModelRequest{ MapfixID:mapfix_id, @@ -290,7 +286,7 @@ impl crate::message_handler::MessageHandler{ ModelVersion:validated_model_version, }).await.map_err(Error::ApiUpdateMapfixModel)?; }, - ResourceID::Submission(submission_id)=>{ + Resource::Submission(submission_id)=>{ // update the submission to use the validated model self.api.update_submission_validated_model(submissions_api::types::UpdateSubmissionModelRequest{ SubmissionID:submission_id, -- 2.49.1 From 4c9384fdd332f1d435526c86991c74ee551d6e83 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Tue, 10 Jun 2025 22:03:13 -0700 Subject: [PATCH 2/2] submissions-api: 0.8.1 --- Cargo.lock | 2 +- validation/api/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee6861c..4de520c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1903,7 +1903,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "submissions-api" -version = "0.8.0" +version = "0.8.1" dependencies = [ "chrono", "reqwest", diff --git a/validation/api/Cargo.toml b/validation/api/Cargo.toml index 1bbcd73..cb5cb77 100644 --- a/validation/api/Cargo.toml +++ b/validation/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "submissions-api" -version = "0.8.0" +version = "0.8.1" edition = "2021" publish = ["strafesnet"] repository = "https://git.itzana.me/StrafesNET/maps-service" -- 2.49.1