ic_dbms_api/lib.rs
1#![crate_name = "ic_dbms_api"]
2#![crate_type = "lib"]
3#![cfg_attr(docsrs, feature(doc_cfg))]
4#![deny(clippy::print_stdout)]
5#![deny(clippy::print_stderr)]
6
7//! # IC DBMS API
8//!
9//! This crate exposes all the types shared between an IC DBMS Canister and an external canister
10//!
11//! You can import all the useful types and traits by using the prelude module:
12//!
13//! ```rust
14//! use ic_dbms_api::prelude::*;
15//! ```
16//!
17//! ## Types
18//!
19//! ### DBMS
20//!
21//! #### Database
22//!
23//! - [`Database`](crate::prelude::Database)
24//!
25//! #### Foreign Fetcher
26//!
27//! - [`ForeignFetcher`](crate::prelude::ForeignFetcher)
28//!
29//! #### Init
30//!
31//! - [`IcDbmsCanisterArgs`](crate::prelude::IcDbmsCanisterArgs)
32//! - [`IcDbmsCanisterInitArgs`](crate::prelude::IcDbmsCanisterInitArgs)
33//! - [`IcDbmsCanisterUpdateArgs`](crate::prelude::IcDbmsCanisterUpdateArgs)
34//!
35//! #### Query
36//!
37//! - [`DeleteBehavior`](crate::prelude::DeleteBehavior)
38//! - [`Filter`](crate::prelude::Filter)
39//! - [`JsonCmp`](crate::prelude::JsonCmp)
40//! - [`JsonFilter`](crate::prelude::JsonFilter)
41//! - [`Query`](crate::prelude::Query)
42//! - [`QueryBuilder`](crate::prelude::QueryBuilder)
43//! - [`QueryError`](crate::prelude::QueryError)
44//! - [`QueryResult`](crate::prelude::QueryResult)
45//! - [`OrderDirection`](crate::prelude::OrderDirection)
46//! - [`Select`](crate::prelude::Select)
47//!
48//! #### Table
49//!
50//! - [`ColumnDef`](crate::prelude::ColumnDef)
51//! - [`ForeignKeyDef`](crate::prelude::ForeignKeyDef)
52//! - [`InsertRecord`](crate::prelude::InsertRecord)
53//! - [`TableColumns`](crate::prelude::TableColumns)
54//! - [`TableError`](crate::prelude::TableError)
55//! - [`TableRecord`](crate::prelude::TableRecord)
56//! - [`UpdateRecord`](crate::prelude::UpdateRecord)
57//! - [`ValuesSource`](crate::prelude::ValuesSource)
58//!
59//! #### Transaction
60//!
61//! - [`TransactionError`](crate::prelude::TransactionError)
62//! - [`TransactionId`](crate::prelude::TransactionId)
63//!
64//! #### Dbms Types
65//!
66//! - [`Blob`](crate::prelude::Blob)
67//! - [`Boolean`](crate::prelude::Boolean)
68//! - [`Date`](crate::prelude::Date)
69//! - [`DateTime`](crate::prelude::DateTime)
70//! - [`Decimal`](crate::prelude::Decimal)
71//! - [`Int8`](crate::prelude::Int8)
72//! - [`Int16`](crate::prelude::Int16)
73//! - [`Int32`](crate::prelude::Int32)
74//! - [`Int64`](crate::prelude::Int64)
75//! - [`Json`](crate::prelude::Json)
76//! - [`Nullable`](crate::prelude::Nullable)
77//! - [`Principal`](crate::prelude::Principal)
78//! - [`Text`](crate::prelude::Text)
79//! - [`Uint8`](crate::prelude::Uint8)
80//! - [`Uint16`](crate::prelude::Uint16)
81//! - [`Uint32`](crate::prelude::Uint32)
82//! - [`Uint64`](crate::prelude::Uint64)
83//! - [`Uuid`](crate::prelude::Uuid)
84//!
85//! #### Sanitizers
86//!
87//! - [`Sanitize`](crate::prelude::Sanitize)
88//! - [`ClampSanitizer`](crate::prelude::ClampSanitizer)
89//! - [`ClampUnsignedSanitizer`](crate::prelude::ClampUnsignedSanitizer)
90//! - [`CollapseWhitespaceSanitizer`](crate::prelude::CollapseWhitespaceSanitizer)
91//! - [`LowerCaseSanitizer`](crate::prelude::LowerCaseSanitizer)
92//! - [`NullIfEmptySanitizer`](crate::prelude::NullIfEmptySanitizer)
93//! - [`RoundToScaleSanitizer`](crate::prelude::RoundToScaleSanitizer)
94//! - [`SlugSanitizer`](crate::prelude::SlugSanitizer)
95//! - [`TimezoneSanitizer`](crate::prelude::TimezoneSanitizer)
96//! - [`UtcSanitizer`](crate::prelude::UtcSanitizer)
97//! - [`TrimSanitizer`](crate::prelude::TrimSanitizer)
98//! - [`UpperCaseSanitizer`](crate::prelude::UpperCaseSanitizer)
99//! - [`UrlEncodingSanitizer`](crate::prelude::UrlEncodingSanitizer)
100//!
101//! #### Validate
102//!
103//! - [`Validate`](crate::prelude::Validate)
104//! - [`CamelCaseValidator`](crate::prelude::CamelCaseValidator)
105//! - [`CountryIso639Validator`](crate::prelude::CountryIso639Validator)
106//! - [`CountryIso3166Validator`](crate::prelude::CountryIso3166Validator)
107//! - [`EmailValidator`](crate::prelude::EmailValidator)
108//! - [`KebabCaseValidator`](crate::prelude::KebabCaseValidator)
109//! - [`MaxStrlenValidator`](crate::prelude::MaxStrlenValidator)
110//! - [`MimeTypeValidator`](crate::prelude::MimeTypeValidator)
111//! - [`MinStrlenValidator`](crate::prelude::MinStrlenValidator)
112//! - [`PhoneNumberValidator`](crate::prelude::PhoneNumberValidator)
113//! - [`RangeStrlenValidator`](crate::prelude::RangeStrlenValidator)
114//! - [`RgbColorValidator`](crate::prelude::RgbColorValidator)
115//! - [`SnakeCaseValidator`](crate::prelude::SnakeCaseValidator)
116//! - [`UrlValidator`](crate::prelude::UrlValidator)
117//!
118//! #### Value
119//!
120//! - ['DataType'](crate::prelude::DataType)
121//! - [`Value`](crate::prelude::Value)
122//!
123//! ### Memory
124//!
125//! - [`DataSize`](crate::memory::DataSize)
126//! - [`Encode`](crate::memory::Encode)
127//! - [`DecodeError`](crate::memory::DecodeError)
128//! - [`MemoryError`](crate::memory::MemoryError)
129//! - [`MemoryResult`](crate::memory::MemoryResult)
130//! - [`MSize`](crate::memory::MSize)
131//! - [`Page`](crate::memory::Page)
132//! - [`PageOffset`](crate::memory::PageOffset)
133//!
134
135#![doc(html_playground_url = "https://play.rust-lang.org")]
136#![doc(
137 html_favicon_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-128.png"
138)]
139#![doc(
140 html_logo_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-512.png"
141)]
142
143// makes the crate accessible as `ic_dbms_api` in macros
144extern crate self as ic_dbms_api;
145
146mod dbms;
147mod error;
148mod init;
149mod memory;
150pub mod prelude;
151#[cfg(test)]
152mod tests;
153mod utils;