Skip to content

Commit a6fb30b

Browse files
committed
Release v0.9.19: remove unused public API and collapse duplication
Bump crate and macro versions to 0.9.19 and refresh the changelog, README, and mdBook docs. Remove public API that carried no behavior and had no implementors, constructors, or call sites: the Collection, CommaSeparated, DbEnum, WithDefault, Accessor, Mutator, and AttributeCaster items from tideorm::types, RelationLoader from tideorm::relations, CacheWarmer from tideorm::cache, and CacheOptions::tags with its with_tag/with_tags builders (tags were stored but never read, and no tag-based invalidation exists). The live CastType::Collection and CastType::CommaSeparated variants are unchanged. Collapse duplicated code with no behavior change: the 17-method where_* family shared by OrGroup and OrBranch now comes from one declarative macro, and QueryBuilder::or_where_* delegate to OrGroup. In the macro crate, the relation-wrapper init/refresh pair, entity relation-def key resolution, the generated Model::find/find_with bodies, and the entity-manager should_persist check are each single-source; save_with_one reuses apply_foreign_key. Drop dead inert plumbing (six never-read auto_* attribute options, a discarded JSON-path predicate parameter, redundant allow(unused_imports) markers, self-restating comments), simplify the SeaORM-facade re-exports, and remove abandoned scratch (wip/, objsafe/) plus the stale wip/** package exclude. Verified with clippy --workspace --all-targets --all-features -D warnings, fmt --check, the lib test matrix across postgres/sqlite/mysql, the macro-crate tests, the trybuild UI suites, cargo package -p tideorm-macros, mdbook build, and the full example suite against live PostgreSQL and MySQL.
1 parent 326e2cd commit a6fb30b

43 files changed

Lines changed: 3313 additions & 4789 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.9.19] - 2026-07-18
11+
12+
### Removed
13+
14+
- Removed unused public API that carried no behavior and had no implementors, constructors, or call sites: the `Collection`, `CommaSeparated`, `DbEnum`, `WithDefault`, `Accessor`, `Mutator`, and `AttributeCaster` items from `tideorm::types` (and the prelude); `RelationLoader` from `tideorm::relations`; `CacheWarmer` from `tideorm::cache`; and `CacheOptions::tags` together with its `with_tag`/`with_tags` builders (tags were stored but never read, and no tag-based cache invalidation exists). The live `CastType::Collection` and `CastType::CommaSeparated` cast variants are unaffected. This is the only source-visible breaking change; if you referenced any of these directly, drop the reference.
15+
16+
### Internal
17+
18+
- Collapsed duplicated code with no behavior change. The 17-method `where_*` condition-builder family that `OrGroup` and `OrBranch` implemented byte-for-byte identically now comes from a single declarative macro, and `QueryBuilder::or_where_*` delegate to `OrGroup` instead of re-inlining each condition literal. In the macro crate, the relation-wrapper field-init/state-refresh pair, the entity relation-definition key resolution, the generated `Model::find`/`find_with` bodies, and the entity-manager `should_persist` check are each now single-source; `save_with_one` reuses the existing `apply_foreign_key` helper.
19+
- Removed dead code and inert plumbing the compiler could not surface: six never-read `auto_*` model attribute options in the macro crate, a discarded `exists` parameter on the JSON-path predicate helper, redundant `#[allow(unused_imports)]` markers, and self-restating step comments. Simplified the internal SeaORM-facade so the shared SQL-safety validators are re-exported directly instead of through pass-through wrapper functions.
20+
- Removed abandoned working-tree scratch (`wip/`, `objsafe/`) and the now-stale `wip/**` entry from the package `exclude` list.
21+
- Verified with `cargo clippy --workspace --all-targets --all-features -- -D warnings`, `cargo fmt --all --check`, `cargo test --lib` across the PostgreSQL, SQLite, and MySQL feature sets, `cargo test -p tideorm-macros --lib`, the `relation_compile_fail` and `encrypted_fields_feature_compile_fail` trybuild suites, `cargo package -p tideorm-macros --allow-dirty`, `mdbook build`, and by running the full example binary suite against live PostgreSQL and MySQL servers.
22+
1023
## [0.9.18] - 2026-06-07
1124

1225
### Fixed
@@ -965,7 +978,8 @@ This is the first public release of TideORM, a developer-friendly ORM for Rust w
965978
- **Repository:** [https://github.com/mohamadzoh/tideorm](https://github.com/mohamadzoh/tideorm)
966979
- **Documentation:** See README.md and examples/
967980

968-
[Unreleased]: https://github.com/mohamadzoh/tideorm/compare/v0.9.18...HEAD
981+
[Unreleased]: https://github.com/mohamadzoh/tideorm/compare/v0.9.19...HEAD
982+
[0.9.19]: https://github.com/mohamadzoh/tideorm/compare/v0.9.18...v0.9.19
969983
[0.9.18]: https://github.com/mohamadzoh/tideorm/compare/v0.9.17...v0.9.18
970984
[0.9.17]: https://github.com/mohamadzoh/tideorm/compare/v0.9.16...v0.9.17
971985
[0.9.16]: https://github.com/mohamadzoh/tideorm/compare/v0.9.15...v0.9.16

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "tideorm"
3-
version = "0.9.18"
3+
version = "0.9.19"
44
edition = "2024"
55
authors = ["Mohamad Al Zohbie <alzoubi528@gmail.com>"]
66
description = "A developer-friendly ORM for Rust with clean, expressive syntax"
@@ -11,7 +11,7 @@ keywords = ["orm", "database", "postgres", "mysql", "sqlite"]
1111
categories = ["database"]
1212
readme = "README.md"
1313
rust-version = "1.85"
14-
exclude = [".cargo/**", ".github/**", ".env.example", "book.toml", "docs/CNAME", "tests/**", "wip/**"]
14+
exclude = [".cargo/**", ".github/**", ".env.example", "book.toml", "docs/CNAME", "tests/**"]
1515

1616
[workspace]
1717
members = [".", "tideorm-macros"]
@@ -22,7 +22,7 @@ default = ["postgres", "runtime-tokio"]
2222
postgres = ["sea-orm/sqlx-postgres"]
2323
mysql = ["sea-orm/sqlx-mysql"]
2424
sqlite = ["sea-orm/sqlx-sqlite"]
25-
runtime-tokio = ["sea-orm/runtime-tokio-rustls", "dep:tokio"]
25+
runtime-tokio = ["sea-orm/runtime-tokio-rustls"]
2626
runtime-async-std = ["sea-orm/runtime-async-std-rustls"]
2727
# These module flags intentionally gate TideORM's public API surface via #[cfg(feature = ...)]
2828
# and feature-specific tests/benches only. They do not enable extra dependencies.
@@ -37,7 +37,6 @@ encrypted-fields = []
3737
sea-orm = { version = "2.0.0-rc.38", default-features = false, features = ["macros", "with-chrono", "with-json", "with-rust_decimal", "with-uuid", "schema-sync"] }
3838

3939
# Async runtime
40-
tokio = { version = "1.51.0", features = ["full"], optional = true }
4140
async-trait = "0.1.89"
4241

4342
# Serialization
@@ -53,7 +52,7 @@ rust_decimal = { version = "1.41.0", features = ["serde"] }
5352
thiserror = "2.0.18"
5453

5554
# Derive macros (our own crate)
56-
tideorm-macros = { version = "0.9.18", path = "tideorm-macros" }
55+
tideorm-macros = { version = "0.9.19", path = "tideorm-macros" }
5756

5857
# Utils
5958
parking_lot = "0.12.5"

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ Use model-level encrypted fields when you want selected persisted columns, such
137137

138138
```toml
139139
[dependencies]
140-
tideorm = { version = "0.9.18", features = ["postgres", "encrypted-fields"] }
140+
tideorm = { version = "0.9.19", features = ["postgres", "encrypted-fields"] }
141141
```
142142

143143
```rust
@@ -178,31 +178,31 @@ Encrypted field notes:
178178
```toml
179179
[dependencies]
180180
# PostgreSQL (default)
181-
tideorm = { version = "0.9.18", features = ["postgres"] }
181+
tideorm = { version = "0.9.19", features = ["postgres"] }
182182

183183
# MySQL
184-
tideorm = { version = "0.9.18", features = ["mysql"] }
184+
tideorm = { version = "0.9.19", features = ["mysql"] }
185185

186186
# SQLite
187-
tideorm = { version = "0.9.18", features = ["sqlite"] }
187+
tideorm = { version = "0.9.19", features = ["sqlite"] }
188188

189189
# Enable attachments support explicitly
190-
tideorm = { version = "0.9.18", features = ["postgres", "attachments"] }
190+
tideorm = { version = "0.9.19", features = ["postgres", "attachments"] }
191191

192192
# Enable translations support explicitly
193-
tideorm = { version = "0.9.18", features = ["postgres", "translations"] }
193+
tideorm = { version = "0.9.19", features = ["postgres", "translations"] }
194194

195195
# Enable full-text search support explicitly
196-
tideorm = { version = "0.9.18", features = ["postgres", "fulltext"] }
196+
tideorm = { version = "0.9.19", features = ["postgres", "fulltext"] }
197197

198198
# Enable the entity manager explicitly
199-
tideorm = { version = "0.9.18", features = ["postgres", "entity-manager"] }
199+
tideorm = { version = "0.9.19", features = ["postgres", "entity-manager"] }
200200

201201
# Enable model dirty tracking explicitly
202-
tideorm = { version = "0.9.18", features = ["postgres", "dirty-tracking"] }
202+
tideorm = { version = "0.9.19", features = ["postgres", "dirty-tracking"] }
203203

204204
# Enable model encrypted fields explicitly
205-
tideorm = { version = "0.9.18", features = ["postgres", "encrypted-fields"] }
205+
tideorm = { version = "0.9.19", features = ["postgres", "encrypted-fields"] }
206206
```
207207

208208
### Feature Flags

docs/entity-manager.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ An `EntityManager` owns a database handle, caches loaded models by primary key,
88

99
```toml
1010
[dependencies]
11-
tideorm = { version = "0.9.18", features = ["postgres", "entity-manager"] }
11+
tideorm = { version = "0.9.19", features = ["postgres", "entity-manager"] }
1212
```
1313

1414
Use the backend feature you need (`postgres`, `mysql`, or `sqlite`) alongside `entity-manager`.

0 commit comments

Comments
 (0)