sea-orm 2.0.1

🐚 An async & dynamic ORM for Rust
Documentation
[workspace]
members = [".", "sea-orm-macros", "sea-orm-codegen", "sea-orm-arrow"]

[package]
authors       = ["Chris Tsang <chris.2y3@outlook.com>"]
categories    = ["database"]
description   = "🐚 An async & dynamic ORM for Rust"
documentation = "https://docs.rs/sea-orm"
edition       = "2024"
homepage      = "https://www.sea-ql.org/SeaORM"
keywords      = ["async", "orm", "mysql", "postgres", "sqlite"]
license       = "MIT OR Apache-2.0"
name          = "sea-orm"
repository    = "https://github.com/SeaQL/sea-orm"
rust-version  = "1.94.0"
version       = "2.0.1"

[package.metadata.docs.rs]
features = [
    "default",
    "sqlx-all",
    "mock",
    "proxy",
    "rbac",
    "schema-sync",
    "tracing-spans",
    "runtime-tokio-native-tls",
    "postgres-array",
    "postgres-vector",
    "with-ipnetwork",
    "with-arrow",
    "stream",
]
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "sea_orm"
path = "src/lib.rs"

[dependencies]
async-stream = { version = "0.3", default-features = false }
async-trait = { version = "0.1", default-features = false }
bigdecimal = { version = "0.4", default-features = false, features = [
    "std",
], optional = true }
chrono = { version = "0.4.30", default-features = false, optional = true }
derive-where = "1.6.1"
derive_more = { version = "2", features = ["debug"] }
futures-util = { version = "0.3", default-features = false, features = [
    "std",
] }
inventory = { version = "0.3", optional = true }
ipnetwork = { version = "0.21", default-features = false, optional = true, features = [
    "serde",
] }
itertools = "0.14.0"
log = { version = "0.4", default-features = false }
mac_address = { version = "1.1", default-features = false, optional = true }
ouroboros = { version = "0.18", default-features = false, optional = true }
pgvector = { version = "~0.4", default-features = false, optional = true }
rust_decimal = { version = "1", default-features = false, features = [
    "std",
], optional = true }
sea-orm-arrow = { version = "2.0.0-rc", path = "sea-orm-arrow", default-features = false, optional = true }
sea-orm-macros = { version = "~2.0.1", path = "sea-orm-macros", default-features = false, features = [
    "async",
    "strum",
] }
sea-query = { version = "~1.0.0", default-features = false, features = [
    "thread-safe",
    "hashable-value",
    "backend-mysql",
    "backend-postgres",
    "backend-sqlite",
    "sea-orm",
] }
sea-query-sqlx = { version = "0.9", default-features = false, optional = true }
sea-schema = { version = "0.18.1", default-features = false, features = [
    "discovery",
    "writer",
    "probe",
], optional = true }
serde = { version = "1.0", default-features = false, optional = true }
serde_json = { version = "1.0", default-features = false, optional = true }
sqlx = { version = "0.9.0", default-features = false, optional = true }
sqlx-core = { version = "0.9.0", default-features = false, optional = true }
strum = { version = "0.28", default-features = false }
thiserror = { version = "2", default-features = false }
time = { version = "0.3.36", default-features = false, optional = true }
tracing = { version = "0.1", default-features = false, features = [
    "attributes",
    "log",
] }
url = { version = "2.2", default-features = false }
uuid = { version = "1", default-features = false, optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
web-time = { version = "1.1.0", default-features = false }

[dev-dependencies]
dotenv = "0.15"
maplit = { version = "1" }
pretty_assertions = { version = "0.7" }
sea-orm = { path = ".", features = [
    "debug-print",
    "mock",
    "postgres-array",
    "tests-cfg",
] }
smol = { version = "1.2" }
smol-potat = { version = "1.1" }
time = { version = "0.3.36", features = ["macros"] }
tokio = { version = "1.6", features = ["full"] }
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
uuid = { version = "1", features = ["v4"] }

[features]
debug-print = []
default = [
    "macros",
    "with-json",
    "with-chrono",
    "with-rust_decimal",
    "with-uuid",
    "with-time",
    "sqlite-use-returning-for-3_35",
    "stream",
]
entity-registry = ["inventory", "sea-orm-macros/entity-registry"]
json-array = [
    "postgres-array",
] # this does not actually enable sqlx-postgres, but only a few traits to support array in sea-query
macros = ["sea-orm-macros/derive"]
mariadb-use-returning = []
mock = []
postgres-array = [
    "sea-query/postgres-array",
    "sea-orm-macros/postgres-array",
    "sea-query-sqlx?/postgres-array",
]
postgres-use-serial-pk = ["sea-query/option-postgres-use-serial"]
postgres-vector = [
    "pgvector",
    "sea-query/postgres-vector",
    "sea-query-sqlx?/postgres-vector",
]
proxy = ["serde/derive"]
rbac = ["sea-query/audit", "macros"]
runtime-async-std = ["sqlx?/runtime-async-std"]
runtime-async-std-native-tls = ["sqlx?/tls-native-tls", "runtime-async-std"]
runtime-async-std-rustls = ["sqlx?/tls-rustls", "runtime-async-std"]
runtime-tokio = ["sqlx?/runtime-tokio"]
runtime-tokio-native-tls = ["sqlx?/tls-native-tls", "runtime-tokio"]
runtime-tokio-rustls = ["sqlx?/tls-rustls", "runtime-tokio"]
rusqlite = []
schema-sync = ["sea-schema"]
sea-orm-internal = []
seaography = ["sea-orm-macros/seaography"]
serde = ["dep:serde", "serde/derive", "uuid?/serde"]
sqlite-no-row-value-before-3_15 = []
sqlite-use-returning-for-3_35 = []
sqlx-all = ["sqlx-mysql", "sqlx-postgres", "sqlx-sqlite"]
sqlx-dep = ["sqlx", "sqlx-core"]
sqlx-mysql = [
    "sqlx-dep",
    "sea-query-sqlx/sqlx-mysql",
    "sea-schema?/sqlx-mysql",
]
sqlx-postgres = [
    "sqlx-dep",
    "sea-orm-macros/sqlx-postgres",
    "sea-query-sqlx/sqlx-postgres",
    "postgres-array",
    "sea-schema?/sqlx-postgres",
]
sqlx-sqlite = [
    "sqlx-dep",
    "sea-query-sqlx/sqlx-sqlite",
    "sea-schema?/sqlx-sqlite",
]
stream = ["dep:ouroboros"]
sync = []
tests-cfg = ["serde/derive"]
tests-features = [
    "default",
    "postgres-array",
    "rbac",
    "schema-sync",
    "with-arrow",
    "with-bigdecimal",
    "with-ipnetwork",
]
tracing-spans = []
with-arrow = ["sea-orm-arrow", "sea-orm-macros/with-arrow"]
with-bigdecimal = [
    "bigdecimal",
    "sea-query/with-bigdecimal",
    "sea-query-sqlx?/with-bigdecimal",
    "sea-orm-arrow?/with-bigdecimal",
]
with-chrono = [
    "chrono",
    "sea-query/with-chrono",
    "sea-query-sqlx?/with-chrono",
    "sea-orm-arrow?/with-chrono",
]
with-ipnetwork = [
    "ipnetwork",
    "sea-query/with-ipnetwork",
    "sea-query-sqlx?/with-ipnetwork",
]
with-json = [
    "dep:serde",
    "serde_json",
    "sea-query/with-json",
    "sea-orm-macros/with-json",
    "chrono?/serde",
    "rust_decimal?/serde",
    "bigdecimal?/serde",
    "uuid?/serde",
    "time?/serde",
    "mac_address?/serde",
    "pgvector?/serde",
    "sea-query-sqlx?/with-json",
]
with-mac_address = [
    "mac_address",
    "sea-query/with-mac_address",
    "sea-query-sqlx?/with-mac_address",
]
with-rust_decimal = [
    "rust_decimal",
    "sea-query/with-rust_decimal",
    "sea-query-sqlx?/with-rust_decimal",
    "sea-orm-arrow?/with-rust_decimal",
]
with-time = [
    "time",
    "sea-query/with-time",
    "sea-query-sqlx?/with-time",
    "sea-orm-arrow?/with-time",
]
with-uuid = ["uuid", "sea-query/with-uuid", "sea-query-sqlx?/with-uuid"]

# This allows us to develop using a local version of sea-query
[patch.crates-io]
# sea-query = { path = "../sea-query" }
# sea-query = { git = "https://github.com/SeaQL/sea-query", branch = "master" }