add hashmap macro
This commit is contained in:
parent
a22195d5d8
commit
6f8a802deb
@ -19,7 +19,7 @@ pub fn derive_crud_fns(input: proc_macro::TokenStream) -> proc_macro::TokenStrea
|
|||||||
use std::convert::From;
|
use std::convert::From;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use actix_web::{web, HttpResponse, HttpRequest, Error};
|
use actix_web::{web, HttpResponse, HttpRequest, Error};
|
||||||
use actix_admin::{ ActixAdminField, ActixAdminModelTrait, ActixAdminViewModelTrait, ActixAdminViewModel, ActixAdminModel, AppDataTrait };
|
use actix_admin::{ ActixAdminField, ActixAdminModelTrait, ActixAdminViewModelTrait, ActixAdminViewModel, ActixAdminModel, AppDataTrait , hashmap};
|
||||||
use sea_orm::ActiveValue::Set;
|
use sea_orm::ActiveValue::Set;
|
||||||
use sea_orm::{ConnectOptions, DatabaseConnection};
|
use sea_orm::{ConnectOptions, DatabaseConnection};
|
||||||
use sea_orm::{entity::*, query::*};
|
use sea_orm::{entity::*, query::*};
|
||||||
@ -35,6 +35,19 @@ pub fn derive_crud_fns(input: proc_macro::TokenStream) -> proc_macro::TokenStrea
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Model> for ActixAdminModel {
|
||||||
|
fn from(model: Model) -> Self {
|
||||||
|
ActixAdminModel {
|
||||||
|
// TODO: create dynamically
|
||||||
|
values: hashmap![
|
||||||
|
"title" => model.title,
|
||||||
|
"text" => model.text,
|
||||||
|
"id" => model.id.to_string()
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait(?Send)]
|
#[async_trait(?Send)]
|
||||||
impl ActixAdminViewModelTrait for Entity {
|
impl ActixAdminViewModelTrait for Entity {
|
||||||
async fn list(db: &DatabaseConnection, page: usize, entities_per_page: usize) -> Vec<ActixAdminModel> {
|
async fn list(db: &DatabaseConnection, page: usize, entities_per_page: usize) -> Vec<ActixAdminModel> {
|
||||||
@ -68,14 +81,9 @@ pub fn derive_crud_fns(input: proc_macro::TokenStream) -> proc_macro::TokenStrea
|
|||||||
// TODO: must be dynamic
|
// TODO: must be dynamic
|
||||||
let mut model_entities = Vec::new();
|
let mut model_entities = Vec::new();
|
||||||
for entity in entities {
|
for entity in entities {
|
||||||
let mut model_values = HashMap::new();
|
|
||||||
model_values.insert("title", entity.title);
|
|
||||||
model_values.insert("text", entity.text);
|
|
||||||
model_values.insert("id", entity.id.to_string());
|
|
||||||
model_entities.push(
|
model_entities.push(
|
||||||
ActixAdminModel {
|
ActixAdminModel::from(entity)
|
||||||
values: model_values,
|
);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
model_entities
|
model_entities
|
||||||
|
@ -11,6 +11,15 @@ pub use actix_admin_macros::DeriveActixAdminModel;
|
|||||||
|
|
||||||
const DEFAULT_ENTITIES_PER_PAGE: usize = 5;
|
const DEFAULT_ENTITIES_PER_PAGE: usize = 5;
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! hashmap {
|
||||||
|
($( $key: expr => $val: expr ),*) => {{
|
||||||
|
let mut map = ::std::collections::HashMap::new();
|
||||||
|
$( map.insert($key, $val); )*
|
||||||
|
map
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
// globals
|
// globals
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref TERA: Tera =
|
static ref TERA: Tera =
|
||||||
|
Loading…
Reference in New Issue
Block a user