13 Commits

Author SHA1 Message Date
3d8a2910cb temp 2025-01-01 22:37:48 +01:00
da2291b6e7 build: remove needless packages from the production Docker image (#77) 2025-01-01 21:14:34 +00:00
5b1df9577b build: add Docker files to the .dockerignore (#76) 2025-01-01 20:19:45 +00:00
f688c7c2fa build: remove needless packages from the production Docker image
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 9s
GitLeaks check / GitLeaks check (pull_request) Successful in 14s
hadolint check / hadolint check (pull_request) Successful in 14s
htmlhint check / htmlhint check (pull_request) Successful in 22s
checkov check / checkov check (pull_request) Successful in 1m58s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 8s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 22s
Prettier check / Prettier check (pull_request) Successful in 24s
Rust check / Rust check (pull_request) Successful in 31m50s
ShellCheck check / ShellCheck check (pull_request) Successful in 24s
Stylelint check / Stylelint check (pull_request) Successful in 25s
yamllint check / yamllint check (pull_request) Successful in 32s
2025-01-01 20:50:16 +01:00
3677cc343c build: add Docker files to the .dockerignore
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 2m42s
checkov check / checkov check (pull_request) Successful in 1m59s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 31s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 11s
Prettier check / Prettier check (pull_request) Successful in 10s
ShellCheck check / ShellCheck check (pull_request) Successful in 22s
Stylelint check / Stylelint check (pull_request) Successful in 24s
yamllint check / yamllint check (pull_request) Successful in 22s
Rust check / Rust check (pull_request) Successful in 27m21s
2025-01-01 20:40:19 +01:00
d7c4b0788d build: update the npm package lock (#75) 2024-12-30 19:01:11 +00:00
37ab61743f build: update the npm package lock
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 55s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 7s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 14m39s
ShellCheck check / ShellCheck check (pull_request) Successful in 15s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 13s
2024-12-30 19:42:55 +01:00
5a4716146e chore: add a default merge message template (#74) 2024-12-30 18:38:41 +00:00
2b719e0c0f chore: add a default merge message template
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 48s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 9s
htmlhint check / htmlhint check (pull_request) Successful in 10s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 15m10s
ShellCheck check / ShellCheck check (pull_request) Successful in 14s
Stylelint check / Stylelint check (pull_request) Successful in 11s
yamllint check / yamllint check (pull_request) Successful in 15s
2024-12-30 13:52:32 +01:00
45a20cdaef ci: add pull request check Gitea actions (#73) 2024-12-30 11:39:57 +00:00
da87cd95da build: pin the Docker image versions with their index digests
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 1m39s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 18s
hadolint check / hadolint check (pull_request) Successful in 9s
htmlhint check / htmlhint check (pull_request) Successful in 15s
markdownlint check / markdownlint check (pull_request) Successful in 20s
Prettier check / Prettier check (pull_request) Successful in 23s
Rust check / Rust check (pull_request) Successful in 31m7s
ShellCheck check / ShellCheck check (pull_request) Successful in 21s
yamllint check / yamllint check (pull_request) Successful in 21s
Stylelint check / Stylelint check (pull_request) Successful in 24s
2024-12-29 21:35:11 +01:00
6b2bfb5ebe style: remove needless lifetimes
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 2m35s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 19s
htmlhint check / htmlhint check (pull_request) Successful in 10s
markdownlint check / markdownlint check (pull_request) Successful in 9s
Prettier check / Prettier check (pull_request) Successful in 9s
Rust check / Rust check (pull_request) Successful in 15m57s
ShellCheck check / ShellCheck check (pull_request) Successful in 13s
Stylelint check / Stylelint check (pull_request) Successful in 11s
yamllint check / yamllint check (pull_request) Successful in 13s
2024-12-29 21:07:07 +01:00
a83b376f7b refactor: import different dependencies only in the correct target binary
Some checks failed
actionlint check / actionlint check (pull_request) Successful in 7s
checkov check / checkov check (pull_request) Successful in 53s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 9s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 9s
Prettier check / Prettier check (pull_request) Successful in 10s
Rust check / Rust check (pull_request) Failing after 7m40s
ShellCheck check / ShellCheck check (pull_request) Successful in 12s
Stylelint check / Stylelint check (pull_request) Successful in 11s
yamllint check / yamllint check (pull_request) Successful in 14s
2024-12-29 20:50:06 +01:00
28 changed files with 684 additions and 81 deletions

View File

@ -5,5 +5,8 @@
/node_modules/
/static/
/target/
/docker-compose-dev.yaml
/docker-compose-prod.yaml
.dockerignore
/docker-compose-dev.yml
/docker-compose-prod.yml
/docker/dev/app/Dockerfile
/docker/prod/app/Dockerfile

View File

@ -1,2 +1,2 @@
DATABASE_URL=postgres://app:app@db/todo_baggins
DATABASE_URL=postgres://app:app@localhost:5432/todo_baggins
LANGUAGE_CODE=en-US

View File

@ -0,0 +1 @@
${PullRequestTitle} (${PullRequestReference})

547
Cargo.lock generated
View File

@ -23,6 +23,18 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "ahash"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.3"
@ -32,6 +44,12 @@ dependencies = [
"memchr",
]
[[package]]
name = "allocator-api2"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "android-tzdata"
version = "0.1.1"
@ -64,6 +82,12 @@ dependencies = [
"zbus",
]
[[package]]
name = "askama_escape"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341"
[[package]]
name = "async-broadcast"
version = "0.7.1"
@ -312,6 +336,77 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "axum"
version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
dependencies = [
"async-trait",
"axum-core",
"axum-macros",
"base64",
"bytes",
"futures-util",
"http",
"http-body",
"http-body-util",
"hyper",
"hyper-util",
"itoa 1.0.11",
"matchit",
"memchr",
"mime",
"multer",
"percent-encoding",
"pin-project-lite",
"rustversion",
"serde",
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
"sha1",
"sync_wrapper",
"tokio",
"tokio-tungstenite",
"tower 0.5.2",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "axum-core"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
dependencies = [
"async-trait",
"bytes",
"futures-util",
"http",
"http-body",
"http-body-util",
"mime",
"pin-project-lite",
"rustversion",
"sync_wrapper",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "axum-macros"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.74",
]
[[package]]
name = "backtrace"
version = "0.3.73"
@ -544,7 +639,7 @@ dependencies = [
"cocoa-foundation 0.1.2",
"core-foundation 0.9.4",
"core-graphics 0.23.2",
"foreign-types",
"foreign-types 0.5.0",
"libc",
"objc",
]
@ -560,7 +655,7 @@ dependencies = [
"cocoa-foundation 0.2.0",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
"foreign-types",
"foreign-types 0.5.0",
"libc",
"objc",
]
@ -713,7 +808,7 @@ dependencies = [
"bitflags 1.3.2",
"core-foundation 0.9.4",
"core-graphics-types 0.1.3",
"foreign-types",
"foreign-types 0.5.0",
"libc",
]
@ -726,7 +821,7 @@ dependencies = [
"bitflags 2.6.0",
"core-foundation 0.10.0",
"core-graphics-types 0.2.0",
"foreign-types",
"foreign-types 0.5.0",
"libc",
]
@ -991,10 +1086,12 @@ dependencies = [
"dioxus-history",
"dioxus-hooks",
"dioxus-html",
"dioxus-liveview",
"dioxus-logger",
"dioxus-mobile",
"dioxus-router",
"dioxus-signals",
"dioxus-ssr",
"dioxus-web",
"manganis",
"serde",
@ -1123,7 +1220,7 @@ dependencies = [
"serde",
"serde_json",
"tracing",
"tungstenite",
"tungstenite 0.23.0",
"warnings",
]
@ -1162,23 +1259,41 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffe83189fc0139a34a4cc195aa3eb917f5b6a3317bf3f4183d9e8f1e110a9bab"
dependencies = [
"async-trait",
"axum",
"base64",
"bytes",
"ciborium",
"dioxus-cli-config",
"dioxus-desktop",
"dioxus-devtools",
"dioxus-history",
"dioxus-interpreter-js",
"dioxus-isrg",
"dioxus-lib",
"dioxus-mobile",
"dioxus-ssr",
"dioxus-web",
"dioxus_server_macro",
"futures-channel",
"futures-util",
"generational-box",
"http",
"hyper",
"once_cell",
"parking_lot",
"pin-project",
"serde",
"server_fn",
"thiserror",
"tokio",
"tokio-stream",
"tokio-util",
"tower 0.4.13",
"tower-http",
"tower-layer",
"tracing",
"tracing-futures",
"web-sys",
]
@ -1277,6 +1392,20 @@ dependencies = [
"web-sys",
]
[[package]]
name = "dioxus-isrg"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b9777b9a71c9ecede300e52d217b800c5f884654b5af2da2a534c7f8bded7d0"
dependencies = [
"chrono",
"http",
"lru",
"rustc-hash",
"thiserror",
"tracing",
]
[[package]]
name = "dioxus-lib"
version = "0.6.0"
@ -1294,6 +1423,34 @@ dependencies = [
"dioxus-signals",
]
[[package]]
name = "dioxus-liveview"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0df966bf26040e5875908caa4e59bb2152f3532cca97937a34dd1057168c023f"
dependencies = [
"axum",
"dioxus-cli-config",
"dioxus-core",
"dioxus-devtools",
"dioxus-document",
"dioxus-history",
"dioxus-html",
"dioxus-interpreter-js",
"futures-channel",
"futures-util",
"generational-box",
"rustc-hash",
"serde",
"serde_json",
"slab",
"thiserror",
"tokio",
"tokio-stream",
"tokio-util",
"tracing",
]
[[package]]
name = "dioxus-logger"
version = "0.6.0"
@ -1389,6 +1546,18 @@ dependencies = [
"warnings",
]
[[package]]
name = "dioxus-ssr"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6cd3d309a60d654bafcf49b32b96fa72da6d9155582eba9b5c608c07ab0c850"
dependencies = [
"askama_escape",
"dioxus-core",
"dioxus-core-types",
"rustc-hash",
]
[[package]]
name = "dioxus-web"
version = "0.6.0"
@ -1547,6 +1716,15 @@ version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
name = "encoding_rs"
version = "0.8.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
dependencies = [
"cfg-if",
]
[[package]]
name = "endi"
version = "1.1.0"
@ -1755,6 +1933,21 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foldhash"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2"
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared 0.1.1",
]
[[package]]
name = "foreign-types"
version = "0.5.0"
@ -1762,7 +1955,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
dependencies = [
"foreign-types-macros",
"foreign-types-shared",
"foreign-types-shared 0.3.1",
]
[[package]]
@ -1776,6 +1969,12 @@ dependencies = [
"syn 2.0.74",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "foreign-types-shared"
version = "0.3.1"
@ -2300,6 +2499,21 @@ name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
"ahash",
"allocator-api2",
]
[[package]]
name = "hashbrown"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
dependencies = [
"allocator-api2",
"equivalent",
"foldhash",
]
[[package]]
name = "heck"
@ -2388,12 +2602,24 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "http-range-header"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
[[package]]
name = "httparse"
version = "1.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
[[package]]
name = "httpdate"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
version = "1.4.1"
@ -2406,6 +2632,7 @@ dependencies = [
"http",
"http-body",
"httparse",
"httpdate",
"itoa 1.0.11",
"pin-project-lite",
"smallvec",
@ -2413,6 +2640,22 @@ dependencies = [
"want",
]
[[package]]
name = "hyper-tls"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
"hyper",
"hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
"tower-service",
]
[[package]]
name = "hyper-util"
version = "0.1.7"
@ -2428,7 +2671,7 @@ dependencies = [
"pin-project-lite",
"socket2 0.5.7",
"tokio",
"tower",
"tower 0.4.13",
"tower-service",
"tracing",
]
@ -2673,6 +2916,12 @@ dependencies = [
"unic-langid",
]
[[package]]
name = "inventory"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
[[package]]
name = "io-lifetimes"
version = "1.0.11"
@ -2913,6 +3162,15 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86"
[[package]]
name = "lru"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
dependencies = [
"hashbrown 0.15.2",
]
[[package]]
name = "mac"
version = "0.1.1"
@ -2983,6 +3241,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
[[package]]
name = "matchit"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
[[package]]
name = "memchr"
version = "2.7.4"
@ -3104,6 +3368,40 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "multer"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b"
dependencies = [
"bytes",
"encoding_rs",
"futures-util",
"http",
"httparse",
"memchr",
"mime",
"spin",
"version_check",
]
[[package]]
name = "native-tls"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
dependencies = [
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "ndk"
version = "0.9.0"
@ -3347,6 +3645,60 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "openssl"
version = "0.10.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
dependencies = [
"bitflags 2.6.0",
"cfg-if",
"foreign-types 0.3.2",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.74",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
version = "300.4.1+3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
version = "0.9.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
dependencies = [
"cc",
"libc",
"openssl-src",
"pkg-config",
"vcpkg",
]
[[package]]
name = "option-ext"
version = "0.2.0"
@ -3908,20 +4260,24 @@ dependencies = [
"http-body",
"http-body-util",
"hyper",
"hyper-tls",
"hyper-util",
"ipnet",
"js-sys",
"log",
"mime",
"mime_guess",
"native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
"rustls-pemfile",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
"tokio",
"tokio-native-tls",
"tokio-util",
"tower-service",
"url",
@ -4003,6 +4359,21 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "rustls-pemfile"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37"
[[package]]
name = "rustversion"
version = "1.0.17"
@ -4024,12 +4395,44 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "schannel"
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "security-framework"
version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
"bitflags 2.6.0",
"core-foundation 0.9.4",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework-sys"
version = "2.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
name = "selectors"
version = "0.22.0"
@ -4123,6 +4526,16 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_path_to_error"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
dependencies = [
"itoa 1.0.11",
"serde",
]
[[package]]
name = "serde_qs"
version = "0.12.0"
@ -4202,12 +4615,16 @@ version = "0.6.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "024b400db1aca5bd4188714f7bbbf7a2e1962b9a12a80b2a21e937e509086963"
dependencies = [
"axum",
"bytes",
"const_format",
"dashmap",
"futures",
"gloo-net",
"http",
"http-body-util",
"hyper",
"inventory",
"js-sys",
"once_cell",
"reqwest",
@ -4217,6 +4634,8 @@ dependencies = [
"serde_qs",
"server_fn_macro_default",
"thiserror",
"tower 0.4.13",
"tower-layer",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
@ -4427,6 +4846,12 @@ dependencies = [
"system-deps",
]
[[package]]
name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
@ -4718,6 +5143,7 @@ dependencies = [
"dioxus-query",
"dotenvy",
"feruca",
"openssl",
"serde",
"serde_json",
"serde_with",
@ -4757,6 +5183,40 @@ dependencies = [
"syn 2.0.74",
]
[[package]]
name = "tokio-native-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
dependencies = [
"native-tls",
"tokio",
]
[[package]]
name = "tokio-stream"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
dependencies = [
"futures-core",
"pin-project-lite",
"tokio",
"tokio-util",
]
[[package]]
name = "tokio-tungstenite"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9"
dependencies = [
"futures-util",
"log",
"tokio",
"tungstenite 0.24.0",
]
[[package]]
name = "tokio-util"
version = "0.7.11"
@ -4766,6 +5226,8 @@ dependencies = [
"bytes",
"futures-core",
"futures-sink",
"futures-util",
"hashbrown 0.14.5",
"pin-project-lite",
"tokio",
]
@ -4828,6 +5290,48 @@ dependencies = [
"tokio",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tower"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
dependencies = [
"futures-core",
"futures-util",
"pin-project-lite",
"sync_wrapper",
"tokio",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tower-http"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
dependencies = [
"bitflags 2.6.0",
"bytes",
"futures-util",
"http",
"http-body",
"http-body-util",
"http-range-header",
"httpdate",
"mime",
"mime_guess",
"percent-encoding",
"pin-project-lite",
"tokio",
"tokio-util",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
@ -4848,6 +5352,7 @@ version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@ -4873,6 +5378,16 @@ dependencies = [
"once_cell",
]
[[package]]
name = "tracing-futures"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
dependencies = [
"pin-project",
"tracing",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.18"
@ -4939,6 +5454,24 @@ dependencies = [
"utf-8",
]
[[package]]
name = "tungstenite"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
dependencies = [
"byteorder",
"bytes",
"data-encoding",
"http",
"httparse",
"log",
"rand 0.8.5",
"sha1",
"thiserror",
"utf-8",
]
[[package]]
name = "type-map"
version = "0.5.0"

View File

@ -7,30 +7,45 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
dioxus = { version = "0.6.0", features = ["fullstack", "router"] }
dioxus-query = "0.6.0"
dioxus-i18n = "0.3.0"
async-std = "1.12.0"
chrono = { version = "0.4.38", features = ["serde", "unstable-locales"] }
diesel = { version = "2.2.2", features = ["chrono", "postgres", "postgres_backend", "serde_json"] }
diesel_migrations = { version = "2.2.0", features = ["postgres"] }
dotenvy = "0.15.7"
feruca = "0.10.0"
serde = "1.0.208"
serde_json = "1.0.125"
dioxus = { version = "0.6.0", features = ["fullstack", "router"] }
feruca = { version = "0.10.0" }
serde = { version = "1.0.208" }
serde_json = { version = "1.0.125" }
serde_with = { version = "3.9.0", features = ["chrono_0_4"] }
time = "0.3.36"
tracing = "0.1.40"
unic-langid-impl = { version = "0.9.5", features = ["serde"] }
validator = { version = "0.19.0", features = ["derive"] }
voca_rs = "1.15.2"
diesel = { version = "2.2.2", features = ["chrono", "postgres", "postgres_backend", "serde_json"], optional = true }
diesel_migrations = { version = "2.2.0", features = ["postgres"], optional = true }
dotenvy = { version = "0.15.7", optional = true }
time = { version = "0.3.36", optional = true }
async-std = { version = "1.12.0" }
dioxus-i18n = { version = "0.3.0" }
dioxus-query = { version = "0.6.0" }
voca_rs = { version = "1.15.2" }
[target.'cfg(target_os = "android")'.dependencies]
openssl = { version = "0.10", features = ["vendored"] }
[features]
default = ["web"]
default = ["mobile"]
desktop = ["dioxus/desktop"]
mobile = ["dioxus/mobile"]
web = ["dioxus/web"]
mobile = [
"dioxus/mobile",
]
web = [
"dioxus/web",
]
server = [
"dioxus/server",
"dep:diesel",
"dep:diesel_migrations",
"dep:dotenvy",
"dep:time",
]
[profile]

View File

@ -1,4 +1,4 @@
FROM rust:1.83-bookworm
FROM rust@sha256:a45bf1f5d9af0a23b26703b3500d70af1abff7f984a7abef5a104b42c02a292b
RUN cargo install dioxus-cli diesel_cli \
&& apt-get update && apt-get install -y --no-install-recommends \

View File

@ -13,11 +13,11 @@ stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
[program:dx]
command=dx serve --addr 0.0.0.0 --port 8000
directory=/srv/app
autostart=true
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
# [program:dx]
# command=dx serve --addr 0.0.0.0 --port 8000
# directory=/srv/app
# autostart=true
# autorestart=true
# stdout_logfile=/dev/fd/1
# stdout_logfile_maxbytes=0
# redirect_stderr=true

View File

@ -1,11 +1,9 @@
FROM rust:1.83-bookworm AS builder
FROM rust@sha256:a45bf1f5d9af0a23b26703b3500d70af1abff7f984a7abef5a104b42c02a292b AS builder
RUN rustup target add wasm32-unknown-unknown \
&& cargo install dioxus-cli diesel_cli \
RUN cargo install dioxus-cli diesel_cli \
&& apt-get update && apt-get install -y --no-install-recommends \
nodejs=18.19.0+dfsg-6~deb12u2 \
npm=9.2.0~ds1-1 \
supervisor=4.2.5-1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
@ -16,7 +14,7 @@ RUN npm install \
&& npm run build \
&& dx build --release
FROM debian:bookworm-slim AS runner
FROM debian@sha256:b877a1a3fdf02469440f1768cf69c9771338a875b7add5e80c45b756c92ac20a AS runner
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq5=15.8-0+deb12u1 \

12
package-lock.json generated
View File

@ -5,14 +5,14 @@
"packages": {
"": {
"dependencies": {
"tailwindcss": "^3.4.10"
"tailwindcss": "3.4.10"
},
"devDependencies": {
"htmlhint": "^1.1.4",
"markdownlint-cli": "^0.43.0",
"prettier": "^3.4.2",
"stylelint": "^16.12.0",
"stylelint-config-standard": "^36.0.1"
"htmlhint": "1.1.4",
"markdownlint-cli": "0.43.0",
"prettier": "3.4.2",
"stylelint": "16.12.0",
"stylelint-config-standard": "36.0.1"
}
},
"node_modules/@alloc/quick-lru": {

View File

@ -7,7 +7,6 @@ use dioxus::core_macro::rsx;
use dioxus::dioxus_core::Element;
use dioxus::prelude::*;
use dioxus_query::prelude::use_query_client;
use tracing::info;
#[component]
pub(crate) fn TaskList(tasks: Vec<TaskWithSubtasks>, class: Option<&'static str>) -> Element {

View File

@ -7,6 +7,7 @@ pub enum Error {
ServerInternal,
}
#[cfg(feature = "server")]
impl From<diesel::result::Error> for Error {
fn from(_: diesel::result::Error) -> Self {
Self::ServerInternal

View File

@ -35,6 +35,7 @@ impl From<ValidationErrors> for ErrorVec<ProjectError> {
}
}
#[cfg(feature = "server")]
impl From<diesel::result::Error> for ProjectError {
fn from(_: diesel::result::Error) -> Self {
Self::Error(Error::ServerInternal)

View File

@ -36,6 +36,7 @@ impl From<ValidationErrors> for ErrorVec<SubtaskError> {
}
}
#[cfg(feature = "server")]
impl From<diesel::result::Error> for SubtaskError {
fn from(diesel_error: diesel::result::Error) -> Self {
match diesel_error {

View File

@ -36,6 +36,7 @@ impl From<ValidationErrors> for ErrorVec<TaskError> {
}
}
#[cfg(feature = "server")]
impl From<diesel::result::Error> for TaskError {
fn from(diesel_error: diesel::result::Error) -> Self {
match diesel_error {

View File

@ -9,7 +9,7 @@ pub(crate) static COLLATOR: Lazy<Mutex<Collator>> = Lazy::new(|| Mutex::new(Coll
pub(crate) struct LocaleFromLanguageIdentifier<'a>(&'a LanguageIdentifier);
impl<'a> Deref for LocaleFromLanguageIdentifier<'a> {
impl Deref for LocaleFromLanguageIdentifier<'_> {
type Target = LanguageIdentifier;
fn deref(&self) -> &Self::Target {
@ -17,7 +17,7 @@ impl<'a> Deref for LocaleFromLanguageIdentifier<'a> {
}
}
impl<'a> From<LocaleFromLanguageIdentifier<'a>> for Locale {
impl From<LocaleFromLanguageIdentifier<'_>> for Locale {
fn from(language_identifier: LocaleFromLanguageIdentifier) -> Self {
language_identifier
.to_string()

View File

@ -1,10 +1,12 @@
mod components;
mod errors;
mod internationalization;
#[cfg(feature = "server")]
mod migrations;
mod models;
mod query;
mod route;
#[cfg(feature = "server")]
mod schema;
mod server;
mod utils;

View File

@ -1,19 +1,28 @@
#[cfg(feature = "server")]
use crate::schema::tasks;
use chrono::{Duration, NaiveDate, NaiveTime};
#[cfg(feature = "server")]
use diesel::deserialize::FromSql;
#[cfg(feature = "server")]
use diesel::pg::{Pg, PgValue};
#[cfg(feature = "server")]
use diesel::serialize::{Output, ToSql};
#[cfg(feature = "server")]
use diesel::sql_types::{Bool, Jsonb};
#[cfg(feature = "server")]
use diesel::{AsExpression, BoxableExpression, FromSqlRow, PgJsonbExpressionMethods};
use serde::{Deserialize, Serialize};
#[cfg(feature = "server")]
use serde_json::json;
use serde_with::DurationSeconds;
use std::hash::Hash;
#[cfg(feature = "server")]
use std::io::Write;
#[serde_with::serde_as]
#[derive(AsExpression, FromSqlRow, Serialize, Deserialize, Clone, Debug)]
#[diesel(sql_type = Jsonb)]
#[derive(Serialize, Deserialize, Clone, Debug)]
#[cfg_attr(feature = "server", derive(AsExpression, FromSqlRow))]
#[cfg_attr(feature = "server", diesel(sql_type = Jsonb))]
pub enum Category {
Inbox,
SomedayMaybe,
@ -29,6 +38,7 @@ pub enum Category {
Trash,
}
#[cfg(feature = "server")]
impl Category {
pub fn eq_sql_predicate(&self) -> Box<dyn BoxableExpression<tasks::table, Pg, SqlType = Bool>> {
use crate::schema::tasks::dsl::*;
@ -60,6 +70,7 @@ impl PartialEq for Category {
impl Eq for Category {}
#[cfg(feature = "server")]
impl ToSql<Jsonb, Pg> for Category {
fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, Pg>) -> diesel::serialize::Result {
let json = serde_json::to_string(self)?;
@ -72,6 +83,7 @@ impl ToSql<Jsonb, Pg> for Category {
}
}
#[cfg(feature = "server")]
impl FromSql<Jsonb, Pg> for Category {
fn from_sql(bytes: PgValue) -> diesel::deserialize::Result<Self> {
let bytes = bytes.as_bytes();

View File

@ -1,6 +1,8 @@
use crate::internationalization::COLLATOR;
#[cfg(feature = "server")]
use crate::schema::projects;
use chrono::NaiveDateTime;
#[cfg(feature = "server")]
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use std::cmp::Ordering;
@ -9,9 +11,12 @@ use validator::Validate;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(Queryable, Selectable, Identifiable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[diesel(table_name = crate::schema::projects)]
#[diesel(check_for_backend(diesel::pg::Pg))]
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
#[cfg_attr(feature = "server", derive(Queryable, Selectable, Identifiable))]
#[cfg_attr(
feature = "server",
diesel(table_name = crate::schema::projects, check_for_backend(diesel::pg::Pg))
)]
pub struct Project {
id: i32,
title: String,
@ -19,6 +24,7 @@ pub struct Project {
updated_at: NaiveDateTime,
}
#[allow(dead_code)]
impl Project {
pub fn id(&self) -> i32 {
self.id
@ -54,8 +60,9 @@ impl Ord for Project {
}
}
#[derive(Insertable, Serialize, Deserialize, Validate, Clone, Debug)]
#[diesel(table_name = projects)]
#[derive(Serialize, Deserialize, Validate, Clone, Debug)]
#[cfg_attr(feature = "server", derive(Insertable))]
#[cfg_attr(feature = "server", diesel(table_name = projects))]
pub struct NewProject {
#[validate(length(
min = "TITLE_LENGTH_MIN",

View File

@ -1,6 +1,9 @@
#[cfg(feature = "server")]
use crate::models::task::Task;
#[cfg(feature = "server")]
use crate::schema::subtasks;
use chrono::NaiveDateTime;
#[cfg(feature = "server")]
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use std::cmp::Ordering;
@ -9,20 +12,19 @@ use validator::Validate;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(
Queryable,
Selectable,
Identifiable,
Associations,
Serialize,
Deserialize,
PartialEq,
Clone,
Debug,
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
#[cfg_attr(
feature = "server",
derive(Queryable, Selectable, Identifiable, Associations)
)]
#[cfg_attr(
feature = "server",
diesel(
table_name = subtasks,
belongs_to(Task, foreign_key = task_id),
check_for_backend(diesel::pg::Pg)
)
)]
#[diesel(belongs_to(Task, foreign_key = task_id))]
#[diesel(table_name = subtasks)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct Subtask {
id: i32,
task_id: i32,
@ -74,8 +76,9 @@ impl Ord for Subtask {
}
}
#[derive(Insertable, Serialize, Deserialize, Validate, Clone, Debug)]
#[diesel(table_name = subtasks)]
#[derive(Serialize, Deserialize, Validate, Clone, Debug)]
#[cfg_attr(feature = "server", derive(Insertable))]
#[cfg_attr(feature = "server", diesel(table_name = subtasks))]
pub struct NewSubtask {
pub task_id: i32,
#[validate(length(

View File

@ -1,8 +1,10 @@
use crate::models::category::Category;
use crate::models::subtask::Subtask;
#[cfg(feature = "server")]
use crate::schema::tasks;
use crate::utils::reverse_ord_option::ReverseOrdOption;
use chrono::NaiveDateTime;
#[cfg(feature = "server")]
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use std::cmp::Ordering;
@ -11,9 +13,9 @@ use validator::Validate;
const TITLE_LENGTH_MIN: u64 = 1;
const TITLE_LENGTH_MAX: u64 = 255;
#[derive(Queryable, Selectable, Identifiable, Serialize, Deserialize, PartialEq, Clone, Debug)]
#[diesel(table_name = tasks)]
#[diesel(check_for_backend(diesel::pg::Pg))]
#[derive(Serialize, Deserialize, PartialEq, Clone, Debug)]
#[cfg_attr(feature = "server", derive(Queryable, Selectable, Identifiable))]
#[cfg_attr(feature = "server", diesel(table_name = tasks, check_for_backend(diesel::pg::Pg)))]
pub struct Task {
id: i32,
title: String,
@ -138,8 +140,9 @@ impl Ord for TaskWithSubtasks {
}
}
#[derive(Insertable, Serialize, Deserialize, Validate, Clone, Debug)]
#[diesel(table_name = tasks)]
#[derive(Serialize, Deserialize, Validate, Clone, Debug)]
#[cfg_attr(feature = "server", derive(Insertable))]
#[cfg_attr(feature = "server", diesel(table_name = tasks))]
pub struct NewTask {
#[validate(length(
min = "TITLE_LENGTH_MIN",

View File

@ -9,6 +9,7 @@ pub(crate) mod projects;
pub(crate) mod subtasks;
pub(crate) mod tasks;
#[allow(dead_code)]
#[derive(PartialEq, Debug)]
pub(crate) enum QueryValue {
Projects(Vec<Project>),
@ -17,6 +18,7 @@ pub(crate) enum QueryValue {
Subtasks(Vec<Subtask>),
}
#[allow(dead_code)]
#[derive(Debug)]
pub(crate) enum QueryErrors {
Error(ErrorVec<Error>),

View File

@ -4,6 +4,7 @@ use crate::server::tasks::{get_tasks_in_category, get_tasks_with_subtasks_in_cat
use dioxus::prelude::ServerFnError;
use dioxus_query::prelude::{use_get_query, QueryResult, UseQuery};
#[allow(dead_code)]
pub(crate) fn use_tasks_in_category_query(
category: Category,
) -> UseQuery<QueryValue, QueryErrors, QueryKey> {

View File

@ -1,5 +1,6 @@
use dioxus::prelude::ServerFnError;
use dioxus::prelude::*;
#[cfg(feature = "server")]
use dotenvy::dotenv;
use std::env;
use unic_langid_impl::LanguageIdentifier;

View File

@ -1,3 +1,4 @@
#[cfg(feature = "server")]
pub(crate) mod database_connection;
pub(crate) mod internationalization;
pub(crate) mod projects;

View File

@ -2,9 +2,12 @@ use crate::errors::error::Error;
use crate::errors::error_vec::ErrorVec;
use crate::errors::project_error::ProjectError;
use crate::models::project::{NewProject, Project};
#[cfg(feature = "server")]
use crate::server::database_connection::establish_database_connection;
#[cfg(feature = "server")]
use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
use dioxus::prelude::*;
#[cfg(feature = "server")]
use validator::Validate;
#[server]

View File

@ -2,10 +2,14 @@ use crate::errors::error::Error;
use crate::errors::error_vec::ErrorVec;
use crate::errors::subtask_error::SubtaskError;
use crate::models::subtask::{NewSubtask, Subtask};
#[cfg(feature = "server")]
use crate::server::database_connection::establish_database_connection;
#[cfg(feature = "server")]
use crate::server::tasks::trigger_task_updated_at;
#[cfg(feature = "server")]
use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper};
use dioxus::prelude::*;
#[cfg(feature = "server")]
use validator::Validate;
#[server]

View File

@ -1,16 +1,26 @@
use crate::errors::error::Error;
use crate::errors::error_vec::ErrorVec;
use crate::errors::task_error::TaskError;
use crate::models::category::{Category, ReoccurrenceInterval};
use crate::models::category::Category;
#[cfg(feature = "server")]
use crate::models::category::ReoccurrenceInterval;
#[cfg(feature = "server")]
use crate::models::subtask::Subtask;
use crate::models::task::{NewTask, Task, TaskWithSubtasks};
#[cfg(feature = "server")]
use crate::server::database_connection::establish_database_connection;
#[cfg(feature = "server")]
use crate::server::subtasks::restore_subtasks_of_task;
#[cfg(feature = "server")]
use chrono::{Datelike, Days, Local, Months, NaiveDate};
#[cfg(feature = "server")]
use diesel::prelude::*;
#[cfg(feature = "server")]
use diesel::{ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper};
use dioxus::prelude::*;
#[cfg(feature = "server")]
use time::util::days_in_year_month;
#[cfg(feature = "server")]
use validator::Validate;
#[server]
@ -204,6 +214,7 @@ pub(crate) async fn delete_task(task_id: i32) -> Result<(), ServerFnError<ErrorV
Ok(())
}
#[cfg(feature = "server")]
pub(crate) async fn trigger_task_updated_at(task_id: i32) -> Result<Task, ErrorVec<Error>> {
use crate::schema::tasks::dsl::*;

View File

@ -5,7 +5,7 @@ to reverse that. */
#[derive(PartialEq)]
pub(crate) struct ReverseOrdOption<'a, T>(&'a Option<T>);
impl<'a, T> Deref for ReverseOrdOption<'a, T> {
impl<T> Deref for ReverseOrdOption<'_, T> {
type Target = Option<T>;
fn deref(&self) -> &Self::Target {
@ -13,15 +13,15 @@ impl<'a, T> Deref for ReverseOrdOption<'a, T> {
}
}
impl<'a, T: Ord> Eq for ReverseOrdOption<'a, T> {}
impl<T: Ord> Eq for ReverseOrdOption<'_, T> {}
impl<'a, T: Ord> PartialOrd<Self> for ReverseOrdOption<'a, T> {
impl<T: Ord> PartialOrd<Self> for ReverseOrdOption<'_, T> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl<'a, T: Ord> Ord for ReverseOrdOption<'a, T> {
impl<T: Ord> Ord for ReverseOrdOption<'_, T> {
fn cmp(&self, other: &Self) -> Ordering {
match (self.as_ref(), other.as_ref()) {
(None, None) => Ordering::Equal,