[package]
edition = "2024"
name = "this-rs"
version = "0.0.9"
authors = ["Riviere Théotime <t@ffs.holdings>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Framework for building complex multi-entity REST and GraphQL APIs with many relationships"
readme = "README.md"
keywords = [
"entity",
"relationship",
"rest",
"graphql",
"api",
]
categories = [
"web-programming",
"web-programming::http-server",
"database",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/this-rs/this"
resolver = "2"
[features]
all = [
"in-memory",
"dynamodb",
"postgres",
"mongodb_backend",
"neo4j",
"scylladb",
"mysql",
"lmdb",
"graphql",
"grpc",
"websocket",
"push",
]
default = ["in-memory"]
dynamodb = [
"aws-sdk-dynamodb",
"serde_dynamo",
]
graphql = [
"async-graphql",
"async-graphql-axum",
"graphql-parser",
]
grpc = [
"tonic",
"tonic-prost",
"prost",
"prost-types",
]
in-memory = []
lmdb = ["heed"]
mongodb_backend = ["mongodb"]
mysql = [
"sqlx",
"sqlx/macros",
"sqlx/runtime-tokio-rustls",
"sqlx/mysql",
"sqlx/uuid",
"sqlx/chrono",
"sqlx/json",
"sqlx/migrate",
]
neo4j = ["neo4rs"]
postgres = [
"sqlx",
"sqlx/macros",
"sqlx/runtime-tokio-rustls",
"sqlx/postgres",
"sqlx/uuid",
"sqlx/chrono",
"sqlx/json",
"sqlx/migrate",
]
push = ["reqwest"]
scylladb = ["scylla"]
websocket = []
[lib]
name = "this"
path = "src/lib.rs"
[[example]]
name = "full_api"
path = "examples/full_api/main.rs"
[[example]]
name = "microservice"
path = "examples/microservice/main.rs"
[[example]]
name = "microservice_graphql"
path = "examples/microservice/main_graphql.rs"
required-features = ["graphql"]
[[example]]
name = "simple_api"
path = "examples/simple_api/main.rs"
[[test]]
name = "config_merging_tests"
path = "tests/config_merging_tests.rs"
[[test]]
name = "cross_protocol_tests"
path = "tests/cross_protocol_tests.rs"
[[test]]
name = "grpc_integration"
path = "tests/grpc_integration.rs"
[[test]]
name = "in_memory_tests"
path = "tests/in_memory_tests.rs"
[[test]]
name = "lmdb_tests"
path = "tests/lmdb_tests.rs"
[[test]]
name = "mongodb_tests"
path = "tests/mongodb_tests.rs"
[[test]]
name = "mysql_tests"
path = "tests/mysql_tests.rs"
[[test]]
name = "neo4j_tests"
path = "tests/neo4j_tests.rs"
[[test]]
name = "notification_e2e"
path = "tests/notification_e2e.rs"
[[test]]
name = "postgres_tests"
path = "tests/postgres_tests.rs"
[[test]]
name = "scylladb_tests"
path = "tests/scylladb_tests.rs"
[[test]]
name = "websocket_integration"
path = "tests/websocket_integration.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.async-graphql]
version = "7"
optional = true
[dependencies.async-graphql-axum]
version = "7"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-sdk-dynamodb]
version = "1.93"
optional = true
[dependencies.axum]
version = "0.8"
features = [
"macros",
"ws",
]
[dependencies.bincode]
version = "2"
features = ["serde"]
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.futures]
version = "0.3"
[dependencies.graphql-parser]
version = "0.4"
optional = true
[dependencies.heed]
version = "0.22"
optional = true
[dependencies.indexmap]
version = "2.13.0"
[dependencies.mongodb]
version = "3"
optional = true
[dependencies.neo4rs]
version = "0.8"
optional = true
[dependencies.prost]
version = "0.14"
optional = true
[dependencies.prost-types]
version = "0.14"
optional = true
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12"
features = ["json"]
optional = true
[dependencies.scylla]
version = "1.4"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_dynamo]
version = "4.0"
optional = true
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sqlx]
version = "0.8"
optional = true
default-features = false
[dependencies.tera]
version = "1"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.40"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[dependencies.tonic]
version = "0.14"
optional = true
[dependencies.tonic-prost]
version = "0.14"
optional = true
[dependencies.tower]
version = "0.5"
[dependencies.tower-http]
version = "0.6"
features = [
"trace",
"cors",
]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dependencies.uuid]
version = "1.10"
features = [
"v4",
"serde",
]
[dependencies.validator]
version = "0.20"
features = ["derive"]
[dev-dependencies.axum-test]
version = "19.0"
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.reqwest]
version = "0.12"
features = ["json"]
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.testcontainers]
version = "0.27"
[dev-dependencies.testcontainers-modules]
version = "0.15"
features = [
"postgres",
"mongo",
"neo4j",
"mysql",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tokio-tungstenite]
version = "0.28"
[build-dependencies.tonic-prost-build]
version = "0.14"