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//! - [`Query`](crate::prelude::Query)
40//! - [`QueryBuilder`](crate::prelude::QueryBuilder)
41//! - [`QueryError`](crate::prelude::QueryError)
42//! - [`QueryResult`](crate::prelude::QueryResult)
43//! - [`OrderDirection`](crate::prelude::OrderDirection)
44//! - [`Select`](crate::prelude::Select)
45//!
46//! #### Table
47//!
48//! - [`ColumnDef`](crate::prelude::ColumnDef)
49//! - [`ForeignKeyDef`](crate::prelude::ForeignKeyDef)
50//! - [`InsertRecord`](crate::prelude::InsertRecord)
51//! - [`TableColumns`](crate::prelude::TableColumns)
52//! - [`TableError`](crate::prelude::TableError)
53//! - [`TableRecord`](crate::prelude::TableRecord)
54//! - [`UpdateRecord`](crate::prelude::UpdateRecord)
55//! - [`ValuesSource`](crate::prelude::ValuesSource)
56//!
57//! #### Transaction
58//!
59//! - [`TransactionError`](crate::prelude::TransactionError)
60//! - [`TransactionId`](crate::prelude::TransactionId)
61//!
62//! #### Dbms Types
63//!
64//! - [`Blob`](crate::prelude::Blob)
65//! - [`Boolean`](crate::prelude::Boolean)
66//! - [`Date`](crate::prelude::Date)
67//! - [`DateTime`](crate::prelude::DateTime)
68//! - [`Decimal`](crate::prelude::Decimal)
69//! - [`Int8`](crate::prelude::Int8)
70//! - [`Int16`](crate::prelude::Int16)
71//! - [`Int32`](crate::prelude::Int32)
72//! - [`Int64`](crate::prelude::Int64)
73//! - [`Nullable`](crate::prelude::Nullable)
74//! - [`Principal`](crate::prelude::Principal)
75//! - [`Text`](crate::prelude::Text)
76//! - [`Uint8`](crate::prelude::Uint8)
77//! - [`Uint16`](crate::prelude::Uint16)
78//! - [`Uint32`](crate::prelude::Uint32)
79//! - [`Uint64`](crate::prelude::Uint64)
80//! - [`Uuid`](crate::prelude::Uuid)
81//!
82//! #### Sanitizers
83//!
84//! - [`Sanitize`](crate::prelude::Sanitize)
85//! - [`ClampSanitizer`](crate::prelude::ClampSanitizer)
86//! - [`ClampUnsignedSanitizer`](crate::prelude::ClampUnsignedSanitizer)
87//! - [`CollapseWhitespaceSanitizer`](crate::prelude::CollapseWhitespaceSanitizer)
88//! - [`LowerCaseSanitizer`](crate::prelude::LowerCaseSanitizer)
89//! - [`NullIfEmptySanitizer`](crate::prelude::NullIfEmptySanitizer)
90//! - [`RoundToScaleSanitizer`](crate::prelude::RoundToScaleSanitizer)
91//! - [`SlugSanitizer`](crate::prelude::SlugSanitizer)
92//! - [`TimezoneSanitizer`](crate::prelude::TimezoneSanitizer)
93//! - [`UtcSanitizer`](crate::prelude::UtcSanitizer)
94//! - [`TrimSanitizer`](crate::prelude::TrimSanitizer)
95//! - [`UpperCaseSanitizer`](crate::prelude::UpperCaseSanitizer)
96//! - [`UrlEncodingSanitizer`](crate::prelude::UrlEncodingSanitizer)
97//!
98//! #### Validate
99//!
100//! - [`Validate`](crate::prelude::Validate)
101//! - [`CamelCaseValidator`](crate::prelude::CamelCaseValidator)
102//! - [`CountryIso639Validator`](crate::prelude::CountryIso639Validator)
103//! - [`CountryIso3166Validator`](crate::prelude::CountryIso3166Validator)
104//! - [`EmailValidator`](crate::prelude::EmailValidator)
105//! - [`KebabCaseValidator`](crate::prelude::KebabCaseValidator)
106//! - [`MaxStrlenValidator`](crate::prelude::MaxStrlenValidator)
107//! - [`MimeTypeValidator`](crate::prelude::MimeTypeValidator)
108//! - [`MinStrlenValidator`](crate::prelude::MinStrlenValidator)
109//! - [`PhoneNumberValidator`](crate::prelude::PhoneNumberValidator)
110//! - [`RangeStrlenValidator`](crate::prelude::RangeStrlenValidator)
111//! - [`RgbColorValidator`](crate::prelude::RgbColorValidator)
112//! - [`SnakeCaseValidator`](crate::prelude::SnakeCaseValidator)
113//! - [`UrlValidator`](crate::prelude::UrlValidator)
114//!
115//! #### Value
116//!
117//! - ['DataType'](crate::prelude::DataType)
118//! - [`Value`](crate::prelude::Value)
119//!
120//! ### Memory
121//!
122//! - [`DataSize`](crate::memory::DataSize)
123//! - [`Encode`](crate::memory::Encode)
124//! - [`DecodeError`](crate::memory::DecodeError)
125//! - [`MemoryError`](crate::memory::MemoryError)
126//! - [`MemoryResult`](crate::memory::MemoryResult)
127//! - [`MSize`](crate::memory::MSize)
128//! - [`Page`](crate::memory::Page)
129//! - [`PageOffset`](crate::memory::PageOffset)
130//!
131
132#![doc(html_playground_url = "https://play.rust-lang.org")]
133#![doc(
134    html_favicon_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-128.png"
135)]
136#![doc(
137    html_logo_url = "https://raw.githubusercontent.com/veeso/ic-dbms/main/assets/images/cargo/logo-512.png"
138)]
139
140// makes the crate accessible as `ic_dbms_api` in macros
141extern crate self as ic_dbms_api;
142
143mod dbms;
144mod error;
145mod init;
146mod memory;
147pub mod prelude;
148#[cfg(test)]
149mod tests;
150mod utils;