42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
use rust_grpc::validator::ResourceType;
|
|
|
|
#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)]
|
|
pub struct MapfixID(pub(crate)u64);
|
|
#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)]
|
|
pub struct SubmissionID(pub(crate)u64);
|
|
#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)]
|
|
pub struct ResourceID(pub(crate)u64);
|
|
#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)]
|
|
pub struct ScriptID(pub(crate)u64);
|
|
|
|
pub struct StupidPolicy(pub(crate)rust_grpc::validator::Policy);
|
|
#[derive(Debug)]
|
|
pub struct StupidPolicyError;
|
|
impl TryFrom<i32> for StupidPolicy{
|
|
type Error=StupidPolicyError;
|
|
fn try_from(value:i32)->Result<Self,Self::Error>{
|
|
Ok(Self(match value{
|
|
0=>rust_grpc::validator::Policy::None,
|
|
1=>rust_grpc::validator::Policy::Allowed,
|
|
2=>rust_grpc::validator::Policy::Blocked,
|
|
3=>rust_grpc::validator::Policy::Delete,
|
|
4=>rust_grpc::validator::Policy::Replace,
|
|
_=>return Err(StupidPolicyError),
|
|
}))
|
|
}
|
|
}
|
|
|
|
#[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)),
|
|
}
|
|
}
|
|
}
|