[package]
name = "revolt-database"
version = "0.11.2"
edition = "2021"
license = "AGPL-3.0-or-later"
authors = ["Paul Makles <me@insrt.uk>"]
description = "Revolt Backend: Database Implementation"
repository = "https://github.com/stoatchat/stoatchat"

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

[features]
# Databases
mongodb = ["dep:mongodb", "bson", "authifier/database-mongodb"]

# ... Other
tasks = ["isahc", "linkify", "url-escape"]
async-std-runtime = ["async-std", "authifier/async-std-runtime"]
rocket-impl = [
    "rocket",
    "schemars",
    "revolt_okapi",
    "revolt_rocket_okapi",
    "authifier/rocket_impl",
]
axum-impl = ["axum", "revolt-result/axum"]
redis-is-patched = ["revolt-presence/redis-is-patched"]
voice = ["livekit-api", "livekit-protocol", "livekit-runtime"]

# Default Features
default = ["mongodb", "async-std-runtime", "tasks"]

[dependencies]
# Core
revolt-config = { version = "0.11.2", path = "../config", features = [
    "report-macros",
] }
revolt-result = { version = "0.11.2", path = "../result" }
revolt-models = { version = "0.11.2", path = "../models", features = [
    "validator",
] }
revolt-presence = { version = "0.11.2", path = "../presence" }
revolt-permissions = { version = "0.11.2", path = "../permissions", features = [
    "serde",
    "bson",
] }
revolt-parser = { version = "0.11.2", path = "../parser" }

# Utility
log = "0.4"
lru = "0.11.0"
rand = "0.8.5"
ulid = "1.0.0"
nanoid = "0.4.0"
base64 = "0.21.3"
once_cell = "1.17"
indexmap = "1.9.1"
decancer = "1.6.2"
deadqueue = "0.2.4"
linkify = { optional = true, version = "0.8.1" }
url-escape = { optional = true, version = "0.1.1" }
validator = { version = "0.16", features = ["derive"] }
isahc = { optional = true, version = "1.7", features = ["json"] }

# Serialisation
serde_json = "1"
revolt_optional_struct = "0.2.0"
serde = { version = "1", features = ["derive"] }
iso8601-timestamp = { version = "0.2.10", features = ["serde", "bson"] }

# Events
redis-kiss = { version = "0.1.4" }

# Database
bson = { optional = true, version = "2.1.0" }
mongodb = { optional = true, version = "3.1.0" }

# Database Migration
unicode-segmentation = "1.10.1"
regex = "1"

# Async Language Features
futures = "0.3.19"
async-lock = "2.8.0"
async-trait = "0.1.51"
async-recursion = "1.0.4"

# Async
async-std = { version = "1.8.0", features = ["attributes"], optional = true }

# Axum Impl
axum = { version = "0.7.5", optional = true }

# Rocket Impl
schemars = { version = "0.8.8", optional = true }
rocket = { version = "0.5.1", default-features = false, features = [
    "json",
], optional = true }
revolt_okapi = { version = "0.9.1", optional = true }
revolt_rocket_okapi = { version = "0.10.0", optional = true }

# Authifier
authifier = { version = "1.0.16" }

# RabbitMQ
amqprs = { version = "1.7.0" }

# Voice
livekit-api = { version = "0.4.4", optional = true }
livekit-protocol = { version = "0.4.0", optional = true }
livekit-runtime = { version = "0.3.1", features = ["tokio"], optional = true }
