Skip to content

Commit

Permalink
Refactor the directory of models
Browse files Browse the repository at this point in the history
  • Loading branch information
photino committed Jul 23, 2023
1 parent bc4f3df commit bdc7e0c
Show file tree
Hide file tree
Showing 63 changed files with 423 additions and 335 deletions.
2 changes: 1 addition & 1 deletion examples/actix-app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ features = ["derive"]
[dependencies.zino]
path = "../../zino"
version = "0.10.3"
features = ["actix"]
features = ["actix", "export-pdf"]

[dependencies.zino-core]
path = "../../zino-core"
Expand Down
7 changes: 3 additions & 4 deletions examples/actix-app/src/controller/auth.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
use crate::service::auth;
use zino::{prelude::*, Request, Response, Result};
use zino_model::User;
use zino_model::user::{JwtAuthService, User};

pub async fn login(mut req: Request) -> Result {
let body: Map = req.parse_body().await?;
let (user_id, mut data) = auth::generate_token(body).await.extract(&req)?;
let (user_id, mut data) = User::generate_token(body).await.extract(&req)?;

let mut mutations = Map::from_entry("status", "Active");
let (validation, user) = User::update_by_id(&user_id, &mut mutations, None)
Expand All @@ -22,7 +21,7 @@ pub async fn login(mut req: Request) -> Result {

pub async fn refresh(req: Request) -> Result {
let claims = req.parse_jwt_claims(JwtClaims::shared_key())?;
let data = auth::refresh_token(&claims).await.extract(&req)?;
let data = User::refresh_token(&claims).await.extract(&req)?;
let mut res = Response::default().context(&req);
res.set_data(&data);
Ok(res.into())
Expand Down
2 changes: 1 addition & 1 deletion examples/actix-app/src/controller/user.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use fluent::fluent_args;
use serde_json::json;
use std::time::Instant;
use zino::{prelude::*, Request, Response, Result};
use zino_model::User;
use zino_model::user::User;

pub async fn new(mut req: Request) -> Result {
let mut user = User::new();
Expand Down
4 changes: 2 additions & 2 deletions examples/actix-app/src/schedule/job.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ pub fn every_hour(job_id: Uuid, job_data: &mut Map, _last_tick: DateTime) -> Box
);

Box::pin(async {
let mut query = Query::default();
let query = Query::default();
let columns = [("*", true), ("roles", true)];
match User::count_many(&mut query, &columns).await {
match User::count_many(&query, &columns).await {
Ok(mut map) => job_data.append(&mut map),
Err(err) => tracing::error!("fail to count users: {err}"),
}
Expand Down
61 changes: 0 additions & 61 deletions examples/actix-app/src/service/auth.rs

This file was deleted.

1 change: 0 additions & 1 deletion examples/actix-app/src/service/mod.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
pub(crate) mod auth;
pub(crate) mod task;
2 changes: 1 addition & 1 deletion examples/axum-app/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ features = ["derive"]
[dependencies.zino]
path = "../../zino"
version = "0.10.3"
features = ["axum"]
features = ["axum", "export-pdf"]

[dependencies.zino-core]
path = "../../zino-core"
Expand Down
7 changes: 3 additions & 4 deletions examples/axum-app/src/controller/auth.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
use crate::service::auth;
use zino::{prelude::*, Request, Response, Result};
use zino_model::User;
use zino_model::user::{JwtAuthService, User};

pub async fn login(mut req: Request) -> Result {
let body: Map = req.parse_body().await?;
let (user_id, mut data) = auth::generate_token(body).await.extract(&req)?;
let (user_id, mut data) = User::generate_token(body).await.extract(&req)?;

let mut mutations = Map::from_entry("status", "Active");
let (validation, user) = User::update_by_id(&user_id, &mut mutations, None)
Expand All @@ -22,7 +21,7 @@ pub async fn login(mut req: Request) -> Result {

pub async fn refresh(req: Request) -> Result {
let claims = req.parse_jwt_claims(JwtClaims::shared_key())?;
let data = auth::refresh_token(&claims).await.extract(&req)?;
let data = User::refresh_token(&claims).await.extract(&req)?;
let mut res = Response::default().context(&req);
res.set_data(&data);
Ok(res.into())
Expand Down
4 changes: 2 additions & 2 deletions examples/axum-app/src/schedule/job.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ pub fn every_hour(job_id: Uuid, job_data: &mut Map, _last_tick: DateTime) -> Box
);

Box::pin(async {
let mut query = Query::default();
let query = Query::default();
let columns = [("*", true), ("roles", true)];
match User::count_many(&mut query, &columns).await {
match User::count_many(&query, &columns).await {
Ok(mut map) => job_data.append(&mut map),
Err(err) => tracing::error!("fail to count users: {err}"),
}
Expand Down
61 changes: 0 additions & 61 deletions examples/axum-app/src/service/auth.rs

This file was deleted.

1 change: 0 additions & 1 deletion examples/axum-app/src/service/mod.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
pub(crate) mod auth;
pub(crate) mod task;
11 changes: 9 additions & 2 deletions zino-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,25 @@ all-connectors = [
"connector-postgres",
"connector-sqlite",
]
all-chatbots = ["chatbot", "chatbot-openai"]
all-formats = ["format", "format-pdf"]
cache = ["dep:lru"]
chatbot = []
chatbot-openai = ["dep:async-openai", "chatbot"]
all-chatbots = ["chatbot", "chatbot-openai"]
connector = ["connector-http"]
connector-arrow = ["dep:datafusion", "connector"]
connector-http = ["connector"]
connector-mysql = ["connector", "sqlx", "sqlx/mysql"]
connector-postgres = ["connector", "sqlx", "sqlx/postgres"]
connector-sqlite = ["connector", "sqlx", "sqlx/sqlite"]
default = ["runtime-tokio"]
format = []
format-pdf = ["format", "dep:printpdf"]
full = [
"all-accessors",
"all-chatbots",
"all-connectors",
"all-formats",
"cache",
"orm",
"view",
Expand Down Expand Up @@ -95,7 +99,6 @@ metrics = "0.21.0"
metrics-exporter-prometheus = "0.12.1"
multer = "2.1.0"
parking_lot = "0.12.1"
printpdf = "0.5.3"
rand = "0.8.5"
regex = "1.9.1"
reqwest-middleware = "0.2.2"
Expand Down Expand Up @@ -141,6 +144,10 @@ version = "0.38.1"
optional = true
features = ["layers-all"]

[dependencies.printpdf]
version = "0.5.3"
optional = true

[dependencies.reqwest]
version = "0.11.18"
features = [
Expand Down
6 changes: 5 additions & 1 deletion zino-core/src/auth/jwt_claims.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ impl<T> JwtClaims<T> {
pub fn expires_in(&self) -> Duration {
self.0
.expires_at
.map(|d| Duration::from_micros(d.as_micros()))
.and_then(|dt| {
dt.as_secs()
.checked_add_signed(-DateTime::current_timestamp())
})
.map(|secs| Duration::from_secs(secs))
.unwrap_or_default()
}

Expand Down
12 changes: 6 additions & 6 deletions zino-core/src/connector/connector_arrow/mod.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Utilities for DataFusion.

use super::{Connector, DataSource, DataSourceConnector::Arrow};
use crate::{application::http_client, error::Error, extension::TomlTableExt, format, Map, Record};
use crate::{application::http_client, error::Error, extension::TomlTableExt, helper, Map, Record};
use datafusion::{
arrow::{datatypes::Schema, record_batch::RecordBatch},
dataframe::DataFrame,
Expand Down Expand Up @@ -246,14 +246,14 @@ impl Connector for ArrowConnector {

async fn execute(&self, query: &str, params: Option<&Map>) -> Result<Option<u64>, Error> {
let ctx = self.try_get_session_context().await?;
let sql = format::query::format_query(query, params);
let sql = helper::format_query(query, params);
let df = ctx.sql(&sql).await?;
df.execute().await
}

async fn query(&self, query: &str, params: Option<&Map>) -> Result<Vec<Record>, Error> {
let ctx = self.try_get_session_context().await?;
let sql = format::query::format_query(query, params);
let sql = helper::format_query(query, params);
let df = ctx.sql(&sql).await?;
df.query().await
}
Expand All @@ -264,14 +264,14 @@ impl Connector for ArrowConnector {
params: Option<&Map>,
) -> Result<Vec<T>, Error> {
let ctx = self.try_get_session_context().await?;
let sql = format::query::format_query(query, params);
let sql = helper::format_query(query, params);
let df = ctx.sql(&sql).await?;
df.query_as().await
}

async fn query_one(&self, query: &str, params: Option<&Map>) -> Result<Option<Record>, Error> {
let ctx = self.try_get_session_context().await?;
let sql = format::query::format_query(query, params);
let sql = helper::format_query(query, params);
let df = ctx.sql(&sql).await?;
df.query_one().await
}
Expand All @@ -282,7 +282,7 @@ impl Connector for ArrowConnector {
params: Option<&Map>,
) -> Result<Option<T>, Error> {
let ctx = self.try_get_session_context().await?;
let sql = format::query::format_query(query, params);
let sql = helper::format_query(query, params);
let df = ctx.sql(&sql).await?;
df.query_one_as().await
}
Expand Down
8 changes: 4 additions & 4 deletions zino-core/src/connector/connector_http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::{
extension::{
AvroRecordExt, HeaderMapExt, JsonObjectExt, JsonValueExt, TomlTableExt, TomlValueExt,
},
format,
helper,
trace::TraceContext,
JsonValue, Map, Record,
};
Expand Down Expand Up @@ -79,18 +79,18 @@ impl HttpConnector {
let mut url = self.base_url.clone();
url.set_query(Some(query));

let resource = format::query::format_query(url.as_str(), params);
let resource = helper::format_query(url.as_str(), params);
let mut options = Map::from_entry("method", self.method.as_str());
if let Some(body) = self.body.as_deref().map(|v| v.get()) {
options.upsert("body", format::query::format_query(body, params));
options.upsert("body", helper::format_query(body, params));
}

let mut headers = HeaderMap::new();
for (key, value) in self.headers.iter() {
if let Ok(header_name) = HeaderName::try_from(key) {
let header_value = value
.as_str()
.and_then(|s| format::query::format_query(s, params).parse().ok());
.and_then(|s| helper::format_query(s, params).parse().ok());
if let Some(header_value) = header_value {
headers.insert(header_name, header_value);
}
Expand Down
Loading

0 comments on commit bdc7e0c

Please sign in to comment.