[package]
name = "mapage"
version = "0.2.0"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "In-memory type-namespaced key value storage with GraphQL"
readme = "README.md"
repository = "https://github.com/coruscateor/mapage"
homepage = "https://coruscateor.com/projects/mapage"
keywords = ["memory", "cache", "server", "map", "storage"]
categories = ["caching"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
async-graphql = "6.0.10"
async-graphql-poem = "6.0.10"
tokio = { version = "1.*", features = ["macros", "rt-multi-thread"] } #, "rt", "tokio_unstable"] } #24.* #tokio = { version = "1.19.2", features = ["rt", "rt-multi-thread", "sync", "macros", "fs"] }
poem = "1.3.*"
#corlib = { path="../corlib" } #Do not remove
corlib = "0.1.0"
#act_rusty = { path="../act_rusty" }
#act_rs = { path="../act_rs" } #Do not remove
#act_rs = "0.1.0"
#scc = "0.11.*"
scc = "2.*" #"1.0.*"
#async-trait = "0.1.57"
serde = { version = "1.0.*", features = ["derive"] } #"1.0.144"
paste = "1.*" #.0.11"
dashmap = "5.5.0"
cfg-if = "1.0.0"
delegate = "0.10.0"

[features]

#Storage Atomicity:

#aml - Atomicity Level

store_aml = []      
sub_store_aml = []  #Implemented

#features with sub_store_aml:

#Maps:

#std_col_hashmap = []
#scc_hashmap = []
#scc_hashindex = []
#scc_treeindex = []
#dashmap

#defaults:

#scc_hashmap_string = []
#dashmap_string = []

scc_hashmap_namespaces = []
dashmap_namespaces = []

#User Types:

all_types = []
bool = []
char = []
f32 = []
f64 = []
i8 = []
i16 = []
i32 = []
i64 = []
i128 = []
isize = []
String = []
u8 = []
u16 = []
u32 = []
u64 = []
u128 = []
#unit_value = []
usize = []
Whatever = []
SelectedType = []
#SelectedType_OI_Only = []
#SelectedTypeIO = [] #May be re-implemented

#Collections

Vec_bool = []
Vec_char = []
Vec_f32 = []
Vec_f64 = []
Vec_i8 = []
Vec_i16 = []
Vec_i32 = []
Vec_i64 = []
Vec_i128 = []
Vec_isize = []
VecSelectedType = []
VecString = []
Vec_u8 = []
Vec_u16 = []
Vec_u32 = []
Vec_u64 = []
Vec_u128 = []
Vec_usize = []
VecWhatever = []

#Keys:

all_key_types_String = []
all_key_types_Arc_String = []

#Vec<u8> keys?

#Key per type?

#bool keys

#bool_key_type_String = []
#bool_key_type_Arc_String = []

#char keys

#char_key_type_String = []
#char_key_type_Arc_String = []

#f32 keys

#f32_key_type_String = []
#f32_key_type_Arc_String = []

#f64 keys

#f64_key_type_String = []
#f64_key_type_Arc_String = []

#i8 keys

#i8_key_type_String = []
#i8_key_type_Arc_String = []

#i16 keys

#i16_key_type_String = []
#i16_key_type_Arc_String = []

#i32 keys

#i32_key_type_String = []
#i32_key_type_Arc_String = []

#i64 keys

#i64_key_type_String = []
#i64_key_type_Arc_String = []

#i128 keys

#i128_key_type_String = []
#i128_key_type_Arc_String = []

#isize keys

#isize_key_type_String = []
#isize_key_type_Arc_String = []

#SelectedType keys

#SelectedType_key_type_String = []
#SelectedType_key_type_Arc_String = []

#String keys

#String_key_type_String = []
#String_key_type_Arc_String = []

#u8 keys

#u8_key_type_String = []
#u8_key_type_Arc_String = []

#u16 keys

#u16_key_type_String = []
#u16_key_type_Arc_String = []

#u32 keys

#u32_key_type_String = []
#u32_key_type_Arc_String = []

#u64 keys

#u64_key_type_String = []
#u64_key_type_Arc_String = []

#u128 keys

#u128_key_type_String = []
#u128_key_type_Arc_String = []

#usize keys

#usize_key_type_String = []
#usize_key_type_Arc_String = []

#Whatever keys

#Whatever_key_type_String = []
#Whatever_key_type_Arc_String = []

#

#Arc:

#std_sync_arc

#Sync Types:

#std_sync_mutex = []
#std_sync_rwlock = []
#crossbeam_sync_shardedlock = []
#parking_lot_fairmutex = []
#parking_lot_mutex = []
#parking_lot_rwlock = []
#tokio_sync_mutex = []
#tokio_sync_rwlock = []
#tokio_sync_semaphore

#Actrusty Actors:

#st_io_actor = []
#ts_io_actor = []
#ttsb_io_actor = []

#Map Types:

#std_col_hashmap = []
#scc_hashmap = []
#scc_hashindex = []
#scc_treeindex = []
#dashmap = []

#Atomics

#std_sync_atomics #atomics by default (where applicable)
#std_sync_atomic_bool
#std_sync_atomic_i8
#std_sync_atomic_i16
#std_sync_atomic_i32
#std_sync_atomic_i64
#std_sync_atomic_isize
### atomic_ptr
#std_sync_atomic_u8
#std_sync_atomic_u16
#std_sync_atomic_u32
#std_sync_atomic_u64
#std_sync_atomic_usize

#Features will comprise of combinations of the above

###

#specifics

#sub_store features:

#<sync_type or map type>_<user type>

#Value Type Features:

#<actor type>_value

#User Type Specific Actor Value Types:

#<actor type>_<user type>_value

#arc_value

#arc_<user type>_value

#Applicable only to collections and atomics

#When used with collections creates a sitiaution where the collection is stored in the arc and replaced when it needs to be mutated.

#Atomics:

#atomic_value

#atomic_<user type>_value

#Applicable only to user types which have std atomic counterparts


#sync type values:

#<sync type>_value

#User Type Specific Actor Value Types:

#<sync type>_<user type>_value

