holochain_sqlite 0.5.0-dev.2

Abstractions for persistence of Holochain state via SQLite
Documentation
[package]
name = "holochain_sqlite"
version = "0.5.0-dev.2"
description = "Abstractions for persistence of Holochain state via SQLite"
license = "Apache-2.0"
homepage = "https://github.com/holochain/holochain"
documentation = "https://docs.rs/holochain_sqlite"
authors = ["Holochain Core Dev Team <devcore@holochain.org>"]
edition = "2021"

# reminder - do not use workspace deps
[dependencies]
async-trait = "0.1"
anyhow = "1.0"
base64 = "0.22"
derive_more = "0.99"
fallible-iterator = "0.3.0"
futures = "0.3"
holo_hash = { path = "../holo_hash", version = "^0.5.0-dev.1" }
holochain_serialized_bytes = "=0.0.55"
holochain_util = { version = "^0.5.0-dev.0", path = "../holochain_util", features = [
  "backtrace",
  "time",
], optional = true }
holochain_zome_types = { version = "^0.5.0-dev.2", path = "../holochain_zome_types" }
holochain_nonce = { version = "^0.5.0-dev.0", path = "../holochain_nonce" }
kitsune_p2p_bin_data = { version = "^0.5.0-dev.1", path = "../kitsune_p2p/bin_data" }
kitsune_p2p_dht_arc = { version = "^0.5.0-dev.1", path = "../kitsune_p2p/dht_arc" }
kitsune_p2p_dht = { version = "^0.5.0-dev.1", path = "../kitsune_p2p/dht", features = [
  "test_utils",
] }
kitsune_p2p_timestamp = { version = "^0.5.0-dev.0", path = "../kitsune_p2p/timestamp" }
kitsune_p2p_types = { version = "^0.5.0-dev.2", path = "../kitsune_p2p/types", optional = true }
nanoid = "0.4"
once_cell = "1.4.1"
num_cpus = "1.13.0"
parking_lot = "0.12"
r2d2 = "0.8"
r2d2_sqlite = { version = "0.25.0", package = "hc_r2d2_sqlite" }
rmp-serde = "=1.3.0"
scheduled-thread-pool = "0.2"
serde = "1.0"
serde_json = { version = "1.0.51", features = ["preserve_order"] }
shrinkwraprs = "0.3.0"
sodoken = "=0.0.11"
tempfile = "3.3"
thiserror = "1.0.22"
tokio = { version = "1.27", features = [
  "macros",
  "rt-multi-thread",
  "io-util",
  "sync",
  "time",
] }
tracing = "0.1.18"
getrandom = "0.2.7"
opentelemetry_api = { version = "=0.20.0", features = ["metrics"] }

rusqlite = { version = "0.32.1", features = [
  "blob",      # better integration with blob types (Read, Write, etc)
  "backup",
  "trace",
  "functions", # rust scalar / agg / window functions
  #"chrono",      # integration with chrono crate
  #"hooks",       # sqlite notification callbacks
  #"serde_json",  # integration with serde_json crate
  #"url",         # integration with url crate
  #"uuid",        # integration with uuid crate
] }

[dev-dependencies]
holochain_sqlite = { path = ".", features = ["test_utils", "slow_tests"] }
holochain_trace = { version = "^0.5.0-dev.1", path = "../holochain_trace" }
nanoid = "0.4.0"
rand = "0.8.5"
walkdir = "2.5.0"

[build-dependencies]
pretty_assertions = "1.4"
sqlformat = "=0.2.6"

[target.'cfg(loom)'.dev-dependencies]
loom = { version = "0.7", features = ["futures", "checkpoint"] }
holochain_sqlite = { path = ".", default-features = false, features = [
  "test_utils",
] }

[lints]
workspace = true

[features]
default = ["sqlite", "kitsune_p2p_types", "holochain_util"]

test_utils = []

slow_tests = []

# Use at-rest encryption of databases
sqlite-encrypted = [
  "rusqlite/bundled-sqlcipher-vendored-openssl",
  "r2d2_sqlite/bundled-sqlcipher-vendored-openssl",
  "holo_hash/sqlite-encrypted",
  "holochain_zome_types/sqlite-encrypted",
  "kitsune_p2p_bin_data/sqlite-encrypted",
  "kitsune_p2p_types/sqlite-encrypted",
  "kitsune_p2p_dht_arc/sqlite-encrypted",
]

# Compile SQLite from source rather than depending on a library
sqlite = [
  "rusqlite/bundled",
  "r2d2_sqlite/bundled",
  "holo_hash/sqlite",
  "holochain_zome_types/sqlite",
  "kitsune_p2p_bin_data/sqlite",
  "kitsune_p2p_dht_arc/sqlite",
  "kitsune_p2p_types/sqlite",
]

# Enables tracing instrumentation 
# (we experience segfaults in some tests if there is too much instrumentation)
instrument = []