use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{Addr, Binary, Uint128, Uint64};
#[cw_serde]
pub struct InstantiateMsg {
pub name: String,
pub triplestore_config: TripleStoreConfig,
}
#[cw_serde]
pub enum ExecuteMsg {
SubmitClaims {
claims: Binary,
format: Option<RdfDatasetFormat>,
},
RevokeClaims {
identifier: Uri,
},
}
#[cw_serde]
pub struct TripleStoreConfig {
pub code_id: Uint64,
pub limits: TripleStoreLimitsInput,
}
#[cw_serde]
#[derive(Default)]
pub struct TripleStoreLimitsInput {
pub max_triple_count: Option<Uint128>,
pub max_byte_size: Option<Uint128>,
pub max_triple_byte_size: Option<Uint128>,
pub max_query_limit: Option<u32>,
pub max_query_variable_count: Option<u32>,
pub max_insert_data_byte_size: Option<Uint128>,
pub max_insert_data_triple_count: Option<Uint128>,
}
impl From<TripleStoreLimitsInput> for axone_cognitarium::msg::StoreLimitsInput {
fn from(value: TripleStoreLimitsInput) -> Self {
let mut limits = axone_cognitarium::msg::StoreLimitsInput::default();
if let Some(max_triple_count) = value.max_triple_count {
limits.max_triple_count = max_triple_count;
}
if let Some(max_byte_size) = value.max_byte_size {
limits.max_byte_size = max_byte_size;
}
if let Some(max_triple_byte_size) = value.max_triple_byte_size {
limits.max_triple_byte_size = max_triple_byte_size;
}
if let Some(max_query_limit) = value.max_query_limit {
limits.max_query_limit = max_query_limit;
}
if let Some(max_query_variable_count) = value.max_query_variable_count {
limits.max_query_variable_count = max_query_variable_count;
}
if let Some(max_insert_data_byte_size) = value.max_insert_data_byte_size {
limits.max_insert_data_byte_size = max_insert_data_byte_size;
}
if let Some(max_insert_data_triple_count) = value.max_insert_data_triple_count {
limits.max_insert_data_triple_count = max_insert_data_triple_count;
}
limits
}
}
#[cw_serde]
#[derive(Default)]
pub enum RdfDatasetFormat {
#[serde(rename = "n_quads")]
#[default]
NQuads,
}
type Uri = String;
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(DataverseResponse)]
Dataverse {},
}
#[cw_serde]
pub struct DataverseResponse {
pub name: String,
pub triplestore_address: Addr,
}