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//! ### Validate
93//!
94//! - [`Validate`](crate::prelude::Validate)
95//! - [`CamelCaseValidator`](crate::prelude::CamelCaseValidator)
96//! - [`CountryIso639Validator`](crate::prelude::CountryIso639Validator)
97//! - [`CountryIso3166Validator`](crate::prelude::CountryIso3166Validator)
98//! - [`EmailValidator`](crate::prelude::EmailValidator)
99//! - [`KebabCaseValidator`](crate::prelude::KebabCaseValidator)
100//! - [`MaxStrlenValidator`](crate::prelude::MaxStrlenValidator)
101//! - [`MimeTypeValidator`](crate::prelude::MimeTypeValidator)
102//! - [`MinStrlenValidator`](crate::prelude::MinStrlenValidator)
103//! - [`PhoneNumberValidator`](crate::prelude::PhoneNumberValidator)
104//! - [`RangeStrlenValidator`](crate::prelude::RangeStrlenValidator)
105//! - [`RgbColorValidator`](crate::prelude::RgbColorValidator)
106//! - [`SnakeCaseValidator`](crate::prelude::SnakeCaseValidator)
107//! - [`UrlValidator`](crate::prelude::UrlValidator)
108
109#![doc(html_playground_url = "https://play.rust-lang.org")]
110#![doc(
111 html_favicon_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-128.png"
112)]
113#![doc(
114 html_logo_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-512.png"
115)]
116
117// makes the crate accessible as `ic_dbms_api` in macros
118extern crate self as ic_dbms_api;
119
120mod dbms;
121mod error;
122mod init;
123mod memory;
124pub mod prelude;
125#[cfg(test)]
126mod tests;
127mod utils;
128mod validate;