ic_dbms_api/lib.rs
1#![crate_name = "ic_dbms_api"]
2#![crate_type = "lib"]
3#![cfg_attr(docsrs, feature(doc_cfg))]
4
5//! # IC DBMS API
6//!
7//! This crate exposes all the types shared between an IC DBMS Canister and an external canister
8//!
9//! You can import all the useful types and traits by using the prelude module:
10//!
11//! ```rust
12//! use ic_dbms_api::prelude::*;
13//! ```
14//!
15//! ## Types
16//!
17//! ### DBMS
18//!
19//! #### Database
20//!
21//! - [`Database`](crate::prelude::Database)
22//!
23//! #### Foreign Fetcher
24//!
25//! - [`ForeignFetcher`](crate::prelude::ForeignFetcher)
26//!
27//! #### Init
28//!
29//! - [`IcDbmsCanisterArgs`](crate::prelude::IcDbmsCanisterArgs)
30//! - [`IcDbmsCanisterInitArgs`](crate::prelude::IcDbmsCanisterInitArgs)
31//! - [`IcDbmsCanisterUpdateArgs`](crate::prelude::IcDbmsCanisterUpdateArgs)
32//!
33//! #### Query
34//!
35//! - [`DeleteBehavior`](crate::prelude::DeleteBehavior)
36//! - [`Filter`](crate::prelude::Filter)
37//! - [`Query`](crate::prelude::Query)
38//! - [`QueryBuilder`](crate::prelude::QueryBuilder)
39//! - [`QueryError`](crate::prelude::QueryError)
40//! - [`QueryResult`](crate::prelude::QueryResult)
41//! - [`OrderDirection`](crate::prelude::OrderDirection)
42//! - [`Select`](crate::prelude::Select)
43//!
44//! #### Table
45//!
46//! - [`ColumnDef`](crate::prelude::ColumnDef)
47//! - [`ForeignKeyDef`](crate::prelude::ForeignKeyDef)
48//! - [`InsertRecord`](crate::prelude::InsertRecord)
49//! - [`TableColumns`](crate::prelude::TableColumns)
50//! - [`TableError`](crate::prelude::TableError)
51//! - [`TableRecord`](crate::prelude::TableRecord)
52//! - [`UpdateRecord`](crate::prelude::UpdateRecord)
53//! - [`ValuesSource`](crate::prelude::ValuesSource)
54//!
55//! #### Transaction
56//!
57//! - [`TransactionError`](crate::prelude::TransactionError)
58//! - [`TransactionId`](crate::prelude::TransactionId)
59//!
60//! #### Dbms Types
61//!
62//! - [`Blob`](crate::prelude::Blob)
63//! - [`Boolean`](crate::prelude::Boolean)
64//! - [`Date`](crate::prelude::Date)
65//! - [`DateTime`](crate::prelude::DateTime)
66//! - [`Decimal`](crate::prelude::Decimal)
67//! - [`Int32`](crate::prelude::Int32)
68//! - [`Int64`](crate::prelude::Int64)
69//! - [`Nullable`](crate::prelude::Nullable)
70//! - [`Principal`](crate::prelude::Principal)
71//! - [`Text`](crate::prelude::Text)
72//! - [`Uint32`](crate::prelude::Uint32)
73//! - [`Uint64`](crate::prelude::Uint64)
74//! - [`Uuid`](crate::prelude::Uuid)
75//!
76//! #### Value
77//!
78//! - ['DataType'](crate::prelude::DataType)
79//! - [`Value`](crate::prelude::Value)
80//!
81//! ### Memory
82//!
83//! - [`DataSize`](crate::memory::DataSize)
84//! - [`Encode`](crate::memory::Encode)
85//! - [`DecodeError`](crate::memory::DecodeError)
86//! - [`MemoryError`](crate::memory::MemoryError)
87//! - [`MemoryResult`](crate::memory::MemoryResult)
88//! - [`MSize`](crate::memory::MSize)
89//! - [`Page`](crate::memory::Page)
90//! - [`PageOffset`](crate::memory::PageOffset)
91//!
92
93#![doc(html_playground_url = "https://play.rust-lang.org")]
94#![doc(
95 html_favicon_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-128.png"
96)]
97#![doc(
98 html_logo_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-512.png"
99)]
100
101// makes the crate accessible as `ic_dbms_api` in macros
102extern crate self as ic_dbms_api;
103
104mod dbms;
105mod error;
106mod init;
107mod memory;
108pub mod prelude;
109#[cfg(test)]
110mod tests;
111mod utils;