Add actix-admin to entities

This commit is contained in:
eraden 2023-07-27 08:59:51 +02:00
parent d48b39c5c3
commit 05c1a9abb0
9 changed files with 70 additions and 4 deletions

View File

@ -3,4 +3,5 @@ members = [
'./crates/oswilno-server',
'./crates/oswilno-contract',
'./crates/migration',
'./crates/oswilno-actix-admin',
]

View File

@ -1,8 +1,8 @@
use sea_orm::{EnumIter, Iterable};
use sea_orm_migration::prelude::*;
use crate::{create_enum, drop_enum};
use crate::m20220101_000001_create_table::Account;
use crate::{create_enum, drop_enum};
#[derive(DeriveMigrationName)]
pub struct Migration;

View File

@ -0,0 +1,9 @@
[package]
name = "oswilno-actix-admin"
version = "0.1.0"
edition = "2021"
proc-macro=true
[dependencies]

View File

@ -0,0 +1,14 @@
pub fn add(left: usize, right: usize) -> usize {
left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}

View File

@ -11,3 +11,4 @@ askama = "0.12.0"
chrono = "0.4.26"
tera = "1.19.0"
uuid = { version = "1.4.1", features = ["v4"] }
oswilno-contract = { path = "../oswilno-contract" }

View File

@ -13,8 +13,19 @@ impl EntityName for Entity {
}
}
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)]
#[derive(
Clone,
Debug,
PartialEq,
DeriveModel,
DeriveActiveModel,
Eq,
DeriveActixAdmin,
DeriveActixAdminModel,
DeriveActixAdminViewModel,
)]
pub struct Model {
#[actix_admin(primary_key)]
pub id: i32,
pub login: String,
pub pass_hash: String,
@ -96,3 +107,6 @@ impl Related<super::parking_spaces::Entity> for Entity {
}
impl ActiveModelBehavior for ActiveModel {}
use actix_admin::prelude::*;
impl ActixAdminModelValidationTrait<ActiveModel> for Entity {}
impl ActixAdminModelFilterTrait<Entity> for Entity {}

View File

@ -13,8 +13,19 @@ impl EntityName for Entity {
}
}
#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq)]
#[derive(
Clone,
Debug,
PartialEq,
DeriveModel,
DeriveActiveModel,
Eq,
DeriveActixAdmin,
DeriveActixAdminModel,
DeriveActixAdminViewModel,
)]
pub struct Model {
#[actix_admin(primary_key)]
pub id: i32,
pub local_path: String,
pub public_path: String,
@ -85,3 +96,6 @@ impl Related<super::accounts::Entity> for Entity {
}
impl ActiveModelBehavior for ActiveModel {}
use actix_admin::prelude::*;
impl ActixAdminModelValidationTrait<ActiveModel> for Entity {}
impl ActixAdminModelFilterTrait<Entity> for Entity {}

View File

@ -56,7 +56,7 @@ impl ColumnTrait for Column {
fn def(&self) -> ColumnDef {
match self {
Self::Id => ColumnType::Integer.def(),
Self::State => ParkingSpaceState::db_type(),
Self::State => ParkingSpaceState::db_type().def(),
Self::Location => ColumnType::String(None).def(),
Self::AccountId => ColumnType::Integer.def(),
Self::CreatedAt => ColumnType::DateTime.def(),

View File

@ -2,6 +2,19 @@ set -ex
sea-orm-cli generate entity -v -l --expanded-format -o ./crates/oswilno-contract/src -u postgres://postgres@localhost/oswilno
for f in $( ls ./crates/oswilno-contract/src/*.rs ); do
# bad generated code patch
sed -i 's/db_type().def()/db_type()/g' $f
# actix-admin patch
sed -i 's/pub struct Model {/#[derive(DeriveActixAdmin,DeriveActixAdminModel,DeriveActixAdminViewModel)]pub struct Model {#[actix_admin(primary_key)]/g' $f
HAS_ENTITY=$(grep 'for Entity' $f)
if [[ "${HAS_ENTITY}" != "" ]]; then
echo "use actix_admin::prelude::*;" >> $f
echo "impl ActixAdminModelValidationTrait<ActiveModel> for Entity {}" >> $f
echo "impl ActixAdminModelFilterTrait<Entity> for Entity {}" >> $f
fi
done
cargo fmt