From 8e904d6a14c49aad247de1997f1b512db1c0a405 Mon Sep 17 00:00:00 2001 From: cosmod Date: Tue, 3 Dec 2024 11:33:21 +0800 Subject: [PATCH] Release version 0.28.0 --- Cargo.toml | 1 + examples/actix-app/Cargo.toml | 12 +++--- examples/actix-app/src/controller/auth.rs | 50 +++++++++++------------ examples/amis-app/Cargo.toml | 6 +-- examples/axum-app/Cargo.toml | 10 ++--- examples/dioxus-desktop/Cargo.toml | 8 ++-- examples/minimal-app/Cargo.toml | 4 +- examples/ntex-app/Cargo.toml | 12 +++--- examples/ntex-app/src/controller/auth.rs | 50 +++++++++++------------ examples/ntex-app/src/model/tag.rs | 6 +-- zino-actix/Cargo.toml | 4 +- zino-amis/Cargo.toml | 4 +- zino-axum/Cargo.toml | 4 +- zino-cli/Cargo.toml | 4 +- zino-core/Cargo.toml | 4 +- zino-core/src/orm/mutation.rs | 9 +++- zino-derive/Cargo.toml | 4 +- zino-derive/src/entity.rs | 2 +- zino-dioxus/Cargo.toml | 4 +- zino-extra/Cargo.toml | 4 +- zino-http/Cargo.toml | 15 +++++++ zino-http/README.md | 11 +++++ zino-http/src/lib.rs | 4 ++ zino-model/Cargo.toml | 6 +-- zino-model/src/application/mod.rs | 7 +++- zino-model/src/collection/mod.rs | 7 +++- zino-model/src/dataset/mod.rs | 7 +++- zino-model/src/group/mod.rs | 7 +++- zino-model/src/lib.rs | 36 ++++++++-------- zino-model/src/log/mod.rs | 7 +++- zino-model/src/message/mod.rs | 7 +++- zino-model/src/order/mod.rs | 7 +++- zino-model/src/policy/mod.rs | 7 +++- zino-model/src/project/mod.rs | 7 +++- zino-model/src/record/mod.rs | 7 +++- zino-model/src/resource/mod.rs | 7 +++- zino-model/src/source/mod.rs | 7 +++- zino-model/src/tag/mod.rs | 7 +++- zino-model/src/task/mod.rs | 7 +++- zino-model/src/user/mod.rs | 7 +++- zino-ntex/Cargo.toml | 6 +-- zino/Cargo.toml | 12 +++--- 42 files changed, 238 insertions(+), 159 deletions(-) create mode 100644 zino-http/Cargo.toml create mode 100644 zino-http/README.md create mode 100644 zino-http/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 836f40dd..2694ec0a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ members = [ "zino-derive", "zino-dioxus", "zino-extra", + "zino-http", "zino-middleware", "zino-model", "zino-ntex", diff --git a/examples/actix-app/Cargo.toml b/examples/actix-app/Cargo.toml index 80f4a567..22c4c4d7 100644 --- a/examples/actix-app/Cargo.toml +++ b/examples/actix-app/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "actix-app" description = "An example for actix-web integration." -version = "0.9.0" -rust-version = "1.75" +version = "0.9.1" +rust-version = "1.80" edition = "2021" publish = false @@ -19,7 +19,7 @@ features = ["derive"] [dependencies.zino] path = "../../zino" -version = "0.26.4" +version = "0.27.0" features = [ "actix", "i18n", @@ -30,7 +30,7 @@ features = [ [dependencies.zino-core] path = "../../zino-core" -version = "0.27.4" +version = "0.28.0" features = [ "cookie", "env-filter", @@ -40,8 +40,8 @@ features = [ [dependencies.zino-derive] path = "../../zino-derive" -version = "0.24.4" +version = "0.25.0" [dependencies.zino-model] path = "../../zino-model" -version = "0.24.4" +version = "0.25.0" diff --git a/examples/actix-app/src/controller/auth.rs b/examples/actix-app/src/controller/auth.rs index 71bc40aa..4d4386fb 100644 --- a/examples/actix-app/src/controller/auth.rs +++ b/examples/actix-app/src/controller/auth.rs @@ -1,27 +1,27 @@ use zino::{prelude::*, Request, Response, Result}; -use zino_model::user::{JwtAuthService, User}; +use zino_model::user::{JwtAuthService, User, UserColumn::*}; pub async fn login(mut req: Request) -> Result { - let current_time = DateTime::now(); let body: Map = req.parse_body().await?; let (user_id, mut data) = User::generate_token(body).await.extract(&req)?; - let user_updates = json!({ - "status": "Active", - "last_login_at": data.remove("current_login_at").and_then(|v| v.as_date_time()), - "last_login_ip": data.remove("current_login_ip"), - "current_login_at": current_time, - "current_login_ip": req.client_ip(), - "$inc": { "login_count": 1 }, - }); - - let mut user_mutations = user_updates.into_map_opt().unwrap_or_default(); - let (validation, user) = User::mutate_by_id(&user_id, &mut user_mutations, None) + let last_login_ip = data.remove("current_login_ip"); + let last_login_at = data + .remove("current_login_at") + .and_then(|v| v.as_date_time()); + let mut mutation = MutationBuilder::::new() + .set(Status, "Active") + .set_if_not_null(LastLoginIp, last_login_ip) + .set_if_some(LastLoginAt, last_login_at) + .set_if_some(CurrentLoginIp, req.client_ip()) + .set_now(CurrentLoginAt) + .inc_one(LoginCount) + .set_now(UpdatedAt) + .inc_one(Version) + .build(); + let user: User = User::update_by_id(&user_id, &mut mutation) .await .extract(&req)?; - if !validation.is_success() { - reject!(req, validation); - } data.upsert("entry", user.snapshot()); let mut res = Response::default().context(&req); @@ -40,20 +40,20 @@ pub async fn refresh(req: Request) -> Result { pub async fn logout(req: Request) -> Result { let user_session = req .get_data::>() - .ok_or_else(|| warn!("401 Unauthorized: the user session is invalid")) + .ok_or_else(|| warn!("401 Unauthorized: user session is invalid")) .extract(&req)?; - - let mut mutations = Map::from_entry("status", "SignedOut"); let user_id = user_session.user_id(); - let (validation, user) = User::mutate_by_id(user_id, &mut mutations, None) + + let mut mutation = MutationBuilder::::new() + .set(Status, "SignedOut") + .set_now(UpdatedAt) + .inc_one(Version) + .build(); + let user: User = User::update_by_id(user_id, &mut mutation) .await .extract(&req)?; - if !validation.is_success() { - reject!(req, validation); - } - let data = Map::data_entry(user.snapshot()); let mut res = Response::default().context(&req); - res.set_json_data(data); + res.set_json_data(Map::data_entry(user.snapshot())); Ok(res.into()) } diff --git a/examples/amis-app/Cargo.toml b/examples/amis-app/Cargo.toml index eafd642a..d57f4b4c 100644 --- a/examples/amis-app/Cargo.toml +++ b/examples/amis-app/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "amis-app" description = "An example for amis UI generator." -version = "0.1.0" +version = "0.1.1" rust-version = "1.80" edition = "2021" publish = false @@ -12,8 +12,8 @@ features = ["macros"] [dependencies.zino-amis] path = "../../zino-amis" -version = "0.1.0" +version = "0.1.1" [dependencies.zino-core] path = "../../zino-core" -version = "0.27.4" +version = "0.28.0" diff --git a/examples/axum-app/Cargo.toml b/examples/axum-app/Cargo.toml index 26ed997d..a28ac56a 100644 --- a/examples/axum-app/Cargo.toml +++ b/examples/axum-app/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "axum-app" description = "An example for axum integration." -version = "0.15.0" +version = "0.15.1" rust-version = "1.80" edition = "2021" publish = false @@ -19,7 +19,7 @@ features = ["derive"] [dependencies.zino] path = "../../zino" -version = "0.26.4" +version = "0.27.0" features = [ "axum", "i18n", @@ -29,7 +29,7 @@ features = [ [dependencies.zino-core] path = "../../zino-core" -version = "0.27.4" +version = "0.28.0" features = [ "cookie", "env-filter", @@ -40,8 +40,8 @@ features = [ [dependencies.zino-derive] path = "../../zino-derive" -version = "0.24.4" +version = "0.25.0" [dependencies.zino-model] path = "../../zino-model" -version = "0.24.4" +version = "0.25.0" diff --git a/examples/dioxus-desktop/Cargo.toml b/examples/dioxus-desktop/Cargo.toml index 5868ce4b..ecc70d2b 100644 --- a/examples/dioxus-desktop/Cargo.toml +++ b/examples/dioxus-desktop/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "dioxus-desktop" description = "An example for Dioxus desktop integration." -version = "0.6.0" +version = "0.6.1" rust-version = "1.80" edition = "2021" publish = false @@ -22,14 +22,14 @@ features = [ [dependencies.zino] path = "../../zino" -version = "0.26.4" +version = "0.27.0" features = ["dioxus-desktop"] [dependencies.zino-core] path = "../../zino-core" -version = "0.27.4" +version = "0.28.0" features = ["env-filter", "tls-native"] [dependencies.zino-dioxus] path = "../../zino-dioxus" -version = "0.9.3" +version = "0.9.4" diff --git a/examples/minimal-app/Cargo.toml b/examples/minimal-app/Cargo.toml index 5f59a972..b2003e63 100644 --- a/examples/minimal-app/Cargo.toml +++ b/examples/minimal-app/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "minimal-app" description = "A minimal example to run a server." -version = "0.4.0" +version = "0.5.0" rust-version = "1.80" edition = "2021" publish = false [dependencies.zino] path = "../../zino" -version = "0.26.4" +version = "0.27.0" features = ["axum"] diff --git a/examples/ntex-app/Cargo.toml b/examples/ntex-app/Cargo.toml index ab152cc8..9025d325 100644 --- a/examples/ntex-app/Cargo.toml +++ b/examples/ntex-app/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ntex-app" description = "An example for ntex integration." -version = "0.3.0" +version = "0.4.0" rust-version = "1.80" edition = "2021" publish = false @@ -10,7 +10,7 @@ publish = false tracing = "0.1.41" [dependencies.ntex] -version = "2.8.0" +version = "2.9.0" default-features = false [dependencies.serde] @@ -19,7 +19,7 @@ features = ["derive"] [dependencies.zino] path = "../../zino" -version = "0.26.4" +version = "0.27.0" features = [ "i18n", "jwt", @@ -29,7 +29,7 @@ features = [ [dependencies.zino-core] path = "../../zino-core" -version = "0.27.4" +version = "0.28.0" features = [ "cookie", "env-filter", @@ -39,8 +39,8 @@ features = [ [dependencies.zino-derive] path = "../../zino-derive" -version = "0.24.4" +version = "0.25.0" [dependencies.zino-model] path = "../../zino-model" -version = "0.24.4" +version = "0.25.0" diff --git a/examples/ntex-app/src/controller/auth.rs b/examples/ntex-app/src/controller/auth.rs index 71bc40aa..4d4386fb 100644 --- a/examples/ntex-app/src/controller/auth.rs +++ b/examples/ntex-app/src/controller/auth.rs @@ -1,27 +1,27 @@ use zino::{prelude::*, Request, Response, Result}; -use zino_model::user::{JwtAuthService, User}; +use zino_model::user::{JwtAuthService, User, UserColumn::*}; pub async fn login(mut req: Request) -> Result { - let current_time = DateTime::now(); let body: Map = req.parse_body().await?; let (user_id, mut data) = User::generate_token(body).await.extract(&req)?; - let user_updates = json!({ - "status": "Active", - "last_login_at": data.remove("current_login_at").and_then(|v| v.as_date_time()), - "last_login_ip": data.remove("current_login_ip"), - "current_login_at": current_time, - "current_login_ip": req.client_ip(), - "$inc": { "login_count": 1 }, - }); - - let mut user_mutations = user_updates.into_map_opt().unwrap_or_default(); - let (validation, user) = User::mutate_by_id(&user_id, &mut user_mutations, None) + let last_login_ip = data.remove("current_login_ip"); + let last_login_at = data + .remove("current_login_at") + .and_then(|v| v.as_date_time()); + let mut mutation = MutationBuilder::::new() + .set(Status, "Active") + .set_if_not_null(LastLoginIp, last_login_ip) + .set_if_some(LastLoginAt, last_login_at) + .set_if_some(CurrentLoginIp, req.client_ip()) + .set_now(CurrentLoginAt) + .inc_one(LoginCount) + .set_now(UpdatedAt) + .inc_one(Version) + .build(); + let user: User = User::update_by_id(&user_id, &mut mutation) .await .extract(&req)?; - if !validation.is_success() { - reject!(req, validation); - } data.upsert("entry", user.snapshot()); let mut res = Response::default().context(&req); @@ -40,20 +40,20 @@ pub async fn refresh(req: Request) -> Result { pub async fn logout(req: Request) -> Result { let user_session = req .get_data::>() - .ok_or_else(|| warn!("401 Unauthorized: the user session is invalid")) + .ok_or_else(|| warn!("401 Unauthorized: user session is invalid")) .extract(&req)?; - - let mut mutations = Map::from_entry("status", "SignedOut"); let user_id = user_session.user_id(); - let (validation, user) = User::mutate_by_id(user_id, &mut mutations, None) + + let mut mutation = MutationBuilder::::new() + .set(Status, "SignedOut") + .set_now(UpdatedAt) + .inc_one(Version) + .build(); + let user: User = User::update_by_id(user_id, &mut mutation) .await .extract(&req)?; - if !validation.is_success() { - reject!(req, validation); - } - let data = Map::data_entry(user.snapshot()); let mut res = Response::default().context(&req); - res.set_json_data(data); + res.set_json_data(Map::data_entry(user.snapshot())); Ok(res.into()) } diff --git a/examples/ntex-app/src/model/tag.rs b/examples/ntex-app/src/model/tag.rs index c7db9870..a98dec6f 100644 --- a/examples/ntex-app/src/model/tag.rs +++ b/examples/ntex-app/src/model/tag.rs @@ -30,11 +30,7 @@ pub struct Tag { // Info fields. #[schema(not_null, index_type = "hash", comment = "Tag category")] category: String, - #[schema( - snapshot, - reference = "Tag", - comment = "Optional parent tag" - )] + #[schema(snapshot, reference = "Tag", comment = "Optional parent tag")] parent_id: Option, // Extensions. diff --git a/zino-actix/Cargo.toml b/zino-actix/Cargo.toml index 1200da80..2ec7be04 100644 --- a/zino-actix/Cargo.toml +++ b/zino-actix/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-actix" description = "Integrations with actix-web for zino." -version = "0.1.1" +version = "0.1.2" rust-version = "1.80" edition = "2021" license = "MIT" @@ -33,7 +33,7 @@ features = ["actix-web"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" features = [ "http02", "openapi", diff --git a/zino-amis/Cargo.toml b/zino-amis/Cargo.toml index 5f80ef19..7fe716f5 100644 --- a/zino-amis/Cargo.toml +++ b/zino-amis/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-amis" description = "UI generator for amis." -version = "0.1.0" +version = "0.1.1" rust-version = "1.80" edition = "2021" license = "MIT" @@ -37,5 +37,5 @@ features = ["parse"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" features = ["tracing-subscriber"] diff --git a/zino-axum/Cargo.toml b/zino-axum/Cargo.toml index 9992dedf..bf8c3bfa 100644 --- a/zino-axum/Cargo.toml +++ b/zino-axum/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-axum" description = "Integrations with axum for zino." -version = "0.1.2" +version = "0.1.3" rust-version = "1.80" edition = "2021" license = "MIT" @@ -63,5 +63,5 @@ features = ["axum"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.4" +version = "0.28.0" features = ["openapi", "runtime-tokio"] diff --git a/zino-cli/Cargo.toml b/zino-cli/Cargo.toml index 6cd7a41a..7a9e00e5 100644 --- a/zino-cli/Cargo.toml +++ b/zino-cli/Cargo.toml @@ -60,9 +60,9 @@ features = ["net"] [dependencies.zino] path = "../zino" -version = "0.26.4" +version = "0.27.0" features = ["axum"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.4" +version = "0.28.0" diff --git a/zino-core/Cargo.toml b/zino-core/Cargo.toml index 3d8ef71a..cd579bc3 100644 --- a/zino-core/Cargo.toml +++ b/zino-core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-core" description = "Core types and traits for zino." -version = "0.27.4" +version = "0.28.0" rust-version = "1.80" edition = "2021" license = "MIT" @@ -450,7 +450,7 @@ arrayvec = "0.7.6" base64-simd = "0.8.0" criterion = "0.5.1" data-encoding = "2.6.0" -indexmap = "2.6.0" +indexmap = "2.7.0" libsm = "0.6.0" sm3 = "0.4.2" sonic-rs = "0.3.16" diff --git a/zino-core/src/orm/mutation.rs b/zino-core/src/orm/mutation.rs index 94259021..40c8d002 100644 --- a/zino-core/src/orm/mutation.rs +++ b/zino-core/src/orm/mutation.rs @@ -4,7 +4,7 @@ use crate::{ datetime::DateTime, extension::JsonObjectExt, model::{EncodeColumn, Mutation, Query}, - Map, + JsonValue, Map, }; use std::marker::PhantomData; @@ -82,6 +82,13 @@ impl MutationBuilder { self } + /// Sets the value of a column to null. + #[inline] + pub fn set_null(mut self, col: E::Column) -> Self { + self.updates.upsert(col.as_ref(), JsonValue::Null); + self + } + /// Sets the value of a column to the current date time. #[inline] pub fn set_now(mut self, col: E::Column) -> Self { diff --git a/zino-derive/Cargo.toml b/zino-derive/Cargo.toml index 67c2abdd..07dc54d3 100644 --- a/zino-derive/Cargo.toml +++ b/zino-derive/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-derive" description = "Derived traits for zino." -version = "0.24.4" +version = "0.25.0" rust-version = "1.80" edition = "2021" license = "MIT" @@ -21,5 +21,5 @@ syn = "2.0.90" [dependencies.zino-core] path = "../zino-core" -version = "0.27.4" +version = "0.28.0" features = ["orm"] diff --git a/zino-derive/src/entity.rs b/zino-derive/src/entity.rs index 9ad02ad1..8b197fb7 100644 --- a/zino-derive/src/entity.rs +++ b/zino-derive/src/entity.rs @@ -58,7 +58,7 @@ pub(super) fn parse_token_stream(input: DeriveInput) -> TokenStream { impl std::fmt::Display for #model_column_type { #[inline] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - <#name>::format_column(self).fmt(f) + <#name as zino_core::orm::Entity>::format_column(self).fmt(f) } } diff --git a/zino-dioxus/Cargo.toml b/zino-dioxus/Cargo.toml index 76061e02..3b76348b 100644 --- a/zino-dioxus/Cargo.toml +++ b/zino-dioxus/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-dioxus" description = "Dioxus components for zino." -version = "0.9.3" +version = "0.9.4" rust-version = "1.80" edition = "2021" license = "MIT" @@ -72,5 +72,5 @@ features = [ [dependencies.zino-core] path = "../zino-core" -version = "0.27.4" +version = "0.28.0" features = ["runtime-tokio"] diff --git a/zino-extra/Cargo.toml b/zino-extra/Cargo.toml index 2536c69c..ef059ed0 100644 --- a/zino-extra/Cargo.toml +++ b/zino-extra/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-extra" description = "Extra utilities for zino." -version = "0.5.0" +version = "0.5.1" rust-version = "1.80" edition = "2021" license = "MIT" @@ -39,4 +39,4 @@ optional = true [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" diff --git a/zino-http/Cargo.toml b/zino-http/Cargo.toml new file mode 100644 index 00000000..04543c46 --- /dev/null +++ b/zino-http/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "zino-http" +description = "HTTP requests and responses for zino." +version = "0.0.1" +rust-version = "1.80" +edition = "2021" +license = "MIT" +categories = ["asynchronous", "network-programming", "web-programming"] +keywords = ["http", "web", "framework"] +homepage = "https://github.com/zino-rs/zino" +repository = "https://github.com/zino-rs/zino" +documentation = "https://docs.rs/zino-http" +readme = "README.md" + +[dependencies] diff --git a/zino-http/README.md b/zino-http/README.md new file mode 100644 index 00000000..34f8788f --- /dev/null +++ b/zino-http/README.md @@ -0,0 +1,11 @@ +[![github]](https://github.com/zino-rs/zino) +[![crates-io]](https://crates.io/crates/zino-http) +[![docs-rs]](https://docs.rs/zino-http) + +[github]: https://img.shields.io/badge/github-8da0cb?labelColor=555555&logo=github +[crates-io]: https://img.shields.io/badge/crates.io-fc8d62?labelColor=555555&logo=rust +[docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?labelColor=555555&logo=docs.rs + +HTTP requests and responses for [`zino`]. + +[`zino`]: https://github.com/zino-rs/zino diff --git a/zino-http/src/lib.rs b/zino-http/src/lib.rs new file mode 100644 index 00000000..8135ebc4 --- /dev/null +++ b/zino-http/src/lib.rs @@ -0,0 +1,4 @@ +#![doc = include_str!("../README.md")] +#![doc(html_favicon_url = "https://zino.cc/assets/zino-logo.png")] +#![doc(html_logo_url = "https://zino.cc/assets/zino-logo.svg")] +#![forbid(unsafe_code)] diff --git a/zino-model/Cargo.toml b/zino-model/Cargo.toml index a119dd8a..17138ca0 100644 --- a/zino-model/Cargo.toml +++ b/zino-model/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-model" description = "Domain models for zino." -version = "0.24.4" +version = "0.25.0" rust-version = "1.80" edition = "2021" license = "MIT" @@ -49,7 +49,7 @@ features = ["derive"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" features = [ "jwt", "orm", @@ -58,4 +58,4 @@ features = [ [dependencies.zino-derive] path = "../zino-derive" -version = "0.24.4" +version = "0.25.0" diff --git a/zino-model/src/application/mod.rs b/zino-model/src/application/mod.rs index a44587e4..d536fa5b 100644 --- a/zino-model/src/application/mod.rs +++ b/zino-model/src/application/mod.rs @@ -11,7 +11,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -20,8 +20,11 @@ use crate::tag::Tag; use zino_core::auth::UserSession; /// The `application` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Application { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/collection/mod.rs b/zino-model/src/collection/mod.rs index 7843b249..7d90c88c 100644 --- a/zino-model/src/collection/mod.rs +++ b/zino-model/src/collection/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -22,8 +22,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `collection` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Collection { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/dataset/mod.rs b/zino-model/src/dataset/mod.rs index 1e8d0593..1b944f27 100644 --- a/zino-model/src/dataset/mod.rs +++ b/zino-model/src/dataset/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -22,8 +22,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `dataset` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Dataset { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/group/mod.rs b/zino-model/src/group/mod.rs index a2f35d31..8331d3d8 100644 --- a/zino-model/src/group/mod.rs +++ b/zino-model/src/group/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -19,8 +19,11 @@ use crate::tag::Tag; use zino_core::auth::UserSession; /// The `group` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Group { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/lib.rs b/zino-model/src/lib.rs index 6067a7d1..49eecb47 100644 --- a/zino-model/src/lib.rs +++ b/zino-model/src/lib.rs @@ -24,21 +24,21 @@ pub mod task; pub mod log; pub mod record; -pub use group::Group; -pub use policy::Policy; -pub use resource::Resource; -pub use tag::Tag; -pub use user::User; - -pub use application::Application; -pub use message::Message; -pub use order::Order; - -pub use collection::Collection; -pub use dataset::Dataset; -pub use project::Project; -pub use source::Source; -pub use task::Task; - -pub use log::Log; -pub use record::Record; +pub use group::{Group, GroupColumn}; +pub use policy::{Policy, PolicyColumn}; +pub use resource::{Resource, ResourceColumn}; +pub use tag::{Tag, TagColumn}; +pub use user::{User, UserColumn}; + +pub use application::{Application, ApplicationColumn}; +pub use message::{Message, MessageColumn}; +pub use order::{Order, OrderColumn}; + +pub use collection::{Collection, CollectionColumn}; +pub use dataset::{Dataset, DatasetColumn}; +pub use project::{Project, ProjectColumn}; +pub use source::{Source, SourceColumn}; +pub use task::{Task, TaskColumn}; + +pub use log::{Log, LogColumn}; +pub use record::{Record, RecordColumn}; diff --git a/zino-model/src/log/mod.rs b/zino-model/src/log/mod.rs index 29f118b7..d010987a 100644 --- a/zino-model/src/log/mod.rs +++ b/zino-model/src/log/mod.rs @@ -9,7 +9,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(any(feature = "owner-id", feature = "maintainer-id"))] use crate::user::User; @@ -18,8 +18,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `log` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Log { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/message/mod.rs b/zino-model/src/message/mod.rs index 593fe9f2..9cdc2dad 100644 --- a/zino-model/src/message/mod.rs +++ b/zino-model/src/message/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -19,8 +19,11 @@ use crate::tag::Tag; use zino_core::auth::UserSession; /// The `message` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Message { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/order/mod.rs b/zino-model/src/order/mod.rs index b4825857..1bfd3313 100644 --- a/zino-model/src/order/mod.rs +++ b/zino-model/src/order/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -22,8 +22,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `order` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Order { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/policy/mod.rs b/zino-model/src/policy/mod.rs index bab8e5dc..9e722ef9 100644 --- a/zino-model/src/policy/mod.rs +++ b/zino-model/src/policy/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -22,8 +22,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `policy` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Policy { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/project/mod.rs b/zino-model/src/project/mod.rs index 46844751..506d9d14 100644 --- a/zino-model/src/project/mod.rs +++ b/zino-model/src/project/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -19,8 +19,11 @@ use crate::tag::Tag; use zino_core::auth::UserSession; /// The `project` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Project { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/record/mod.rs b/zino-model/src/record/mod.rs index 6e03bee9..869bfed8 100644 --- a/zino-model/src/record/mod.rs +++ b/zino-model/src/record/mod.rs @@ -9,7 +9,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(any(feature = "owner-id", feature = "maintainer-id"))] use crate::user::User; @@ -18,8 +18,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `record` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Record { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/resource/mod.rs b/zino-model/src/resource/mod.rs index 958239e9..6347d3eb 100644 --- a/zino-model/src/resource/mod.rs +++ b/zino-model/src/resource/mod.rs @@ -9,7 +9,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -21,8 +21,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `resource` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Resource { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/source/mod.rs b/zino-model/src/source/mod.rs index 446d0d5c..d795f810 100644 --- a/zino-model/src/source/mod.rs +++ b/zino-model/src/source/mod.rs @@ -9,7 +9,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -21,8 +21,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `source` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Source { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/tag/mod.rs b/zino-model/src/tag/mod.rs index 0e8d59db..97240703 100644 --- a/zino-model/src/tag/mod.rs +++ b/zino-model/src/tag/mod.rs @@ -9,7 +9,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(any(feature = "owner-id", feature = "maintainer-id"))] use crate::user::User; @@ -18,8 +18,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `tag` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Tag { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/task/mod.rs b/zino-model/src/task/mod.rs index 6c5c67dd..c76de93e 100644 --- a/zino-model/src/task/mod.rs +++ b/zino-model/src/task/mod.rs @@ -10,7 +10,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -22,8 +22,11 @@ use crate::user::User; use zino_core::auth::UserSession; /// The `task` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct Task { // Basic fields. #[schema(read_only)] diff --git a/zino-model/src/user/mod.rs b/zino-model/src/user/mod.rs index 525a33c2..c65b89d6 100644 --- a/zino-model/src/user/mod.rs +++ b/zino-model/src/user/mod.rs @@ -12,7 +12,7 @@ use zino_core::{ validation::Validation, Map, Uuid, }; -use zino_derive::{DecodeRow, ModelAccessor, Schema}; +use zino_derive::{DecodeRow, Entity, ModelAccessor, Schema}; #[cfg(feature = "tags")] use crate::tag::Tag; @@ -30,8 +30,11 @@ mod visibility; pub use visibility::UserVisibility; /// The `user` model. -#[derive(Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Schema, ModelAccessor)] +#[derive( + Debug, Clone, Default, Serialize, Deserialize, DecodeRow, Entity, Schema, ModelAccessor, +)] #[serde(default)] +#[schema(auto_rename)] pub struct User { // Basic fields. #[schema(read_only)] diff --git a/zino-ntex/Cargo.toml b/zino-ntex/Cargo.toml index aeeedab4..dd5c1f9f 100644 --- a/zino-ntex/Cargo.toml +++ b/zino-ntex/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino-ntex" description = "Integrations with ntex for zino." -version = "0.1.0" +version = "0.1.1" rust-version = "1.80" edition = "2021" license = "MIT" @@ -18,11 +18,11 @@ ntex-files = "2.0.0" tracing = "0.1.41" [dependencies.ntex] -version = "2.8.0" +version = "2.9.0" default-features = false features = ["compress", "tokio"] [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" features = ["runtime-tokio"] \ No newline at end of file diff --git a/zino/Cargo.toml b/zino/Cargo.toml index 351773da..d939c9c2 100644 --- a/zino/Cargo.toml +++ b/zino/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "zino" description = "Next-generation framework for composable applications in Rust." -version = "0.26.4" +version = "0.27.0" rust-version = "1.80" edition = "2021" license = "MIT" @@ -45,24 +45,24 @@ serde_json = "1.0.133" [dependencies.zino-actix] path = "../zino-actix" -version = "0.1.1" +version = "0.1.2" optional = true [dependencies.zino-axum] path = "../zino-axum" -version = "0.1.2" +version = "0.1.3" optional = true [dependencies.zino-core] path = "../zino-core" -version = "0.27.3" +version = "0.28.0" [dependencies.zino-dioxus] path = "../zino-dioxus" -version = "0.9.3" +version = "0.9.4" optional = true [dependencies.zino-ntex] path = "../zino-ntex" -version = "0.1.0" +version = "0.1.1" optional = true