diff --git a/crates/oswilno-contract/src/accounts.rs b/crates/oswilno-contract/src/accounts.rs index ec2bbcb..4e9946f 100644 --- a/crates/oswilno-contract/src/accounts.rs +++ b/crates/oswilno-contract/src/accounts.rs @@ -23,6 +23,7 @@ impl EntityName for Entity { DeriveActixAdmin, DeriveActixAdminModel, DeriveActixAdminViewModel, + serde::Serialize, )] pub struct Model { #[actix_admin(primary_key)] @@ -64,6 +65,7 @@ impl PrimaryKeyTrait for PrimaryKey { #[derive(Copy, Clone, Debug, EnumIter)] pub enum Relation { + Images, ParkingSpaces, } @@ -87,11 +89,18 @@ impl ColumnTrait for Column { impl RelationTrait for Relation { fn def(&self) -> RelationDef { match self { + Self::Images => Entity::has_many(super::images::Entity).into(), Self::ParkingSpaces => Entity::has_many(super::parking_spaces::Entity).into(), } } } +impl Related for Entity { + fn to() -> RelationDef { + Relation::Images.def() + } +} + impl Related for Entity { fn to() -> RelationDef { Relation::ParkingSpaces.def() diff --git a/crates/oswilno-contract/src/images.rs b/crates/oswilno-contract/src/images.rs index 11aebcc..402283a 100644 --- a/crates/oswilno-contract/src/images.rs +++ b/crates/oswilno-contract/src/images.rs @@ -23,6 +23,7 @@ impl EntityName for Entity { DeriveActixAdmin, DeriveActixAdminModel, DeriveActixAdminViewModel, + serde::Serialize, )] pub struct Model { #[actix_admin(primary_key)] @@ -59,7 +60,9 @@ impl PrimaryKeyTrait for PrimaryKey { } #[derive(Copy, Clone, Debug, EnumIter)] -pub enum Relation {} +pub enum Relation { + Accounts, +} impl ColumnTrait for Column { type EntityName = Entity; @@ -78,7 +81,18 @@ impl ColumnTrait for Column { impl RelationTrait for Relation { 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 for Entity { + fn to() -> RelationDef { + Relation::Accounts.def() } } diff --git a/crates/oswilno-contract/src/parking_space_rents.rs b/crates/oswilno-contract/src/parking_space_rents.rs index b2e4b17..da12fd1 100644 --- a/crates/oswilno-contract/src/parking_space_rents.rs +++ b/crates/oswilno-contract/src/parking_space_rents.rs @@ -21,6 +21,7 @@ impl EntityName for Entity { DeriveActixAdmin, DeriveActixAdminModel, DeriveActixAdminViewModel, + serde::Serialize, )] pub struct Model { #[actix_admin(primary_key)] diff --git a/crates/oswilno-contract/src/parking_spaces.rs b/crates/oswilno-contract/src/parking_spaces.rs index 741c893..48b7cb7 100644 --- a/crates/oswilno-contract/src/parking_spaces.rs +++ b/crates/oswilno-contract/src/parking_spaces.rs @@ -23,6 +23,7 @@ impl EntityName for Entity { DeriveActixAdmin, DeriveActixAdminModel, DeriveActixAdminViewModel, + serde::Serialize, )] pub struct Model { #[actix_admin(primary_key)] diff --git a/crates/oswilno-contract/src/sea_orm_active_enums.rs b/crates/oswilno-contract/src/sea_orm_active_enums.rs index 2ba70e8..5eb1249 100644 --- a/crates/oswilno-contract/src/sea_orm_active_enums.rs +++ b/crates/oswilno-contract/src/sea_orm_active_enums.rs @@ -4,7 +4,7 @@ use sea_orm::entity::prelude::*; #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[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 { #[sea_orm(string_value = "approved")] Approved, @@ -19,7 +19,7 @@ pub enum ImageState { db_type = "Enum", enum_name = "parking_space_state" )] -#[derive(oswilno_actix_admin::ActixAdminEnum)] +#[derive(oswilno_actix_admin::ActixAdminEnum, serde::Serialize)] pub enum ParkingSpaceState { #[sea_orm(string_value = "Banned")] Banned, @@ -30,7 +30,7 @@ pub enum ParkingSpaceState { } #[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] #[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 { #[sea_orm(string_value = "Admin")] Admin, diff --git a/crates/oswilno-parking-space/src/lib.rs b/crates/oswilno-parking-space/src/lib.rs index ad13373..2d6a38c 100644 --- a/crates/oswilno-parking-space/src/lib.rs +++ b/crates/oswilno-parking-space/src/lib.rs @@ -1,4 +1,4 @@ -use actix_web::web::{ServiceConfig, Data}; +use actix_web::web::{Data, ServiceConfig}; use actix_web::{get, HttpResponse}; pub fn mount(config: &mut ServiceConfig) { @@ -7,9 +7,10 @@ pub fn mount(config: &mut ServiceConfig) { #[get("/ps")] async fn all_parking_spaces(db: Data) -> HttpResponse { - use sea_orm::*; - use oswilno_contract::{*, prelude::*}; + use oswilno_contract::prelude::*; + use oswilno_contract::*; use parking_spaces::*; + use sea_orm::*; let db = db.into_inner(); diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4e44d66..f828a44 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,6 +1,6 @@ [toolchain] channel = "nightly-2022-10-29" -components = ['rust-analyzer', "rustfmt", "rustc-dev"] +components = ['rust-analyzer', "rustfmt"] targets = [] profile = "default" diff --git a/scripts/generate-entries.sh b/scripts/generate-entries.sh index 883fcbe..1c2565d 100755 --- a/scripts/generate-entries.sh +++ b/scripts/generate-entries.sh @@ -8,7 +8,7 @@ for f in $( ls ./crates/oswilno-contract/src/*.rs ); do 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 + 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) if [[ "${HAS_ENTITY}" != "" ]]; then echo "use actix_admin::prelude::*;" >> $f @@ -17,6 +17,6 @@ for f in $( ls ./crates/oswilno-contract/src/*.rs ); do fi 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