From 9158987469df417a82df37d307f7555de4701780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wo=C5=BAniak?= Date: Wed, 27 Sep 2023 18:17:27 +0200 Subject: [PATCH] Add rent request table --- Cargo.lock | 67 +++++++-------- assets/build.js.map | 4 +- assets/style.css | 85 +++++-------------- crates/migration/src/lib.rs | 2 + crates/oswilno-actix-admin/src/lib.rs | 5 +- crates/oswilno-contract/src/accounts.rs | 14 ++- crates/oswilno-contract/src/images.rs | 6 +- crates/oswilno-contract/src/lib.rs | 5 +- .../src/parking_space_locations.rs | 6 +- .../src/parking_space_rents.rs | 14 ++- crates/oswilno-contract/src/parking_spaces.rs | 14 ++- crates/oswilno-contract/src/prelude.rs | 3 +- .../src/sea_orm_active_enums.rs | 2 +- crates/oswilno-parking-space/Cargo.toml | 2 +- crates/oswilno-parking-space/src/lib.rs | 29 ++++++- .../templates/parking-space-rents/form.html | 48 +++++++++++ .../templates/parking-spaces/all-partial.html | 32 +++++-- crates/oswilno-server/Cargo.toml | 2 +- crates/oswilno-session/Cargo.toml | 2 +- crates/oswilno-session/src/lib.rs | 1 - crates/oswilno-view/templates/base.html | 1 + crates/oswilno-view/templates/navbar.html | 15 +++- crates/web-assets/assets/app.js | 9 +- crates/web-assets/assets/favicon.svg | 10 +++ crates/web-assets/src/lib.rs | 67 +++++++++++++-- scripts/generate-entries.sh | 4 +- 26 files changed, 304 insertions(+), 145 deletions(-) create mode 100644 crates/oswilno-parking-space/templates/parking-space-rents/form.html create mode 100644 crates/web-assets/assets/favicon.svg diff --git a/Cargo.lock b/Cargo.lock index aa0632d..9555c54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -233,7 +233,7 @@ dependencies = [ "parse-size", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -364,7 +364,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -385,7 +385,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -580,7 +580,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -715,7 +715,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -732,7 +732,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -1397,7 +1397,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -1408,7 +1408,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -1767,7 +1767,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -1825,7 +1825,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -2157,7 +2157,7 @@ checksum = "ce243b1bfa62ffc028f1cc3b6034ec63d649f3031bc8a4fbbb004e1ac17d1f68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -2365,13 +2365,12 @@ checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" [[package]] name = "local-channel" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" +checksum = "e0a493488de5f18c8ffcba89eebb8532ffc562dc400490eb65b84893fae0b178" dependencies = [ "futures-core", "futures-sink", - "futures-util", "local-waker", ] @@ -2701,7 +2700,7 @@ dependencies = [ "redis", "redis-async-pool", "ron 0.8.1", - "sea-orm 0.11.3", + "sea-orm 0.12.2", "serde", "serde_json", "tokio 1.32.0", @@ -2766,7 +2765,7 @@ dependencies = [ "oswilno-contract", "oswilno-session", "oswilno-view", - "sea-orm 0.11.3", + "sea-orm 0.12.2", "serde", "serde_json", "tokio 1.32.0", @@ -2794,7 +2793,7 @@ dependencies = [ "redis", "redis-async-pool", "ring", - "sea-orm 0.11.3", + "sea-orm 0.12.2", "serde", "time", "tokio 1.32.0", @@ -2859,7 +2858,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3009,7 +3008,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3098,7 +3097,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3699,7 +3698,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3797,7 +3796,7 @@ dependencies = [ "proc-macro2", "quote", "sea-bae", - "syn 2.0.33", + "syn 2.0.37", "unicode-ident", ] @@ -3969,7 +3968,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4160,7 +4159,7 @@ checksum = "c87e960f4dca2788eeb86bbdde8dd246be8948790b7618d656e68f9b720a86e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4562,9 +4561,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.33" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9caece70c63bfba29ec2fed841a09851b14a235c60010fa4de58089b6c025668" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -4635,7 +4634,7 @@ checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4746,7 +4745,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4863,7 +4862,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4926,9 +4925,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" @@ -5144,7 +5143,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -5178,7 +5177,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.33", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/assets/build.js.map b/assets/build.js.map index f4b8e97..d7cf87d 100644 --- a/assets/build.js.map +++ b/assets/build.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../crates/web-assets/assets/elements/oswilno-price.js", "../crates/web-assets/assets/css.js", "../crates/web-assets/assets/elements/oswilno-error.js", "../crates/web-assets/assets/elements/oswilno-parking-space.js", "../crates/web-assets/assets/app.js"], - "sourcesContent": ["customElements.define('oswilno-price', class extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.attachShadow({ mode: 'open' });\n\t}\n\tconnectedCallback() {\n\t\tlet shadow = this.shadowRoot;\n\t\tlet price = parseInt(this.getAttribute('price'));\n\t\tif (isNaN(price)) price = 0;\n\t\tconst multiplier = parseInt(this.getAttribute('multiplier'));\n\t\tlet major = price;\n\t\tlet minor = 0;\n\t\tif (!isNaN(multiplier)) {\n\t\t\tmajor = Math.floor(price / multiplier);\n\t\t\tminor = price % multiplier;\n\t\t}\n\t\tconst currency = this.getAttribute('currency') || 'PLN';\n\t\tshadow.innerHTML = `
${major}.${minor >= 10 ? minor : minor + '0'} ${ currency }
`;\n\t}\n});\n", "export const copyCss = (shadow) => {\n\tlet css = '';\n\tfor (let i = 0; i < document.styleSheets.length; i++) {\n\t\tconst styleSheet = document.styleSheets[i];\n\t\tfor (let j = 0; j < styleSheet.rules.length; j++) {\n\t\t\tcss += styleSheet.rules[j].cssText;\t\n\t\t}\n\t}\n\tconst sheet = new CSSStyleSheet();\n\tsheet.replaceSync(css);\n\tshadow.adoptedStyleSheets = [sheet];\n};\n", "import { copyCss } from \"../css.js\";\n\ncustomElements.define('oswilno-error', 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\t\n\t\t\t
\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\tevt.detail.headers[AUTH_HEADER] = 'Bearer ' + (localStorage.getItem('jwt') || '');\n\t\tevt.detail.headers[READ_AUTH_HEADER] = 'Bearer ' + (localStorage.getItem('jwt') || '');\n\t\tevt.detail.headers[REFRESH_HEADER] = (localStorage.getItem('refresh') || '');\n\t}\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,CACtD,aAAa,QAAQ,KAAK,IAC7BA,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,GAE3E,CAAC", + "sourcesContent": ["customElements.define('oswilno-price', class extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.attachShadow({ mode: 'open' });\n\t}\n\tconnectedCallback() {\n\t\tlet shadow = this.shadowRoot;\n\t\tlet price = parseInt(this.getAttribute('price'));\n\t\tif (isNaN(price)) price = 0;\n\t\tconst multiplier = parseInt(this.getAttribute('multiplier'));\n\t\tlet major = price;\n\t\tlet minor = 0;\n\t\tif (!isNaN(multiplier)) {\n\t\t\tmajor = Math.floor(price / multiplier);\n\t\t\tminor = price % multiplier;\n\t\t}\n\t\tconst currency = this.getAttribute('currency') || 'PLN';\n\t\tshadow.innerHTML = `
${major}.${minor >= 10 ? minor : minor + '0'} ${ currency }
`;\n\t}\n});\n", "export const copyCss = (shadow) => {\n\tlet css = '';\n\tfor (let i = 0; i < document.styleSheets.length; i++) {\n\t\tconst styleSheet = document.styleSheets[i];\n\t\tfor (let j = 0; j < styleSheet.rules.length; j++) {\n\t\t\tcss += styleSheet.rules[j].cssText;\t\n\t\t}\n\t}\n\tconst sheet = new CSSStyleSheet();\n\tsheet.replaceSync(css);\n\tshadow.adoptedStyleSheets = [sheet];\n};\n", "import { copyCss } from \"../css.js\";\n\ncustomElements.define('oswilno-error', 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\t\n\t\t\t
\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 @@ +
+
+
+ {% if let Some(id) = form.id %} + + {% endif %} + + + +
+ + +
+
+ +
+
+
+
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 @@
{% endmatch %} -
+ diff --git a/crates/oswilno-server/Cargo.toml b/crates/oswilno-server/Cargo.toml index 0072ee6..94b7c2c 100644 --- a/crates/oswilno-server/Cargo.toml +++ b/crates/oswilno-server/Cargo.toml @@ -17,7 +17,7 @@ oswilno-session = { path = "../oswilno-session" } oswilno-view = { path = "../oswilno-view" } redis = { version = "0.17" } redis-async-pool = "0.2.4" -sea-orm = { version = "0.11", features = ["postgres-array", "runtime-actix-rustls", "sqlx-postgres"] } +sea-orm = { version = "0.12", features = ["postgres-array", "runtime-actix-rustls", "sqlx-postgres"] } serde = { version = "1.0.175", features = ["derive"] } serde_json = "1.0.103" tokio = { version = "1.29.1", features = ["full"] } diff --git a/crates/oswilno-session/Cargo.toml b/crates/oswilno-session/Cargo.toml index 1b1a53b..2c13d90 100644 --- a/crates/oswilno-session/Cargo.toml +++ b/crates/oswilno-session/Cargo.toml @@ -21,7 +21,7 @@ rand = "0.8.5" redis = { version = "0.17" } redis-async-pool = "0.2.4" ring = "0.16.20" -sea-orm = { version = "0.11", features = ["postgres-array", "runtime-actix-rustls", "sqlx-postgres", "macros", "sqlx"] } +sea-orm = { version = "0.12", features = ["postgres-array", "runtime-actix-rustls", "sqlx-postgres", "macros", "sqlx"] } serde = { version = "1.0.180", features = ["derive"] } time = "0.3.24" tokio = { version = "1.29.1", features = ["full"] } diff --git a/crates/oswilno-session/src/lib.rs b/crates/oswilno-session/src/lib.rs index 268e0b6..68ecf33 100644 --- a/crates/oswilno-session/src/lib.rs +++ b/crates/oswilno-session/src/lib.rs @@ -10,7 +10,6 @@ use garde::Validate; use oswilno_view::{Blank, Errors, Lang, Layout, Main, MainOpts, TranslationStorage}; use sea_orm::DatabaseConnection; use serde::{Deserialize, Serialize}; -use sea_orm::prelude::*; pub use oswilno_view::filters; diff --git a/crates/oswilno-view/templates/base.html b/crates/oswilno-view/templates/base.html index 760e3b3..b3bb696 100644 --- a/crates/oswilno-view/templates/base.html +++ b/crates/oswilno-view/templates/base.html @@ -9,6 +9,7 @@ + {% block head %} {% endblock %} diff --git a/crates/oswilno-view/templates/navbar.html b/crates/oswilno-view/templates/navbar.html index 2f6cc44..349a008 100644 --- a/crates/oswilno-view/templates/navbar.html +++ b/crates/oswilno-view/templates/navbar.html @@ -1,8 +1,17 @@