Fix serialize issues

This commit is contained in:
eraden 2023-07-27 22:29:04 +02:00
parent 21ceab8861
commit 354856e222
8 changed files with 37 additions and 11 deletions

View File

@ -23,6 +23,7 @@ impl EntityName for Entity {
DeriveActixAdmin, DeriveActixAdmin,
DeriveActixAdminModel, DeriveActixAdminModel,
DeriveActixAdminViewModel, DeriveActixAdminViewModel,
serde::Serialize,
)] )]
pub struct Model { pub struct Model {
#[actix_admin(primary_key)] #[actix_admin(primary_key)]
@ -64,6 +65,7 @@ impl PrimaryKeyTrait for PrimaryKey {
#[derive(Copy, Clone, Debug, EnumIter)] #[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation { pub enum Relation {
Images,
ParkingSpaces, ParkingSpaces,
} }
@ -87,11 +89,18 @@ impl ColumnTrait for Column {
impl RelationTrait for Relation { impl RelationTrait for Relation {
fn def(&self) -> RelationDef { fn def(&self) -> RelationDef {
match self { match self {
Self::Images => Entity::has_many(super::images::Entity).into(),
Self::ParkingSpaces => Entity::has_many(super::parking_spaces::Entity).into(), Self::ParkingSpaces => Entity::has_many(super::parking_spaces::Entity).into(),
} }
} }
} }
impl Related<super::images::Entity> for Entity {
fn to() -> RelationDef {
Relation::Images.def()
}
}
impl Related<super::parking_spaces::Entity> for Entity { impl Related<super::parking_spaces::Entity> for Entity {
fn to() -> RelationDef { fn to() -> RelationDef {
Relation::ParkingSpaces.def() Relation::ParkingSpaces.def()

View File

@ -23,6 +23,7 @@ impl EntityName for Entity {
DeriveActixAdmin, DeriveActixAdmin,
DeriveActixAdminModel, DeriveActixAdminModel,
DeriveActixAdminViewModel, DeriveActixAdminViewModel,
serde::Serialize,
)] )]
pub struct Model { pub struct Model {
#[actix_admin(primary_key)] #[actix_admin(primary_key)]
@ -59,7 +60,9 @@ impl PrimaryKeyTrait for PrimaryKey {
} }
#[derive(Copy, Clone, Debug, EnumIter)] #[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {} pub enum Relation {
Accounts,
}
impl ColumnTrait for Column { impl ColumnTrait for Column {
type EntityName = Entity; type EntityName = Entity;
@ -78,7 +81,18 @@ impl ColumnTrait for Column {
impl RelationTrait for Relation { impl RelationTrait for Relation {
fn def(&self) -> RelationDef { fn def(&self) -> RelationDef {
panic!("No RelationDef") match self {
Self::Accounts => Entity::belongs_to(super::accounts::Entity)
.from(Column::AccountId)
.to(super::accounts::Column::Id)
.into(),
}
}
}
impl Related<super::accounts::Entity> for Entity {
fn to() -> RelationDef {
Relation::Accounts.def()
} }
} }

View File

@ -21,6 +21,7 @@ impl EntityName for Entity {
DeriveActixAdmin, DeriveActixAdmin,
DeriveActixAdminModel, DeriveActixAdminModel,
DeriveActixAdminViewModel, DeriveActixAdminViewModel,
serde::Serialize,
)] )]
pub struct Model { pub struct Model {
#[actix_admin(primary_key)] #[actix_admin(primary_key)]

View File

@ -23,6 +23,7 @@ impl EntityName for Entity {
DeriveActixAdmin, DeriveActixAdmin,
DeriveActixAdminModel, DeriveActixAdminModel,
DeriveActixAdminViewModel, DeriveActixAdminViewModel,
serde::Serialize,
)] )]
pub struct Model { pub struct Model {
#[actix_admin(primary_key)] #[actix_admin(primary_key)]

View File

@ -4,7 +4,7 @@ use sea_orm::entity::prelude::*;
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "image_state")] #[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "image_state")]
#[derive(oswilno_actix_admin::ActixAdminEnum)] #[derive(oswilno_actix_admin::ActixAdminEnum, serde::Serialize)]
pub enum ImageState { pub enum ImageState {
#[sea_orm(string_value = "approved")] #[sea_orm(string_value = "approved")]
Approved, Approved,
@ -19,7 +19,7 @@ pub enum ImageState {
db_type = "Enum", db_type = "Enum",
enum_name = "parking_space_state" enum_name = "parking_space_state"
)] )]
#[derive(oswilno_actix_admin::ActixAdminEnum)] #[derive(oswilno_actix_admin::ActixAdminEnum, serde::Serialize)]
pub enum ParkingSpaceState { pub enum ParkingSpaceState {
#[sea_orm(string_value = "Banned")] #[sea_orm(string_value = "Banned")]
Banned, Banned,
@ -30,7 +30,7 @@ pub enum ParkingSpaceState {
} }
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "userrole")] #[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "userrole")]
#[derive(oswilno_actix_admin::ActixAdminEnum)] #[derive(oswilno_actix_admin::ActixAdminEnum, serde::Serialize)]
pub enum Userrole { pub enum Userrole {
#[sea_orm(string_value = "Admin")] #[sea_orm(string_value = "Admin")]
Admin, Admin,

View File

@ -1,4 +1,4 @@
use actix_web::web::{ServiceConfig, Data}; use actix_web::web::{Data, ServiceConfig};
use actix_web::{get, HttpResponse}; use actix_web::{get, HttpResponse};
pub fn mount(config: &mut ServiceConfig) { pub fn mount(config: &mut ServiceConfig) {
@ -7,9 +7,10 @@ pub fn mount(config: &mut ServiceConfig) {
#[get("/ps")] #[get("/ps")]
async fn all_parking_spaces(db: Data<sea_orm::DatabaseConnection>) -> HttpResponse { async fn all_parking_spaces(db: Data<sea_orm::DatabaseConnection>) -> HttpResponse {
use sea_orm::*; use oswilno_contract::prelude::*;
use oswilno_contract::{*, prelude::*}; use oswilno_contract::*;
use parking_spaces::*; use parking_spaces::*;
use sea_orm::*;
let db = db.into_inner(); let db = db.into_inner();

View File

@ -1,6 +1,6 @@
[toolchain] [toolchain]
channel = "nightly-2022-10-29" channel = "nightly-2022-10-29"
components = ['rust-analyzer', "rustfmt", "rustc-dev"] components = ['rust-analyzer', "rustfmt"]
targets = [] targets = []
profile = "default" profile = "default"

View File

@ -8,7 +8,7 @@ for f in $( ls ./crates/oswilno-contract/src/*.rs ); do
sed -i 's/db_type().def()/db_type()/g' $f sed -i 's/db_type().def()/db_type()/g' $f
# actix-admin patch # actix-admin patch
sed -i 's/pub struct Model {/#[derive(DeriveActixAdmin,DeriveActixAdminModel,DeriveActixAdminViewModel)]pub struct Model {#[actix_admin(primary_key)]/g' $f sed -i 's/pub struct Model {/#[derive(DeriveActixAdmin,DeriveActixAdminModel,DeriveActixAdminViewModel,serde::Serialize)]pub struct Model {#[actix_admin(primary_key)]/g' $f
HAS_ENTITY=$(grep 'for Entity' $f) HAS_ENTITY=$(grep 'for Entity' $f)
if [[ "${HAS_ENTITY}" != "" ]]; then if [[ "${HAS_ENTITY}" != "" ]]; then
echo "use actix_admin::prelude::*;" >> $f echo "use actix_admin::prelude::*;" >> $f
@ -17,6 +17,6 @@ for f in $( ls ./crates/oswilno-contract/src/*.rs ); do
fi fi
done done
sed -i 's/pub enum/#[derive(oswilno_actix_admin::ActixAdminEnum)] pub enum/g' ./crates/oswilno-contract/src/sea_orm_active_enums.rs sed -i 's/pub enum/#[derive(oswilno_actix_admin::ActixAdminEnum,serde::Serialize)] pub enum/g' ./crates/oswilno-contract/src/sea_orm_active_enums.rs
cargo fmt cargo fmt