\n\t\t`;\n\t\tcopyCss(shadow);\n\t}\n});\n", "customElements.define('oswilno-parking-space', class extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\t\tconst shadow = this.attachShadow({ mode: 'open' });\n\t\tshadow.innerHTML = `\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t`;\n\t}\n});\n", "import './elements/oswilno-price.js';\nimport './elements/oswilno-error.js';\nimport './elements/oswilno-parking-space.js';\nimport(\"https://unpkg.com/htmx.org@1.9.4/dist/htmx.min.js\");\n\nconst READ_AUTH_HEADER = 'Authorization';\nconst AUTH_HEADER = 'ACX-Authorization';\nconst REFRESH_HEADER = 'ACX-Refresh';\nconst body = document.body;\nbody.addEventListener('htmx:beforeOnLoad', function (evt) {\n\tconst detail = evt.detail;\n\tconst xhr = detail.xhr;\n\tconst status = xhr.status;\n\tconst successful = detail.successful;\n\n\tif (status === 200) {\n\t\tconst bearer = xhr.getResponseHeader(READ_AUTH_HEADER);\n\t\tif (bearer) {\n\t\t\tconsole.log(xhr);\n\t\t\tlocalStorage.setItem('jwt', bearer.replace(/^Bearer /i, ''));\n\t\t}\n\t\tconst refresh = xhr.getResponseHeader(REFRESH_HEADER);\n\t\tif (refresh) {\n\t\t\tlocalStorage.setItem('refresh', bearer.replace(/^Bearer /i, ''));\n\t\t}\n\t} else if (status === 401) {\n\t\tlocalStorage.removeItem('jwt');\n\t}\n\tif (status === 422 || status === 400) {\n\t\tdetail.shouldSwap = true;\n\t\tdetail.isError = false;\n\t}\n});\nbody.addEventListener('htmx:configRequest', function (evt) {\n\tif (!localStorage.getItem('jwt')) {\n\t\treturn;\n\t}\n\tevt.detail.headers[AUTH_HEADER] = 'Bearer ' + (localStorage.getItem('jwt') || '');\n\tevt.detail.headers[READ_AUTH_HEADER] = 'Bearer ' + (localStorage.getItem('jwt') || '');\n\tevt.detail.headers[REFRESH_HEADER] = (localStorage.getItem('refresh') || '');\n});\n\n"],
+ "mappings": "0sBAAA,eAAe,OAAO,gBAAiB,cAAc,WAAY,CAChE,aAAc,CACb,MAAM,EACN,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,CACnC,CACA,mBAAoB,CACnB,IAAIA,EAAS,KAAK,WACdC,EAAQ,SAAS,KAAK,aAAa,OAAO,CAAC,EAC3C,MAAMA,CAAK,IAAGA,EAAQ,GAC1B,IAAMC,EAAa,SAAS,KAAK,aAAa,YAAY,CAAC,EACvDC,EAAQF,EACRG,EAAQ,EACP,MAAMF,CAAU,IACpBC,EAAQ,KAAK,MAAMF,EAAQC,CAAU,EACrCE,EAAQH,EAAQC,GAEjB,IAAMG,EAAW,KAAK,aAAa,UAAU,GAAK,MAClDL,EAAO,UAAY,4CAA4CG,CAAK,IAAIC,GAAS,GAAKA,EAAQA,EAAQ,GAAG,IAAKC,CAAS,QACxH,CACD,CAAC,ECnBM,IAAMC,EAAWC,GAAW,CAClC,IAAIC,EAAM,GACV,QAASC,EAAI,EAAGA,EAAI,SAAS,YAAY,OAAQA,IAAK,CACrD,IAAMC,EAAa,SAAS,YAAYD,CAAC,EACzC,QAASE,EAAI,EAAGA,EAAID,EAAW,MAAM,OAAQC,IAC5CH,GAAOE,EAAW,MAAMC,CAAC,EAAE,OAE7B,CACA,IAAMC,EAAQ,IAAI,cAClBA,EAAM,YAAYJ,CAAG,EACrBD,EAAO,mBAAqB,CAACK,CAAK,CACnC,ECTA,eAAe,OAAO,gBAAiB,cAAc,WAAY,CAChE,aAAc,CACb,MAAM,EACN,IAAMC,EAAS,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EACjDA,EAAO,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnBC,EAAQD,CAAM,CACf,CACD,CAAC,ECdD,eAAe,OAAO,wBAAyB,cAAc,WAAY,CACxE,aAAc,CACb,MAAM,EACN,IAAME,EAAS,KAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EACjDA,EAAO,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQpB,CACD,CAAC,ECVD,OAAO,mDAAmD,EAE1D,IAAMC,EAAmB,gBACnBC,EAAc,oBACdC,EAAiB,cACjBC,EAAO,SAAS,KACtBA,EAAK,iBAAiB,oBAAqB,SAAUC,EAAK,CACzD,IAAMC,EAASD,EAAI,OACbE,EAAMD,EAAO,IACbE,EAASD,EAAI,OACbE,EAAaH,EAAO,WAE1B,GAAIE,IAAW,IAAK,CACnB,IAAME,EAASH,EAAI,kBAAkBN,CAAgB,EACjDS,IACH,QAAQ,IAAIH,CAAG,EACf,aAAa,QAAQ,MAAOG,EAAO,QAAQ,YAAa,EAAE,CAAC,GAE5CH,EAAI,kBAAkBJ,CAAc,GAEnD,aAAa,QAAQ,UAAWO,EAAO,QAAQ,YAAa,EAAE,CAAC,CAEjE,MAAWF,IAAW,KACrB,aAAa,WAAW,KAAK,GAE1BA,IAAW,KAAOA,IAAW,OAChCF,EAAO,WAAa,GACpBA,EAAO,QAAU,GAEnB,CAAC,EACDF,EAAK,iBAAiB,qBAAsB,SAAUC,EAAK,CACrD,aAAa,QAAQ,KAAK,IAG/BA,EAAI,OAAO,QAAQH,CAAW,EAAI,WAAa,aAAa,QAAQ,KAAK,GAAK,IAC9EG,EAAI,OAAO,QAAQJ,CAAgB,EAAI,WAAa,aAAa,QAAQ,KAAK,GAAK,IACnFI,EAAI,OAAO,QAAQF,CAAc,EAAK,aAAa,QAAQ,SAAS,GAAK,GAC1E,CAAC",
"names": ["shadow", "price", "multiplier", "major", "minor", "currency", "copyCss", "shadow", "css", "i", "styleSheet", "j", "sheet", "shadow", "copyCss", "shadow", "READ_AUTH_HEADER", "AUTH_HEADER", "REFRESH_HEADER", "body", "evt", "detail", "xhr", "status", "successful", "bearer"]
}
diff --git a/assets/style.css b/assets/style.css
index 3504f01..c487891 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -1048,11 +1048,6 @@ select {
background-color: rgb(254 226 226 / var(--tw-bg-opacity));
}
-.bg-red-700 {
- --tw-bg-opacity: 1;
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
-}
-
.bg-transparent {
background-color: transparent;
}
@@ -1075,6 +1070,18 @@ select {
background-position: center;
}
+.fill-white {
+ fill: #fff;
+}
+
+.stroke-blue-800 {
+ stroke: #1e40af;
+}
+
+.stroke-red-800 {
+ stroke: #991b1b;
+}
+
.p-1 {
padding: 0.25rem;
}
@@ -1083,6 +1090,10 @@ select {
padding: 0.5rem;
}
+.p-2\.5 {
+ padding: 0.625rem;
+}
+
.p-4 {
padding: 1rem;
}
@@ -1101,11 +1112,6 @@ select {
padding-right: 1rem;
}
-.px-5 {
- padding-left: 1.25rem;
- padding-right: 1.25rem;
-}
-
.px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
@@ -1121,11 +1127,6 @@ select {
padding-bottom: 0.5rem;
}
-.py-2\.5 {
- padding-top: 0.625rem;
- padding-bottom: 0.625rem;
-}
-
.py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
@@ -1143,6 +1144,10 @@ select {
padding-left: 0.75rem;
}
+.pl-4 {
+ padding-left: 1rem;
+}
+
.pr-4 {
padding-right: 1rem;
}
@@ -1322,11 +1327,6 @@ select {
background-color: rgb(191 219 254 / var(--tw-bg-opacity));
}
-.hover\:bg-blue-800:hover {
- --tw-bg-opacity: 1;
- background-color: rgb(30 64 175 / var(--tw-bg-opacity));
-}
-
.hover\:bg-gray-100:hover {
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
@@ -1337,11 +1337,6 @@ select {
background-color: rgb(254 202 202 / var(--tw-bg-opacity));
}
-.hover\:bg-red-800:hover {
- --tw-bg-opacity: 1;
- background-color: rgb(153 27 27 / var(--tw-bg-opacity));
-}
-
.hover\:bg-yellow-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(254 240 138 / var(--tw-bg-opacity));
@@ -1398,11 +1393,6 @@ select {
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
-.focus\:ring-blue-300:focus {
- --tw-ring-opacity: 1;
- --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
-}
-
.focus\:ring-blue-500:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
@@ -1423,11 +1413,6 @@ select {
--tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity));
}
-.focus\:ring-red-300:focus {
- --tw-ring-opacity: 1;
- --tw-ring-color: rgb(252 165 165 / var(--tw-ring-opacity));
-}
-
.focus\:ring-offset-2:focus {
--tw-ring-offset-width: 2px;
}
@@ -1458,11 +1443,6 @@ select {
border-color: rgb(55 65 81 / var(--tw-border-opacity));
}
- .dark\:bg-blue-600 {
- --tw-bg-opacity: 1;
- background-color: rgb(37 99 235 / var(--tw-bg-opacity));
- }
-
.dark\:bg-blue-900 {
--tw-bg-opacity: 1;
background-color: rgb(30 58 138 / var(--tw-bg-opacity));
@@ -1473,11 +1453,6 @@ select {
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
- .dark\:bg-red-600 {
- --tw-bg-opacity: 1;
- background-color: rgb(220 38 38 / var(--tw-bg-opacity));
- }
-
.dark\:bg-red-900 {
--tw-bg-opacity: 1;
background-color: rgb(127 29 29 / var(--tw-bg-opacity));
@@ -1538,11 +1513,6 @@ select {
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
}
- .dark\:hover\:bg-blue-700:hover {
- --tw-bg-opacity: 1;
- background-color: rgb(29 78 216 / var(--tw-bg-opacity));
- }
-
.dark\:hover\:bg-blue-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
@@ -1558,11 +1528,6 @@ select {
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
- .dark\:hover\:bg-red-700:hover {
- --tw-bg-opacity: 1;
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
- }
-
.dark\:hover\:bg-red-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(153 27 27 / var(--tw-bg-opacity));
@@ -1613,20 +1578,10 @@ select {
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
}
- .dark\:focus\:ring-blue-800:focus {
- --tw-ring-opacity: 1;
- --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
- }
-
.dark\:focus\:ring-gray-600:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity));
}
-
- .dark\:focus\:ring-red-800:focus {
- --tw-ring-opacity: 1;
- --tw-ring-color: rgb(153 27 27 / var(--tw-ring-opacity));
- }
}
@media (min-width: 640px) {
diff --git a/crates/migration/src/lib.rs b/crates/migration/src/lib.rs
index cf1d030..6541b74 100644
--- a/crates/migration/src/lib.rs
+++ b/crates/migration/src/lib.rs
@@ -8,6 +8,7 @@ mod m20230726_135630_parking_spaces;
mod m20230805_000001_add_email;
mod m20230809_135630_add_spot;
mod m20230810_105100_create_parking_space_locations;
+mod m20230919_162830_create_rent_requests;
pub struct Migrator;
@@ -21,6 +22,7 @@ impl MigratorTrait for Migrator {
Box::new(m20230805_000001_add_email::Migration),
Box::new(m20230809_135630_add_spot::Migration),
Box::new(m20230810_105100_create_parking_space_locations::Migration),
+ Box::new(m20230919_162830_create_rent_requests::Migration),
]
}
}
diff --git a/crates/oswilno-actix-admin/src/lib.rs b/crates/oswilno-actix-admin/src/lib.rs
index 6faf0c1..b851fe8 100644
--- a/crates/oswilno-actix-admin/src/lib.rs
+++ b/crates/oswilno-actix-admin/src/lib.rs
@@ -71,7 +71,10 @@ pub fn derive_actix_admin_enum(item: TokenStream) -> TokenStream {
}
buffer.push_str(" _ => Err(()),\n");
buffer.push_str(" }\n }\n}");
- buffer.push_str(&format!("impl ToString for {} {{\n fn to_string(&self) -> String {{\n match self {{\n", def.name));
+ buffer.push_str(&format!(
+ "impl ToString for {} {{\n fn to_string(&self) -> String {{\n match self {{\n",
+ def.name
+ ));
for v in def.variants {
buffer.push_str(&format!(
" {}::{} => {:?},\n",
diff --git a/crates/oswilno-contract/src/accounts.rs b/crates/oswilno-contract/src/accounts.rs
index 227f839..61a5b40 100644
--- a/crates/oswilno-contract/src/accounts.rs
+++ b/crates/oswilno-contract/src/accounts.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use super::sea_orm_active_enums::Userrole;
use actix_admin::prelude::*;
@@ -38,9 +38,9 @@ pub struct Model {
pub banned: bool,
pub confirmed: bool,
pub verified: bool,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub created_at: DateTime,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub updated_at: DateTime,
#[actix_admin(html_input_type = "email")]
pub email: String,
@@ -76,6 +76,7 @@ impl PrimaryKeyTrait for PrimaryKey {
pub enum Relation {
Images,
ParkingSpaces,
+ RentRequests,
}
impl ColumnTrait for Column {
@@ -101,6 +102,7 @@ impl RelationTrait for Relation {
match self {
Self::Images => Entity::has_many(super::images::Entity).into(),
Self::ParkingSpaces => Entity::has_many(super::parking_spaces::Entity).into(),
+ Self::RentRequests => Entity::has_many(super::rent_requests::Entity).into(),
}
}
}
@@ -117,4 +119,10 @@ impl Related
for Entity {
}
}
+impl Related for Entity {
+ fn to() -> RelationDef {
+ Relation::RentRequests.def()
+ }
+}
+
impl ActiveModelBehavior for ActiveModel {}
diff --git a/crates/oswilno-contract/src/images.rs b/crates/oswilno-contract/src/images.rs
index bcfa526..01d3b47 100644
--- a/crates/oswilno-contract/src/images.rs
+++ b/crates/oswilno-contract/src/images.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use super::sea_orm_active_enums::ImageState;
use actix_admin::prelude::*;
@@ -35,9 +35,9 @@ pub struct Model {
pub public_path: String,
pub image_state: ImageState,
pub account_id: i32,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub created_at: DateTime,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub updated_at: DateTime,
}
diff --git a/crates/oswilno-contract/src/lib.rs b/crates/oswilno-contract/src/lib.rs
index dbcbeee..4d4c637 100644
--- a/crates/oswilno-contract/src/lib.rs
+++ b/crates/oswilno-contract/src/lib.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
pub mod prelude;
@@ -7,4 +7,7 @@ pub mod images;
pub mod parking_space_locations;
pub mod parking_space_rents;
pub mod parking_spaces;
+pub mod rent_requests;
pub mod sea_orm_active_enums;
+pub use actix_admin;
+pub use sea_orm;
diff --git a/crates/oswilno-contract/src/parking_space_locations.rs b/crates/oswilno-contract/src/parking_space_locations.rs
index 2a0391b..d5452e5 100644
--- a/crates/oswilno-contract/src/parking_space_locations.rs
+++ b/crates/oswilno-contract/src/parking_space_locations.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use actix_admin::prelude::*;
use sea_orm::entity::prelude::*;
@@ -33,9 +33,9 @@ pub struct Model {
pub name: String,
pub number: i32,
pub stage: String,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub created_at: DateTime,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub updated_at: DateTime,
}
diff --git a/crates/oswilno-contract/src/parking_space_rents.rs b/crates/oswilno-contract/src/parking_space_rents.rs
index 6584f26..71c0485 100644
--- a/crates/oswilno-contract/src/parking_space_rents.rs
+++ b/crates/oswilno-contract/src/parking_space_rents.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use actix_admin::prelude::*;
use sea_orm::entity::prelude::*;
@@ -34,9 +34,9 @@ pub struct Model {
#[actix_admin(select_list=crate::parking_spaces::Entity)]
pub parking_space_id: i32,
pub available: bool,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub created_at: DateTime,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub updated_at: DateTime,
}
@@ -65,6 +65,7 @@ impl PrimaryKeyTrait for PrimaryKey {
#[derive(Copy, Clone, Debug, EnumIter)]
pub enum Relation {
ParkingSpaces,
+ RentRequests,
}
impl ColumnTrait for Column {
@@ -88,6 +89,7 @@ impl RelationTrait for Relation {
.from(Column::ParkingSpaceId)
.to(super::parking_spaces::Column::Id)
.into(),
+ Self::RentRequests => Entity::has_many(super::rent_requests::Entity).into(),
}
}
}
@@ -98,4 +100,10 @@ impl Related for Entity {
}
}
+impl Related for Entity {
+ fn to() -> RelationDef {
+ Relation::RentRequests.def()
+ }
+}
+
impl ActiveModelBehavior for ActiveModel {}
diff --git a/crates/oswilno-contract/src/parking_spaces.rs b/crates/oswilno-contract/src/parking_spaces.rs
index fac6e2f..4ef55fe 100644
--- a/crates/oswilno-contract/src/parking_spaces.rs
+++ b/crates/oswilno-contract/src/parking_spaces.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use super::sea_orm_active_enums::ParkingSpaceState;
use actix_admin::prelude::*;
@@ -34,9 +34,9 @@ pub struct Model {
#[actix_admin(select_list=crate::parking_spaces::ParkingSpaceState)]
pub state: ParkingSpaceState,
pub account_id: i32,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub created_at: DateTime,
- #[actix_admin(list_hide_column)]
+ #[actix_admin(list_hide_column, column_type = "NaiveDateTime")]
pub updated_at: DateTime,
pub spot: Option,
#[actix_admin(select_list=crate::parking_space_locations::Entity)]
@@ -71,6 +71,7 @@ pub enum Relation {
Accounts,
ParkingSpaceLocations,
ParkingSpaceRents,
+ RentRequests,
}
impl ColumnTrait for Column {
@@ -102,6 +103,7 @@ impl RelationTrait for Relation {
.into()
}
Self::ParkingSpaceRents => Entity::has_many(super::parking_space_rents::Entity).into(),
+ Self::RentRequests => Entity::has_many(super::rent_requests::Entity).into(),
}
}
}
@@ -124,4 +126,10 @@ impl Related for Entity {
}
}
+impl Related for Entity {
+ fn to() -> RelationDef {
+ Relation::RentRequests.def()
+ }
+}
+
impl ActiveModelBehavior for ActiveModel {}
diff --git a/crates/oswilno-contract/src/prelude.rs b/crates/oswilno-contract/src/prelude.rs
index 4e947b1..179afd2 100644
--- a/crates/oswilno-contract/src/prelude.rs
+++ b/crates/oswilno-contract/src/prelude.rs
@@ -1,7 +1,8 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
pub use super::accounts::Entity as Accounts;
pub use super::images::Entity as Images;
pub use super::parking_space_locations::Entity as ParkingSpaceLocations;
pub use super::parking_space_rents::Entity as ParkingSpaceRents;
pub use super::parking_spaces::Entity as ParkingSpaces;
+pub use super::rent_requests::Entity as RentRequests;
diff --git a/crates/oswilno-contract/src/sea_orm_active_enums.rs b/crates/oswilno-contract/src/sea_orm_active_enums.rs
index 194ba50..113040e 100644
--- a/crates/oswilno-contract/src/sea_orm_active_enums.rs
+++ b/crates/oswilno-contract/src/sea_orm_active_enums.rs
@@ -1,4 +1,4 @@
-//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.2
+//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.2
use actix_admin::prelude::*;
use sea_orm::entity::prelude::*;
diff --git a/crates/oswilno-parking-space/Cargo.toml b/crates/oswilno-parking-space/Cargo.toml
index 0e6d42a..589c336 100644
--- a/crates/oswilno-parking-space/Cargo.toml
+++ b/crates/oswilno-parking-space/Cargo.toml
@@ -13,7 +13,7 @@ autometrics = { version = "0.5.0", features = ["tracing", "tracing-subscriber",
oswilno-contract = { path = "../oswilno-contract" }
oswilno-session = { path = "../oswilno-session" }
oswilno-view = { path = "../oswilno-view" }
-sea-orm = { version = "0.11.1", features = ["runtime-actix-rustls", "sqlx", "sqlx-postgres", "debug-print"] }
+sea-orm = { version = "0.12", features = ["runtime-actix-rustls", "sqlx", "sqlx-postgres", "debug-print"] }
serde = { version = "1.0.176", features = ["derive"] }
serde_json = "1.0.104"
tokio = { version = "1.29.1", features = ["full"] }
diff --git a/crates/oswilno-parking-space/src/lib.rs b/crates/oswilno-parking-space/src/lib.rs
index 981a7a7..a0d3c19 100644
--- a/crates/oswilno-parking-space/src/lib.rs
+++ b/crates/oswilno-parking-space/src/lib.rs
@@ -1,6 +1,6 @@
use actix_web::http::header::ContentType;
use actix_web::web::{scope, Data, Form, Path, ServiceConfig};
-use actix_web::{get, post, HttpRequest, HttpResponse};
+use actix_web::{get, post, put, HttpRequest, HttpResponse};
use askama_actix::Template;
use autometrics::autometrics;
use oswilno_contract::parking_space_rents;
@@ -14,6 +14,8 @@ use oswilno_view::{
};
use sea_orm::prelude::*;
use sea_orm::ActiveValue::{NotSet, Set};
+use sea_orm::QueryOrder;
+use serde::Deserialize;
use std::collections::BTreeMap;
use std::rc::Rc;
use std::sync::Arc;
@@ -127,6 +129,7 @@ async fn load_parking_spaces(
.is_in(ids)
.or(parking_spaces::Column::AccountId.eq(account_id)),
)
+ .order_by_asc(parking_spaces::Column::Id)
.all(&*db)
.await
.unwrap()
@@ -448,3 +451,27 @@ async fn update(
.append_header(("HX-Redirect", "/parking-spaces/all"))
.finish()
}
+
+#[derive(Debug, Deserialize)]
+struct ParkingSpaceForm {
+ pub id: Option,
+ pub price: i32,
+ pub parking_space_id: i32,
+}
+
+#[get("/parking-space-rents/form")]
+async fn parking_space_rent_form() -> HttpResponse {
+ todo!()
+}
+#[get("/parking-space-rents/edit/{id}")]
+async fn parking_space_rent_edit(id: Path) -> HttpResponse {
+ todo!()
+}
+#[post("/parking-space-rents/create")]
+async fn parking_space_rent_create(form: Form) -> HttpResponse {
+ todo!()
+}
+#[put("/parking-space-rents/update")]
+async fn parking_space_rent_update(form: Form) -> HttpResponse {
+ todo!()
+}
diff --git a/crates/oswilno-parking-space/templates/parking-space-rents/form.html b/crates/oswilno-parking-space/templates/parking-space-rents/form.html
new file mode 100644
index 0000000..a8fd97f
--- /dev/null
+++ b/crates/oswilno-parking-space/templates/parking-space-rents/form.html
@@ -0,0 +1,48 @@
+
diff --git a/crates/oswilno-parking-space/templates/parking-spaces/all-partial.html b/crates/oswilno-parking-space/templates/parking-spaces/all-partial.html
index a15470d..97be547 100644
--- a/crates/oswilno-parking-space/templates/parking-spaces/all-partial.html
+++ b/crates/oswilno-parking-space/templates/parking-spaces/all-partial.html
@@ -77,24 +77,46 @@