cido 0.2.0

Core traits and implementations for indexing with cido
Documentation
#![doc = include_str!("../README.md")]
mod cell;
mod cidomap;
mod context;
mod error;
mod filter;
mod graphql;
mod handler;
pub(crate) mod helper_macros;
mod metrics;
mod network;
mod persistence;
mod poi;
mod singleton;
mod sql;
// Embedded until 0.4.4 is released
#[doc(hidden)]
#[rustfmt::skip]
pub mod stable_hash;
mod types;

#[doc(hidden)]
pub mod __internal {
  pub use crate::prelude::*;

  pub use super::cidomap::{AsyncTypeIter, EventHandler, TrackingLevel, TypeIter};
  pub use super::filter::{
    ArrayFilter, BaseFilter, BaseOperator, BlockChangedFilter, ByteaFilter, ByteaOperator,
    ComplexFilter, EnumFilter, EnumOperator, Filter, Id, IdFilter, NestedIdFilter,
    NestedIdOperator, NestedIdWrapper, OptionalArrayFilter, OptionalBaseFilter,
    OptionalBaseOperator, OptionalByteaFilter, OptionalByteaOperator, OptionalEnumFilter,
    OptionalEnumOperator, OptionalNestedIdFilter, OptionalNestedIdOperator, OptionalStringFilter,
    OptionalStringOperator, RootWhere, StringFilter, StringOperator, ToDbFilter, ToGraphqlFilter,
    ToNestedGraphqlNestedIdFilter, TryMapFilter,
  };
  pub use super::graphql::{
    DerivedMap, FromId, GraphqlCidomapMetaInfo, GraphqlInputType, GraphqlMetaExtension,
    GraphqlOrderBy, GraphqlOrderByVariant, GraphqlOrderDirection, GraphqlOutputType,
    GraphqlPagination, GraphqlQueryBuilder, LoaderConfig, ToGraphql, ToIdentifiable, ToTransformer,
    TypeMap,
  };
  pub use super::network::ChainTrackerResponse;
  pub use super::persistence::{
    ColConstraint, ColDescription, MetaInfo, TableConstraint, TableConstraintType, TableDescriptor,
    TableResolver,
  };
  pub use super::poi::ValueTypeHasher;
  pub use super::run::run;
  pub use super::sql::{
    Direction, Finalize, OrderByClause, PgBindIter, QueryBuilder, SelectClause, WhereClause,
  };
  pub use super::types::{ConversionError, DecodeHexError, MissingField};

  pub use crate::stable_hash;
  pub use async_graphql;
  pub use bigdecimal;
  pub use cido_macros::{_impls, OrderBy};
  pub use clap;
  pub use either;
  pub use futures;
  pub use num_bigint;
  pub use owning_ref;
  pub use serde;
  pub use serde_json;
  pub use serde_with;
  pub use sqlx;
  pub use sqlx::types::{Decimal, chrono};
  pub use tracing;
}

pub mod prelude {
  pub use super::cell::{Ref, RefMut};
  pub use super::cidomap::{
    CacheKey, CacheLoader, CachePolicy, Cidomap, Identifiable, MetaEvent, ParseContext,
    ParsingContext, ProcessingOrder, ProcessingOrderFilter, Query, RecordEvent, RecordType,
    Transformer, TryFromTrigger,
  };
  pub use super::context::{Context, GeneratorContext, PreprocessingContext};
  pub use super::error::CidomapError;
  pub use super::handler::{Cache, Event, Handler};
  pub use super::metrics::FutureMeter;
  pub use super::network::{
    AsBlockNumber, AsEventOrder, Block, BlockGenerator, BlockId, BlockNumber, BlockNumberRange,
    BlockRange, BlockRequest, EventOrder, LatestBlock, Network, TriggerFilterStorage,
    TriggerGenerator,
  };
  pub use super::poi::{Hashable, ValueVariant};
  pub use super::singleton::{GenericSingleton, Singleton};
  pub use super::stable_hash;
  pub use super::types::{BigDecimal, BigInt, Bytes, H, Sign, U};
  pub use cido_macros::{cidomap, entity, event, event_handler};
}

#[doc(hidden)]
pub mod util {
  pub use crate::types::{TRANSIENT_BYTES_SERIALIZER, TRANSIENT_STRING_SERIALIZER, serde_util::*};
}

type DynError = Box<dyn std::error::Error + Send + Sync + 'static>;

mod run {
  use crate::prelude::*;
  /// Runs a cidomap. This function needs to be called to
  #[cido_macros::_impls]
  pub fn run<C>() -> Result<(), CidomapError>
  where
    C: Cidomap,
    <<C as Cidomap>::Network as Network>::InitConfig: clap::Args,
  {
    unimplemented!()
  }
}

#[doc(inline)]
pub use prelude::*;