Add extra front-end types and make MainPodBuilder emit these (#166)

* All test pass on middleware->frontend type refactor

* Convert frontend CustomPredicateRef to a named field struct

* Minor serialization improvements

* Set appropriate titles in JSON schemas

* Add names for custom predicates

* Remove PodClass from front-end Origin type

* Simplify value conversion

---------

Co-authored-by: Ahmad <root@ahmadafuni.com>
This commit is contained in:
Rob Knight 2025-04-07 14:27:20 -07:00 committed by GitHub
parent 6528914366
commit a6cd02ec2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 538 additions and 113 deletions

View file

@ -1,10 +1,9 @@
use std::fmt;
use super::{NativePredicate, Predicate, SignedPod, Statement, Value};
use crate::{
backends::plonky2::primitives::merkletree::MerkleProof,
middleware::{self, OperationAux},
};
use serde::{Deserialize, Serialize};
use super::{CustomPredicateRef, NativePredicate, Predicate, SignedPod, Statement, Value};
use crate::middleware::{self, OperationAux};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum OperationArg {
@ -71,13 +70,13 @@ impl<V: Into<Value>> From<(&str, V)> for OperationArg {
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum OperationType {
Native(NativeOperation),
Custom(middleware::CustomPredicateRef),
Custom(CustomPredicateRef),
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum NativeOperation {
None = 0,
NewEntry = 1,
@ -131,7 +130,7 @@ impl TryFrom<OperationType> for middleware::OperationType {
MwOT::Native(MwNO::NotContainsFromEntries)
}
FeOT::Native(FeNO::ArrayContainsFromEntries) => MwOT::Native(MwNO::ContainsFromEntries),
FeOT::Custom(mw_cpr) => MwOT::Custom(mw_cpr),
FeOT::Custom(mw_cpr) => MwOT::Custom(mw_cpr.into()),
};
Ok(mw_ot)
}