Skip to content

Releases: erikwang2013/bee-rust

Beerust 1.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:07

Fixed

  • bee_tsdb / bee_graph: enabling one backend feature on its own did not compile — the shared http_client helper lived inside the feature-gated influxdb / neo4j modules, so a build with only iotdb / questdb / arangodb / nebulagraph hit an unresolved import; it now lives in each crate's own crate::http (gated over exactly the backends that use it), and every single-backend feature builds on its own — the feature matrix was re-run item by item
  • bee_router: the optional security feature moved to security-rust 4.0.0 — Scanner / DetectionResult / AttackCategory / Severity keep the 1.x shape, so no source change was needed on the bee_router side; the capability surface grew: 32 built-in detectors (new: format_string, log4shell, HPP, formula_injection, reDoS), detectors are now tiered strong/weak (weak signals are fixed at Severity::Low), and Scanner::assess was added. The filter still decides "block on any hit", so weak signals (e.g. a repeated query parameter) are now blocked as well — there is no longer an injection point for a custom scanner; to let them through, build your own Filter around SecurityFilter::scanner(). The dependency graph now carries a single security-rust 4.0.0 instead of 1.x alongside 4.x; the docs were updated to match
  • duplicates merged: bee_tsdb / bee_graph / bee_search each keep one copy of the connection and error-mapping helpers (the backend name is now passed by the caller, error texts unchanged; aggregation_fn moved to bee_tsdb's lib), bee_graph's backtick / esc joined its http module, bee_orm extracted dedup_pk_values / index_rows_by and the migrate foreign-key clause, bee_session::refresh now reuses load, and bee_config's watch_path absorbed the remaining wait_for_change call path; bee_search error messages regain the backend name, and bee_kv's test stub is now private to its tests
  • public API removed (hence the minor version): Context::set_params / param, SecurityFilter::with_scanner, Traversal::edge_labels → edge_label: Option<String> (all three backends already took only the first label — behavior unchanged), GraphError::EdgeNotFound, ConfigError::ParseError / TypeMismatch, bee_config::watch_path_timeout, and bee_logs::Logger::async_ (a switch init() never read) — all of them with zero callers
  • dead dependencies removed: bee_router (tracing / http / bee_config / bee_logs), bee_session (async-trait), bee_config_macro (proc-macro2), and the duplicate dev serde in bee_tsdb / bee_graph / bee_search

Beerust 1.2.3

Choose a tag to compare

@github-actions github-actions released this 06 Oct 10:33

Fixed

  • bee_cli: the scaffold no longer generates projects that fail to compile — the new template named a package that does not resolve (bee-rust; it is published as bee_rust) and the controller template was missing #[async_trait] and used the private RouterError root path; a new BEE_CLI_E2E-gated test scaffolds a project and cargo checks it end to end
  • docs: the api controller example is now in its compiling form (own async-trait dependency, bee_rust::bee_router::context::RouterError); the #[bee(crate = "bee_rust::bee_orm")] spelling for bee_rust-only projects, the {name} route syntax with the ns empty-prefix rule, and create() usage are documented; one Korean fragment in the Bengali api doc was fixed
  • examples/shortlink: internal error details go to the log instead of the response body, URL validation rejects empty host parts and control characters, and create_link / add_tag use the new Model::create() (the Click insert on the 302 hot path keeps insert())

Beerust 1.2.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 09:32
发布 1.2.2:create() + #[bee(crate)] + docs.rs metadata

- vue 版本引用与文档安装片段 1.2.1 → 1.2.2(21 处 + 镜像)

Beerust 1.2.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 06:14

Added

  • bee_orm: typed date/time and decimal fields behind opt-in features — chrono (NaiveDate / NaiveDateTime / DateTime<Utc>) and rust_decimal (Decimal) map to the Date / DateTime / DateTimeTz / Decimal SQL types on all three backends; bee_rust forwards them as orm-chrono / orm-rust_decimal (not in full)
  • bee_orm: honest boundaries for those types — sqlite stores them as TEXT (typeof = text; a DECIMAL declaration would gain NUMERIC affinity and silently turn "1.50" into REAL 1.5), mysql keeps microseconds in datetime(6) / timestamp(6) (TIMESTAMP reads back as UTC, DATETIME stays naive), and a pg numeric above 29 significant digits reads back as NULL; NaiveTime / DateTime<Local> / FixedOffset / nanoseconds are out of scope and need #[bee(sql_type = "…")], and with the feature off the model fails to compile (E0277)

Fixed

  • bee_orm: the many-to-many missing-relation hint now spells the target type ident (#[bee(m2m(Author))]) instead of the table name, so the suggestion still compiles for a renamed table
  • CI: rust-toolchain gained the explicit toolchain: stable input; the two test files that broke clippy --all-targets in the feature-less configuration got file-level cfg gates (bee_cache / bee_kv) and the bee_orm m2m doctest became backend-agnostic; the CLI migrate end-to-end test now builds its scratch crate online (offline only passed on a warm local cache) and runs in CI via BEE_CLI_E2E=1

Beerust 1.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 02:33

Added

  • bee_orm: the ORM now runs end to end — typed Value bind parameters (Null / Bool / Int / Float / Text / Bytes), #[derive(Model)] with #[bee(table / column / pk / auto / ignore)], model insert / update / delete, and QuerySet execution (all / one / count / exists / update / delete)
  • bee_orm: connection pools for all three backends (pool::{sqlite, postgres, mysql}::Pool) — connect(dsn, max_size), get() → CheckedConn, query / execute, status(), and transactions via begin / commit / rollback; a connection dropped mid-transaction is rolled back on sqlite and postgres
  • bee_orm: new postgres-tls feature (PostgreSQL over TLS with bundled Mozilla roots) and pool hardening — 30 s wait / 10 s create timeouts plus a prepared-statement cache on the postgres pool
  • bee_orm: model lifecycle — #[bee(auto_now_add)] / #[bee(auto_now)] timestamps, #[bee(soft_delete)] (delete flips the flag; with_deleted() / hard_delete() escape it), lifecycle hooks (before/after insert/update/delete), Model::insert_many (999-parameter chunks, not transactional) and QuerySet::filter_in plus sum / avg / min / max aggregates
  • bee_orm: non-destructive migrations — migrate::{create_table, add_missing_columns, sync} render dialect-aware DDL (sqlite AUTOINCREMENT / postgres IDENTITY / mysql AUTO_INCREMENT), adding tables and missing columns but never dropping or altering
  • bee_orm: foreign-key relations — #[bee(fk = Target)] (with #[bee(sql_type = "…")]) emits FK DDL, and rel::{fk_column_to, belongs_to, children, children_for} read them; enforcement follows the backend: postgres and sqlite (bundled build) enforce the reference, mysql ignores inline REFERENCES (a gap for round 5+)
  • bee_orm: many-to-many relations — #[bee(m2m(Target))] declares the relation, m2m::{attach, detach, related, related_for, related_ids} read and write it, and create_table / sync create the join table (add_missing_columns never touches it)
  • bee_orm: JSON columns — serde_json::Value fields map to TEXT / JSONB / JSON per backend, with honest NULL semantics: SQL NULL decodes to None, a stored JSON null document to Some(Json::Null)
  • bee_orm: opt-in MySQL table-level foreign keys — MigrateOptions { table_level_fk } with sync_with / create_table_with / add_missing_columns_with; off by default, and pre-existing orphan rows make ADD CONSTRAINT fail instead of being skipped silently
  • bee_orm: Pool::connect_tls_with for a custom rustls::ClientConfig, plus a bee_orm::rustls re-export so the config version always matches; connect_tls keeps the bundled webpki roots
  • bee_rust: four forwarding features — orm-sqlite / orm-postgres / orm-postgres-tls / orm-mysql forward a bee_orm backend through bee_rust (none of them are in full)
  • bee_cli: bee-rust migrate init scaffolds src/bin/bee_migrate.rs (refuses to overwrite an existing file) and bee-rust migrate run executes it via cargo run --bin bee_migrate
  • bee_kv / bee_cache: the Redis backends survive dropped connections — the underlying ConnectionManager reconnects on demand (no background thread) with exponential backoff and jitter (the command that hits the break errors; the next one waits for the fresh connection)
  • bee_kv / bee_cache: memcached backends (MemcacheStore in bee_kv, MemcacheCache in bee_cache); incr creates the counter before applying the delta, unsigned counters floor at 0, and TTL 0 deletes the key

Changed

  • bee_orm migrations, relations (including many-to-many), the bee-rust migrate CLI subcommand, the Redis / Memcached backends, and the bee_rust ORM forwarding features are no longer marked as planned in the docs
  • the search / graph / tsdb drivers are no longer marked in the docs as planned or as a trait stub, but as implemented (opt-in features); the old examples were corrected (nonexistent ElasticsearchEngine / Neo4jDB type names, wrong bolt:// scheme)

Beerust 1.1.5

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:55

Added

  • Condensed crates.io READMEs for 11 more languages: docs/crates-readme.{ja,ko,ru,de,fr,es,pt,hi,ar,bn,id}.md. The language switcher on the crates.io page now points at these instead of the full repository READMEs, so every language gets the same short developer-facing document.

Beerust 1.1.4

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:48

Changed

  • The crates.io page (docs/crates-readme.md) is now bilingual: English first, Chinese below. crates.io renders only one README per crate and has no in-page language switch, so this puts English on the first screen while keeping the Chinese text on the same page.

Beerust 1.1.3

Choose a tag to compare

@github-actions github-actions released this 24 Sep 16:56

Added

  • The crates.io page (docs/crates-readme.md) now carries a 13-language switcher linking to the repository READMEs

Fixed

  • docs/api.*: 11 translations were missing the link to the Chinese original (api.md)
  • docs/CHANGELOG.zh.md and docs/CONTRIBUTING.zh.md were the only files in their families without a self-link

Beerust 1.1.2

Choose a tag to compare

@github-actions github-actions released this 24 Sep 15:23

Added

  • docs/crates-readme.md: a dedicated README for the crates.io pages — install, a runnable example (taken from examples/hello, which is covered by its E2E tests), a feature-flag table, and a sub-crate index
  • scripts/publish.sh: publishes workspace crates one by one, skips anything already uploaded, and honours the retry time crates.io returns when rate limiting

Fixed

  • Test suite did not compile (cargo test --workspace failed on main): the bee_router integration test was missing Serialize on Submit (it is returned as a Json response), Router::build() on two helpers, and & on eight status_line calls
  • hello example tests referenced the wrong CARGO_BIN_EXE name — the binary target keeps its hyphen (CARGO_BIN_EXE_hello-bee)
  • hello template autoescape test asserted &#39; while tera emits &#x27;; the escaping behaviour itself was correct
  • Clippy manual_split_once and manual_range_contains lints in bee_cli; an unused import in bee_router's integration test

Changed

  • All crates now carry readme and repository metadata — previously no crates.io page rendered a README and six crates lacked repository entirely
  • examples/hello is marked publish = false: it stays in the workspace as the E2E test harness but is no longer published to crates.io

v1.1.1

Choose a tag to compare

@erikwang2013 erikwang2013 released this 23 Sep 02:32
更新配置