[package]
name = "lbug"
version = "0.17.1"
description = "An in-process property graph database management system built for query speed and scalability"
keywords = ["database", "graph", "ffi"]
readme = "lbug-src/README.md"
homepage = "https://ladybugdb.com/"
repository = "https://github.com/LadybugDB/ladybug-rust"
license = "MIT"
categories = ["database"]

rust-version = "1.81"
edition = "2021"

# Only include files required to build to keep the crate size small
include = [
    "build.rs",
    "/scripts",
    "/src",
    "/include",
    # If more files are added to lbug-src, they should also be added to the rerun-if-changed
    # instructions in build.rs so that rebuilds are detected properly
    "/lbug-src/src",
    "/lbug-src/cmake",
    "/lbug-src/third_party",
    "/lbug-src/CMakeLists.txt",
    "/lbug-src/tools/CMakeLists.txt",
]

[dependencies]
arrow = { version = "55", optional = true, default-features = false, features = ["ffi"] }
cxx = "=1.0.138" # the last version that builds on clang 15
rust_decimal = { version = "1.37", default-features = false }
serde_json = "1"
time = "0.3"
uuid = "1.6"

[build-dependencies]
cmake = "0.1"
cxx-build = "=1.0.138" # should match the `cxx` version
rustversion = "1"

[dev-dependencies]
anyhow = "1"
rust_decimal_macros = "1.37"
tempfile = "3"
time = { version = "0.3", features = ["macros"] }

[features]
default = []
arrow = ["dep:arrow"]
extension_tests = []

[package.metadata.docs.rs]
all-features = true

[profile.relwithdebinfo]
inherits = "release"
debug = true

[lints.clippy]
cargo = { level = "warn", priority = -1 }
correctness = { level = "warn", priority = -1 }
perf = { level = "warn", priority = -1 }
style = { level = "warn", priority = -1 }
suspicious = { level = "warn", priority = -1 }

complexity = { level = "warn", priority = -1 }
too_many_arguments = "allow"
type_complexity = "allow"

pedantic = { level = "warn", priority = -1 }
inline_always = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_pass_by_value = "allow"
redundant_closure_for_method_calls = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
struct_excessive_bools = "allow"
too_many_lines = "allow"
unreadable_literal = "allow"
