From 78be428e7ddf9f3acb5369f43493632fd05168d9 Mon Sep 17 00:00:00 2001 From: Ralf Zerres Date: Fri, 21 May 2021 12:46:33 +0200 Subject: [PATCH] Flatten create structure Signed-off-by: Ralf Zerres --- .gitmodules | 7 +- Cargo.toml | 20 +- advotracker_client/.cargo/config | 6 + .../.env | 0 .../.env-bak | 0 .../Cargo.toml | 2 +- .../Node.toml | 0 .../POLLFNR_WOECHENTLICH.txt | 0 .../POLLFNR_WOECHENTLICH_full.txt | 0 .../POLLFNR_WOECHENTLICH_test.txt | 0 .../RA-Hiedemann_DirectCall.txt | 0 .../README.md | 0 .../advotracker.conf | 0 .../assets/advotracker/advotracker_de_DE.ron | 0 .../assets/advotracker/default_dark.ron | 0 .../assets/advotracker/fluent_dark.ron | 0 .../assets/advotracker/fluent_light.ron | 0 .../assets/advotracker/hiedemann_logo.png | Bin .../assets/advotracker/networkx_logo.png | Bin .../assets/fonts/CynthoPro-Regular.otf | Bin .../assets/icons/advotracker/20x20/back.png | Bin .../assets/icons/advotracker/20x20/drawer.png | Bin .../assets/icons/advotracker/20x20/menu.png | Bin .../assets/icons/advotracker/20x20@2/back.png | Bin .../icons/advotracker/20x20@2/drawer.png | Bin .../assets/icons/advotracker/20x20@2/menu.png | Bin .../assets/icons/advotracker/20x20@3/back.png | Bin .../icons/advotracker/20x20@3/drawer.png | Bin .../assets/icons/advotracker/20x20@3/menu.png | Bin .../assets/icons/advotracker/20x20@4/back.png | Bin .../icons/advotracker/20x20@4/drawer.png | Bin .../assets/icons/advotracker/20x20@4/menu.png | Bin .../icons/advotracker/Hiedemann_Logo.svg | 0 .../assets/icons/advotracker/advotracker.ico | Bin .../assets/icons/advotracker/index.theme | 0 .../assets/images/Hotline.svg | 0 .../assets/images/advotracker.jpg | Bin .../assets/images/arrow.png | Bin .../assets/images/arrow@2x.png | Bin .../assets/images/arrow@3x.png | Bin .../assets/images/arrow@4x.png | Bin .../assets/images/arrows.png | Bin .../assets/images/arrows@2x.png | Bin .../assets/images/arrows@3x.png | Bin .../assets/images/arrows@4x.png | Bin .../assets/images/background.jpg | Bin .../assets/images/customer_background.jpg | Bin .../assets/images/customer_logo.jpg | Bin .../assets/images/customer_logo.png | 0 .../assets/images/hiedemann_logo.png | Bin .../assets/images/networkx_logo.jpg | Bin .../assets/images/networkx_logo.png | Bin .../assets/images/nobody.png | Bin .../assets/images/orbtk-space.png | Bin .../assets/images/orbtk_logo.png | Bin .../assets/images/rust_logo.png | Bin .../build.rs | 0 advotracker_client/build.rs-windres | 24 ++ advotracker_client/build.rs-winres | 52 +++ advotracker_client/config | 5 + .../data/POLLFNR_TEST.txt | 0 .../data/POLLFNR_WOECHENTLICH.txt | 0 .../data/bench.txt | 0 .../examples/.env | 0 .../examples/advowidgets.rs | 0 .../examples/cheet_sheet.rs | 0 .../examples/combobox-test.rs | 0 .../examples/csv-test/.env | 0 .../examples/csv-test/data/POLLFNR_MINI.txt | 0 .../examples/csv-test/data/POLLFNR_TEST.txt | 0 .../csv-test/data/POLLFNR_WOECHENTLICH.txt | 0 .../examples/csv-test/main.rs | 0 .../examples/csv-test/parse_args.rs | 0 .../examples/email_test.rs | 0 .../examples/increment_progress_bar.rs | 0 .../examples/messages_test/data/constants.rs | 0 .../examples/messages_test/data/mod.rs | 0 .../examples/messages_test/main.rs | 0 .../examples/messages_test/main_view.rs | 0 .../examples/messages_test/mod.rs | 0 .../examples/messages_test/receiver/mod.rs | 0 .../messages_test/receiver/receiver_state.rs | 0 .../messages_test/receiver/receiver_view.rs | 0 .../examples/messages_test/sender/mod.rs | 0 .../messages_test/sender/sender_state.rs | 0 .../messages_test/sender/sender_view.rs | 0 .../examples/my_progress_bar.rs | 0 .../examples/pager_test.rs | 0 .../examples/pdf_check_rs.example | 0 .../examples/ron_decode_test.rs | 0 .../examples/ron_encode_test.rs | 0 .../examples/ron_test.rs | 0 .../examples/sdl2_demo.rs | 0 .../examples/size_test.rs | 0 advotracker_client/examples/windows_test.rs | 27 ++ .../resources.rc | 0 .../src/bin/policycheck.rs | 0 .../src/bin/resources | 0 .../src/data/constants.rs | 0 .../src/data/mod.rs | 0 .../src/data/structures.rs | 0 .../src/i18n/localization.ini | 0 .../src/lib.rs | 0 .../src/main.rs | 0 .../src/parse_args.rs | 0 .../src/services/exports/#send_ticketdata.rs# | 127 +++++++ .../src/services/exports/allianzdirectcall.rs | 0 .../src/services/exports/mod.rs | 0 .../src/services/exports/send_ticketdata.rs | 0 .../src/services/imports/allianzdirectcall.rs | 0 .../src/services/imports/csv-test.rs | 0 .../src/services/imports/mod.rs | 0 .../src/services/mod.rs | 0 .../configuration/configuration_state.rs | 0 .../configuration/configuration_view.rs | 0 .../src/widgets/configuration/mod.rs | 0 .../src/widgets/global_state.rs | 0 .../localization/localization_state.rs | 0 .../widgets/localization/localization_view.rs | 0 .../src/widgets/localization/mod.rs | 0 .../src/widgets/login/loginform_view.rs | 0 .../src/widgets/login/loginlist_view.rs | 0 .../src/widgets/main_view.rs | 0 .../src/widgets/menu/menu_state.rs | 0 .../src/widgets/menu/menu_view.rs | 0 .../src/widgets/menu/mod.rs | 0 .../src/widgets/mod.rs | 0 .../src/widgets/policycheck/mod.rs | 0 .../widgets/policycheck/policycheck_state.rs | 0 .../widgets/policycheck/policycheck_view.rs | 0 .../src/widgets/policydata/mod.rs | 0 .../widgets/policydata/policydata_state.rs | 0 .../src/widgets/policydata/policydata_view.rs | 0 .../src/widgets/policylist/mod.rs | 0 .../widgets/policylist/policylist_state.rs | 0 .../src/widgets/policylist/policylist_view.rs | 0 .../src/widgets/ticketdata/mod.rs | 0 .../widgets/ticketdata/ticketdata_state.rs | 0 .../src/widgets/ticketdata/ticketdata_view.rs | 0 .../static/fonts/MaterialIcons.ttf | Bin .../static/images/hiedemann_logo.png | Bin .../static/images/networkx_logo.png | Bin .../static/index.html | 0 .../advotracker/advotracker_de_DE.ron | 0 .../resources/advotracker/hiedemann_logo.png | Bin .../resources/advotracker/networkx_logo.png | Bin crates/advotrackerd/.env | 4 - crates/advotrackerd/.gitignore | 10 - crates/advotrackerd/Cargo.toml | 33 -- crates/advotrackerd/LICENSE-0BSD | 12 - crates/advotrackerd/LICENSE-MIT | 19 - crates/advotrackerd/LICENSE.spdx | 6 - crates/advotrackerd/README.md | 52 --- crates/advotrackerd/locales/main.json | 78 ----- crates/advotrackerd/src/cli.yml | 41 --- crates/advotrackerd/src/database.rs | 327 ------------------ crates/advotrackerd/src/lib.rs | 43 --- crates/advotrackerd/src/main.rs | 213 ------------ crates/advotrackerd/src/parse_args.rs | 143 -------- crates/advotrackerd/tests/integration_test.rs | 7 - crates/advotrackerdb/.env | 3 - crates/advotrackerdb/.gitignore | 4 - crates/advotrackerdb/Cargo.toml | 60 ---- crates/advotrackerdb/LICENSE-0BSD | 12 - crates/advotrackerdb/LICENSE-MIT | 19 - crates/advotrackerdb/LICENSE.spdx | 6 - crates/advotrackerdb/README.md | 169 --------- crates/advotrackerdb/advotracker_build.rs | 6 - crates/advotrackerdb/diesel.toml | 8 - .../2020-06-28-140423_advotracker/down.sql | 17 - .../2020-06-28-140423_advotracker/up.sql | 94 ----- crates/advotrackerdb/src/bin/get-harms.rs | 24 -- crates/advotrackerdb/src/bin/get-roles.rs | 90 ----- crates/advotrackerdb/src/bin/get-users.rs | 62 ---- crates/advotrackerdb/src/bin/new-harm.rs | 73 ---- crates/advotrackerdb/src/bin/new-role.rs | 80 ----- crates/advotrackerdb/src/bin/new-user.rs | 181 ---------- crates/advotrackerdb/src/bin/search_ldap.rs | 33 -- .../src/functions/db_connection.rs | 42 --- crates/advotrackerdb/src/functions/harms.rs | 196 ----------- crates/advotrackerdb/src/functions/mod.rs | 25 -- crates/advotrackerdb/src/functions/roles.rs | 105 ------ crates/advotrackerdb/src/functions/tests.rs | 192 ---------- .../advotrackerdb/src/functions/user_roles.rs | 79 ----- crates/advotrackerdb/src/functions/users.rs | 189 ---------- crates/advotrackerdb/src/functions/wip.rs | 139 -------- crates/advotrackerdb/src/lib.rs | 31 -- crates/advotrackerdb/src/missing_docs.patch | 8 - crates/advotrackerdb/src/models/claims.rs | 32 -- crates/advotrackerdb/src/models/harms.rs | 60 ---- crates/advotrackerdb/src/models/insert.rs | 15 - crates/advotrackerdb/src/models/mod.rs | 22 -- crates/advotrackerdb/src/models/roles.rs | 47 --- crates/advotrackerdb/src/models/traits/mod.rs | 10 - .../advotrackerdb/src/models/traits/trait.rs | 192 ---------- crates/advotrackerdb/src/models/user_roles.rs | 28 -- crates/advotrackerdb/src/models/users.rs | 98 ------ crates/advotrackerdb/src/schema.rs | 74 ---- 198 files changed, 257 insertions(+), 3526 deletions(-) create mode 100644 advotracker_client/.cargo/config rename {crates/advotracker_client => advotracker_client}/.env (100%) rename {crates/advotracker_client => advotracker_client}/.env-bak (100%) rename {crates/advotracker_client => advotracker_client}/Cargo.toml (97%) rename {crates/advotracker_client => advotracker_client}/Node.toml (100%) rename {crates/advotracker_client => advotracker_client}/POLLFNR_WOECHENTLICH.txt (100%) rename {crates/advotracker_client => advotracker_client}/POLLFNR_WOECHENTLICH_full.txt (100%) rename {crates/advotracker_client => advotracker_client}/POLLFNR_WOECHENTLICH_test.txt (100%) rename {crates/advotracker_client => advotracker_client}/RA-Hiedemann_DirectCall.txt (100%) rename {crates/advotracker_client => advotracker_client}/README.md (100%) rename {crates/advotracker_client => advotracker_client}/advotracker.conf (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/advotracker_de_DE.ron (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/default_dark.ron (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/fluent_dark.ron (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/fluent_light.ron (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/hiedemann_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/advotracker/networkx_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/fonts/CynthoPro-Regular.otf (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20/back.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20/drawer.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20/menu.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@2/back.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@2/drawer.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@2/menu.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@3/back.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@3/drawer.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@3/menu.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@4/back.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@4/drawer.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/20x20@4/menu.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/Hiedemann_Logo.svg (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/advotracker.ico (100%) rename {crates/advotracker_client => advotracker_client}/assets/icons/advotracker/index.theme (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/Hotline.svg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/advotracker.jpg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrow.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrow@2x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrow@3x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrow@4x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrows.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrows@2x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrows@3x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/arrows@4x.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/background.jpg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/customer_background.jpg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/customer_logo.jpg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/customer_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/hiedemann_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/networkx_logo.jpg (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/networkx_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/nobody.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/orbtk-space.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/orbtk_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/assets/images/rust_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/build.rs (100%) create mode 100644 advotracker_client/build.rs-windres create mode 100644 advotracker_client/build.rs-winres create mode 100644 advotracker_client/config rename {crates/advotracker_client => advotracker_client}/data/POLLFNR_TEST.txt (100%) rename {crates/advotracker_client => advotracker_client}/data/POLLFNR_WOECHENTLICH.txt (100%) rename {crates/advotracker_client => advotracker_client}/data/bench.txt (100%) rename {crates/advotracker_client => advotracker_client}/examples/.env (100%) rename {crates/advotracker_client => advotracker_client}/examples/advowidgets.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/cheet_sheet.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/combobox-test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/.env (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/data/POLLFNR_MINI.txt (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/data/POLLFNR_TEST.txt (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/data/POLLFNR_WOECHENTLICH.txt (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/main.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/csv-test/parse_args.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/email_test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/increment_progress_bar.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/data/constants.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/data/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/main.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/main_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/receiver/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/receiver/receiver_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/receiver/receiver_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/sender/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/sender/sender_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/messages_test/sender/sender_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/my_progress_bar.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/pager_test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/pdf_check_rs.example (100%) rename {crates/advotracker_client => advotracker_client}/examples/ron_decode_test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/ron_encode_test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/ron_test.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/sdl2_demo.rs (100%) rename {crates/advotracker_client => advotracker_client}/examples/size_test.rs (100%) create mode 100644 advotracker_client/examples/windows_test.rs rename {crates/advotracker_client => advotracker_client}/resources.rc (100%) rename {crates/advotracker_client => advotracker_client}/src/bin/policycheck.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/bin/resources (100%) rename {crates/advotracker_client => advotracker_client}/src/data/constants.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/data/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/data/structures.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/i18n/localization.ini (100%) rename {crates/advotracker_client => advotracker_client}/src/lib.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/main.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/parse_args.rs (100%) create mode 100644 advotracker_client/src/services/exports/#send_ticketdata.rs# rename {crates/advotracker_client => advotracker_client}/src/services/exports/allianzdirectcall.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/exports/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/exports/send_ticketdata.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/imports/allianzdirectcall.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/imports/csv-test.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/imports/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/services/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/configuration/configuration_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/configuration/configuration_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/configuration/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/global_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/localization/localization_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/localization/localization_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/localization/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/login/loginform_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/login/loginlist_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/main_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/menu/menu_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/menu/menu_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/menu/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policycheck/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policycheck/policycheck_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policycheck/policycheck_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policydata/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policydata/policydata_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policydata/policydata_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policylist/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policylist/policylist_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/policylist/policylist_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/ticketdata/mod.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/ticketdata/ticketdata_state.rs (100%) rename {crates/advotracker_client => advotracker_client}/src/widgets/ticketdata/ticketdata_view.rs (100%) rename {crates/advotracker_client => advotracker_client}/static/fonts/MaterialIcons.ttf (100%) rename {crates/advotracker_client => advotracker_client}/static/images/hiedemann_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/static/images/networkx_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/static/index.html (100%) rename {crates/advotracker_client => advotracker_client}/static/resources/advotracker/advotracker_de_DE.ron (100%) rename {crates/advotracker_client => advotracker_client}/static/resources/advotracker/hiedemann_logo.png (100%) rename {crates/advotracker_client => advotracker_client}/static/resources/advotracker/networkx_logo.png (100%) delete mode 100644 crates/advotrackerd/.env delete mode 100644 crates/advotrackerd/.gitignore delete mode 100644 crates/advotrackerd/Cargo.toml delete mode 100644 crates/advotrackerd/LICENSE-0BSD delete mode 100644 crates/advotrackerd/LICENSE-MIT delete mode 100644 crates/advotrackerd/LICENSE.spdx delete mode 100755 crates/advotrackerd/README.md delete mode 100644 crates/advotrackerd/locales/main.json delete mode 100644 crates/advotrackerd/src/cli.yml delete mode 100644 crates/advotrackerd/src/database.rs delete mode 100644 crates/advotrackerd/src/lib.rs delete mode 100644 crates/advotrackerd/src/main.rs delete mode 100644 crates/advotrackerd/src/parse_args.rs delete mode 100644 crates/advotrackerd/tests/integration_test.rs delete mode 100644 crates/advotrackerdb/.env delete mode 100644 crates/advotrackerdb/.gitignore delete mode 100644 crates/advotrackerdb/Cargo.toml delete mode 100644 crates/advotrackerdb/LICENSE-0BSD delete mode 100644 crates/advotrackerdb/LICENSE-MIT delete mode 100644 crates/advotrackerdb/LICENSE.spdx delete mode 100644 crates/advotrackerdb/README.md delete mode 100644 crates/advotrackerdb/advotracker_build.rs delete mode 100644 crates/advotrackerdb/diesel.toml delete mode 100644 crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/down.sql delete mode 100644 crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/up.sql delete mode 100644 crates/advotrackerdb/src/bin/get-harms.rs delete mode 100644 crates/advotrackerdb/src/bin/get-roles.rs delete mode 100644 crates/advotrackerdb/src/bin/get-users.rs delete mode 100644 crates/advotrackerdb/src/bin/new-harm.rs delete mode 100644 crates/advotrackerdb/src/bin/new-role.rs delete mode 100644 crates/advotrackerdb/src/bin/new-user.rs delete mode 100644 crates/advotrackerdb/src/bin/search_ldap.rs delete mode 100644 crates/advotrackerdb/src/functions/db_connection.rs delete mode 100644 crates/advotrackerdb/src/functions/harms.rs delete mode 100644 crates/advotrackerdb/src/functions/mod.rs delete mode 100644 crates/advotrackerdb/src/functions/roles.rs delete mode 100644 crates/advotrackerdb/src/functions/tests.rs delete mode 100644 crates/advotrackerdb/src/functions/user_roles.rs delete mode 100644 crates/advotrackerdb/src/functions/users.rs delete mode 100644 crates/advotrackerdb/src/functions/wip.rs delete mode 100644 crates/advotrackerdb/src/lib.rs delete mode 100644 crates/advotrackerdb/src/missing_docs.patch delete mode 100644 crates/advotrackerdb/src/models/claims.rs delete mode 100644 crates/advotrackerdb/src/models/harms.rs delete mode 100644 crates/advotrackerdb/src/models/insert.rs delete mode 100644 crates/advotrackerdb/src/models/mod.rs delete mode 100644 crates/advotrackerdb/src/models/roles.rs delete mode 100644 crates/advotrackerdb/src/models/traits/mod.rs delete mode 100644 crates/advotrackerdb/src/models/traits/trait.rs delete mode 100644 crates/advotrackerdb/src/models/user_roles.rs delete mode 100644 crates/advotrackerdb/src/models/users.rs delete mode 100644 crates/advotrackerdb/src/schema.rs diff --git a/.gitmodules b/.gitmodules index 3a9e001..c1043a5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,9 @@ [submodule "advotrackerdb"] - path = crates/advotrackerdb + path = advotrackerdb url = https://gitea.networkx.de:50443/rzerres/advotrackerdb [submodule "advotrackerd"] - path = crates/advotrackerd + path = advotrackerd url = https://gitea.networkx.de:50443/rzerres/advotrackerd +[submodule "advotracker_db"] + path = advotracker_db + url = https://gitea.networkx.de:50443/rzerres/advotracker_db diff --git a/Cargo.toml b/Cargo.toml index 7176aac..1f7359c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "advotracker" -version = "0.1.0" +version = "0.1.0-alpha1" authors = ["Ralf Zerres "] description = "Supports lawyers to capture relevant data encountered during an online legal advice\n" repository = "https://gitea.networkx.de:50443/rzerres/advotracker" @@ -14,20 +14,20 @@ keywords = [ ] edition = "2018" publish = false -#default-run = "crates/advotracker_client" +#default-run = "advotracker_client" [dependencies] -advotrackerdb = { version = "0.1.0-alpha1", path = "crates/advotrackerdb" } -advotrackerd = { version = "0.1.0-alpha1", path = "crates/advotrackerd", default-features = false } -advotracker_client = { version = "0.1.5-alpha2", path = "crates/advotracker_client", default-features = false } +advotracker_db = { version = "0.1.0-alpha1", path = "advotracker_db" } +advotrackerd = { version = "0.1.0-alpha1", path = "advotrackerd", default-features = false } +advotracker_client = { version = "0.1.5-alpha2", path = "advotracker_client", default-features = false } [features] default = ["sqlite"] # enable optional db backends sqlite = [] -#sqlite = ["advotrackerdb_sqlite"] -#postgresql = ["advotrackerdb_pstgresql"] +#sqlite = ["advotracker_db_sqlite"] +#postgresql = ["advotracker_db_pstgresql"] [profile.dev] #opt-level = 0 @@ -63,7 +63,7 @@ overflow-checks = true [workspace] members = [ - "crates/advotrackerd", - "crates/advotrackerdb", - "crates/advotracker_client", + "advotrackerd", + "advotracker_db", + "advotracker_client", ] diff --git a/advotracker_client/.cargo/config b/advotracker_client/.cargo/config new file mode 100644 index 0000000..9d28146 --- /dev/null +++ b/advotracker_client/.cargo/config @@ -0,0 +1,6 @@ +#[target.x86_64-pc-windows-msvc] +#linker = "lld-link" +#linker = "/usr/local/msvc-wine-rust/linker-scripts/linkx64.sh" + +#[target.i686-pc-windows-msvc] +#linker = "/usr/local/msvc-wine-rust/linker-scripts/linkx32.sh" diff --git a/crates/advotracker_client/.env b/advotracker_client/.env similarity index 100% rename from crates/advotracker_client/.env rename to advotracker_client/.env diff --git a/crates/advotracker_client/.env-bak b/advotracker_client/.env-bak similarity index 100% rename from crates/advotracker_client/.env-bak rename to advotracker_client/.env-bak diff --git a/crates/advotracker_client/Cargo.toml b/advotracker_client/Cargo.toml similarity index 97% rename from crates/advotracker_client/Cargo.toml rename to advotracker_client/Cargo.toml index 5827220..9763522 100644 --- a/crates/advotracker_client/Cargo.toml +++ b/advotracker_client/Cargo.toml @@ -40,7 +40,7 @@ viperus = { git = "https://github.com/maurocordioli/viperus", features = ["cach [build-dependencies] winres = { version = "0.1.11" } #twine = { version = "0.3.8" } -twine = { path = "../../../twine", features = ["serde"] } +#twine = { path = "../../../twine", features = ["serde"] } [features] default = [] diff --git a/crates/advotracker_client/Node.toml b/advotracker_client/Node.toml similarity index 100% rename from crates/advotracker_client/Node.toml rename to advotracker_client/Node.toml diff --git a/crates/advotracker_client/POLLFNR_WOECHENTLICH.txt b/advotracker_client/POLLFNR_WOECHENTLICH.txt similarity index 100% rename from crates/advotracker_client/POLLFNR_WOECHENTLICH.txt rename to advotracker_client/POLLFNR_WOECHENTLICH.txt diff --git a/crates/advotracker_client/POLLFNR_WOECHENTLICH_full.txt b/advotracker_client/POLLFNR_WOECHENTLICH_full.txt similarity index 100% rename from crates/advotracker_client/POLLFNR_WOECHENTLICH_full.txt rename to advotracker_client/POLLFNR_WOECHENTLICH_full.txt diff --git a/crates/advotracker_client/POLLFNR_WOECHENTLICH_test.txt b/advotracker_client/POLLFNR_WOECHENTLICH_test.txt similarity index 100% rename from crates/advotracker_client/POLLFNR_WOECHENTLICH_test.txt rename to advotracker_client/POLLFNR_WOECHENTLICH_test.txt diff --git a/crates/advotracker_client/RA-Hiedemann_DirectCall.txt b/advotracker_client/RA-Hiedemann_DirectCall.txt similarity index 100% rename from crates/advotracker_client/RA-Hiedemann_DirectCall.txt rename to advotracker_client/RA-Hiedemann_DirectCall.txt diff --git a/crates/advotracker_client/README.md b/advotracker_client/README.md similarity index 100% rename from crates/advotracker_client/README.md rename to advotracker_client/README.md diff --git a/crates/advotracker_client/advotracker.conf b/advotracker_client/advotracker.conf similarity index 100% rename from crates/advotracker_client/advotracker.conf rename to advotracker_client/advotracker.conf diff --git a/crates/advotracker_client/assets/advotracker/advotracker_de_DE.ron b/advotracker_client/assets/advotracker/advotracker_de_DE.ron similarity index 100% rename from crates/advotracker_client/assets/advotracker/advotracker_de_DE.ron rename to advotracker_client/assets/advotracker/advotracker_de_DE.ron diff --git a/crates/advotracker_client/assets/advotracker/default_dark.ron b/advotracker_client/assets/advotracker/default_dark.ron similarity index 100% rename from crates/advotracker_client/assets/advotracker/default_dark.ron rename to advotracker_client/assets/advotracker/default_dark.ron diff --git a/crates/advotracker_client/assets/advotracker/fluent_dark.ron b/advotracker_client/assets/advotracker/fluent_dark.ron similarity index 100% rename from crates/advotracker_client/assets/advotracker/fluent_dark.ron rename to advotracker_client/assets/advotracker/fluent_dark.ron diff --git a/crates/advotracker_client/assets/advotracker/fluent_light.ron b/advotracker_client/assets/advotracker/fluent_light.ron similarity index 100% rename from crates/advotracker_client/assets/advotracker/fluent_light.ron rename to advotracker_client/assets/advotracker/fluent_light.ron diff --git a/crates/advotracker_client/assets/advotracker/hiedemann_logo.png b/advotracker_client/assets/advotracker/hiedemann_logo.png similarity index 100% rename from crates/advotracker_client/assets/advotracker/hiedemann_logo.png rename to advotracker_client/assets/advotracker/hiedemann_logo.png diff --git a/crates/advotracker_client/assets/advotracker/networkx_logo.png b/advotracker_client/assets/advotracker/networkx_logo.png similarity index 100% rename from crates/advotracker_client/assets/advotracker/networkx_logo.png rename to advotracker_client/assets/advotracker/networkx_logo.png diff --git a/crates/advotracker_client/assets/fonts/CynthoPro-Regular.otf b/advotracker_client/assets/fonts/CynthoPro-Regular.otf similarity index 100% rename from crates/advotracker_client/assets/fonts/CynthoPro-Regular.otf rename to advotracker_client/assets/fonts/CynthoPro-Regular.otf diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20/back.png b/advotracker_client/assets/icons/advotracker/20x20/back.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20/back.png rename to advotracker_client/assets/icons/advotracker/20x20/back.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20/drawer.png b/advotracker_client/assets/icons/advotracker/20x20/drawer.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20/drawer.png rename to advotracker_client/assets/icons/advotracker/20x20/drawer.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20/menu.png b/advotracker_client/assets/icons/advotracker/20x20/menu.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20/menu.png rename to advotracker_client/assets/icons/advotracker/20x20/menu.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@2/back.png b/advotracker_client/assets/icons/advotracker/20x20@2/back.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@2/back.png rename to advotracker_client/assets/icons/advotracker/20x20@2/back.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@2/drawer.png b/advotracker_client/assets/icons/advotracker/20x20@2/drawer.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@2/drawer.png rename to advotracker_client/assets/icons/advotracker/20x20@2/drawer.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@2/menu.png b/advotracker_client/assets/icons/advotracker/20x20@2/menu.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@2/menu.png rename to advotracker_client/assets/icons/advotracker/20x20@2/menu.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@3/back.png b/advotracker_client/assets/icons/advotracker/20x20@3/back.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@3/back.png rename to advotracker_client/assets/icons/advotracker/20x20@3/back.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@3/drawer.png b/advotracker_client/assets/icons/advotracker/20x20@3/drawer.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@3/drawer.png rename to advotracker_client/assets/icons/advotracker/20x20@3/drawer.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@3/menu.png b/advotracker_client/assets/icons/advotracker/20x20@3/menu.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@3/menu.png rename to advotracker_client/assets/icons/advotracker/20x20@3/menu.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@4/back.png b/advotracker_client/assets/icons/advotracker/20x20@4/back.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@4/back.png rename to advotracker_client/assets/icons/advotracker/20x20@4/back.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@4/drawer.png b/advotracker_client/assets/icons/advotracker/20x20@4/drawer.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@4/drawer.png rename to advotracker_client/assets/icons/advotracker/20x20@4/drawer.png diff --git a/crates/advotracker_client/assets/icons/advotracker/20x20@4/menu.png b/advotracker_client/assets/icons/advotracker/20x20@4/menu.png similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/20x20@4/menu.png rename to advotracker_client/assets/icons/advotracker/20x20@4/menu.png diff --git a/crates/advotracker_client/assets/icons/advotracker/Hiedemann_Logo.svg b/advotracker_client/assets/icons/advotracker/Hiedemann_Logo.svg similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/Hiedemann_Logo.svg rename to advotracker_client/assets/icons/advotracker/Hiedemann_Logo.svg diff --git a/crates/advotracker_client/assets/icons/advotracker/advotracker.ico b/advotracker_client/assets/icons/advotracker/advotracker.ico similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/advotracker.ico rename to advotracker_client/assets/icons/advotracker/advotracker.ico diff --git a/crates/advotracker_client/assets/icons/advotracker/index.theme b/advotracker_client/assets/icons/advotracker/index.theme similarity index 100% rename from crates/advotracker_client/assets/icons/advotracker/index.theme rename to advotracker_client/assets/icons/advotracker/index.theme diff --git a/crates/advotracker_client/assets/images/Hotline.svg b/advotracker_client/assets/images/Hotline.svg similarity index 100% rename from crates/advotracker_client/assets/images/Hotline.svg rename to advotracker_client/assets/images/Hotline.svg diff --git a/crates/advotracker_client/assets/images/advotracker.jpg b/advotracker_client/assets/images/advotracker.jpg similarity index 100% rename from crates/advotracker_client/assets/images/advotracker.jpg rename to advotracker_client/assets/images/advotracker.jpg diff --git a/crates/advotracker_client/assets/images/arrow.png b/advotracker_client/assets/images/arrow.png similarity index 100% rename from crates/advotracker_client/assets/images/arrow.png rename to advotracker_client/assets/images/arrow.png diff --git a/crates/advotracker_client/assets/images/arrow@2x.png b/advotracker_client/assets/images/arrow@2x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrow@2x.png rename to advotracker_client/assets/images/arrow@2x.png diff --git a/crates/advotracker_client/assets/images/arrow@3x.png b/advotracker_client/assets/images/arrow@3x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrow@3x.png rename to advotracker_client/assets/images/arrow@3x.png diff --git a/crates/advotracker_client/assets/images/arrow@4x.png b/advotracker_client/assets/images/arrow@4x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrow@4x.png rename to advotracker_client/assets/images/arrow@4x.png diff --git a/crates/advotracker_client/assets/images/arrows.png b/advotracker_client/assets/images/arrows.png similarity index 100% rename from crates/advotracker_client/assets/images/arrows.png rename to advotracker_client/assets/images/arrows.png diff --git a/crates/advotracker_client/assets/images/arrows@2x.png b/advotracker_client/assets/images/arrows@2x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrows@2x.png rename to advotracker_client/assets/images/arrows@2x.png diff --git a/crates/advotracker_client/assets/images/arrows@3x.png b/advotracker_client/assets/images/arrows@3x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrows@3x.png rename to advotracker_client/assets/images/arrows@3x.png diff --git a/crates/advotracker_client/assets/images/arrows@4x.png b/advotracker_client/assets/images/arrows@4x.png similarity index 100% rename from crates/advotracker_client/assets/images/arrows@4x.png rename to advotracker_client/assets/images/arrows@4x.png diff --git a/crates/advotracker_client/assets/images/background.jpg b/advotracker_client/assets/images/background.jpg similarity index 100% rename from crates/advotracker_client/assets/images/background.jpg rename to advotracker_client/assets/images/background.jpg diff --git a/crates/advotracker_client/assets/images/customer_background.jpg b/advotracker_client/assets/images/customer_background.jpg similarity index 100% rename from crates/advotracker_client/assets/images/customer_background.jpg rename to advotracker_client/assets/images/customer_background.jpg diff --git a/crates/advotracker_client/assets/images/customer_logo.jpg b/advotracker_client/assets/images/customer_logo.jpg similarity index 100% rename from crates/advotracker_client/assets/images/customer_logo.jpg rename to advotracker_client/assets/images/customer_logo.jpg diff --git a/crates/advotracker_client/assets/images/customer_logo.png b/advotracker_client/assets/images/customer_logo.png similarity index 100% rename from crates/advotracker_client/assets/images/customer_logo.png rename to advotracker_client/assets/images/customer_logo.png diff --git a/crates/advotracker_client/assets/images/hiedemann_logo.png b/advotracker_client/assets/images/hiedemann_logo.png similarity index 100% rename from crates/advotracker_client/assets/images/hiedemann_logo.png rename to advotracker_client/assets/images/hiedemann_logo.png diff --git a/crates/advotracker_client/assets/images/networkx_logo.jpg b/advotracker_client/assets/images/networkx_logo.jpg similarity index 100% rename from crates/advotracker_client/assets/images/networkx_logo.jpg rename to advotracker_client/assets/images/networkx_logo.jpg diff --git a/crates/advotracker_client/assets/images/networkx_logo.png b/advotracker_client/assets/images/networkx_logo.png similarity index 100% rename from crates/advotracker_client/assets/images/networkx_logo.png rename to advotracker_client/assets/images/networkx_logo.png diff --git a/crates/advotracker_client/assets/images/nobody.png b/advotracker_client/assets/images/nobody.png similarity index 100% rename from crates/advotracker_client/assets/images/nobody.png rename to advotracker_client/assets/images/nobody.png diff --git a/crates/advotracker_client/assets/images/orbtk-space.png b/advotracker_client/assets/images/orbtk-space.png similarity index 100% rename from crates/advotracker_client/assets/images/orbtk-space.png rename to advotracker_client/assets/images/orbtk-space.png diff --git a/crates/advotracker_client/assets/images/orbtk_logo.png b/advotracker_client/assets/images/orbtk_logo.png similarity index 100% rename from crates/advotracker_client/assets/images/orbtk_logo.png rename to advotracker_client/assets/images/orbtk_logo.png diff --git a/crates/advotracker_client/assets/images/rust_logo.png b/advotracker_client/assets/images/rust_logo.png similarity index 100% rename from crates/advotracker_client/assets/images/rust_logo.png rename to advotracker_client/assets/images/rust_logo.png diff --git a/crates/advotracker_client/build.rs b/advotracker_client/build.rs similarity index 100% rename from crates/advotracker_client/build.rs rename to advotracker_client/build.rs diff --git a/advotracker_client/build.rs-windres b/advotracker_client/build.rs-windres new file mode 100644 index 0000000..f025d50 --- /dev/null +++ b/advotracker_client/build.rs-windres @@ -0,0 +1,24 @@ +/* + * advotracker - Hotline tackingtool for Advocats + * + * Copyright 2021 Ralf Zerres + * SPDX-License-Identifier: (0BSD or MIT) + */ + +use std::env; +use std::error::Error; +#[cfg(target_os = "windows")] +use windres::Build; + +fn main() -> Result<(), Box> { + if env::var("CARGO_CFG_TARGET_FAMILY")? == "windows" { + let mut res = Build::new(); + let target_env = std::env::var("CARGO_CFG_TARGET_ENV")?; + match target_env.as_str() { + "gnu" => res.set_icon("advotracker.rc"), + "msvc" => res.set_icon("advotracker.rc"), + _ => panic!("Unsupported env: {}", target_env), + }; + res.compile()? + } +} diff --git a/advotracker_client/build.rs-winres b/advotracker_client/build.rs-winres new file mode 100644 index 0000000..eeb7d10 --- /dev/null +++ b/advotracker_client/build.rs-winres @@ -0,0 +1,52 @@ +/* + * advotracker - Hotline tackingtool for Advocats + * + * Copyright 2021 Ralf Zerres + * SPDX-License-Identifier: (0BSD or MIT) + */ + +use std::env; +use std::error::Error; +use winres::{WindowsResource, VersionInfo}; + +fn add_icon_to_bin_when_building_for_win(icon_path: &str) -> Result<(), Box> { + if env::var("CARGO_CFG_TARGET_FAMILY")? == "windows" { + let mut res = WindowsResource::new(); + let target_env = std::env::var("CARGO_CFG_TARGET_ENV")?; + match target_env.as_str() { + "gnu" => res + .set_ar_path("x86_64-w64-mingw32-ar") + .set_windres_path("x86_64-w64-mingw32-windres") + .set_toolkit_path(".") + .set_icon(icon_path) + .set_version_info(VersionInfo::PRODUCTVERSION, 0x0000000100050003), + "msvc" => res.set_icon(icon_path), + _ => panic!("Unsupported env: {}", target_env), + }; + res.compile()?; + } + + Ok(()) +} + +fn main() -> Result<(), Box> { + add_icon_to_bin_when_building_for_win("./assets/icons/advotracker/advotracker.ico") +} + +// // only build for windows +// fn main() { +// if cfg!(target_os = "windows") { +// println!("You are building for windows!"); +// // only build the resource for release builds +// // as calling rc.exe might be slow +// //if std::env::var("PROFILE").unwrap() == "release" { ] +// let mut res = winres::WindowsResource::new(); +// res.set_icon("advotracker.ico") +// .set("InternalName", "ADVOTRACKER.EXE") +// // manually set version 0.1.5.2 +// .set_version_info(winres::VersionInfo::PRODUCTVERSION, 0x0000000100050003); +// res.compile().unwrap(); +// } else { +// println!("not windows, so no resource icon needed!"); +// } +// } diff --git a/advotracker_client/config b/advotracker_client/config new file mode 100644 index 0000000..b01efcb --- /dev/null +++ b/advotracker_client/config @@ -0,0 +1,5 @@ +[target.x86_64-pc-windows-msvc] +linker = "/path/to/msvc-wine-rust/linker-scripts/linkx64.sh" + +[target.i686-pc-windows-msvc] +linker = "/path/to/msvc-wine-rust/linker-scripts/linkx32.sh" diff --git a/crates/advotracker_client/data/POLLFNR_TEST.txt b/advotracker_client/data/POLLFNR_TEST.txt similarity index 100% rename from crates/advotracker_client/data/POLLFNR_TEST.txt rename to advotracker_client/data/POLLFNR_TEST.txt diff --git a/crates/advotracker_client/data/POLLFNR_WOECHENTLICH.txt b/advotracker_client/data/POLLFNR_WOECHENTLICH.txt similarity index 100% rename from crates/advotracker_client/data/POLLFNR_WOECHENTLICH.txt rename to advotracker_client/data/POLLFNR_WOECHENTLICH.txt diff --git a/crates/advotracker_client/data/bench.txt b/advotracker_client/data/bench.txt similarity index 100% rename from crates/advotracker_client/data/bench.txt rename to advotracker_client/data/bench.txt diff --git a/crates/advotracker_client/examples/.env b/advotracker_client/examples/.env similarity index 100% rename from crates/advotracker_client/examples/.env rename to advotracker_client/examples/.env diff --git a/crates/advotracker_client/examples/advowidgets.rs b/advotracker_client/examples/advowidgets.rs similarity index 100% rename from crates/advotracker_client/examples/advowidgets.rs rename to advotracker_client/examples/advowidgets.rs diff --git a/crates/advotracker_client/examples/cheet_sheet.rs b/advotracker_client/examples/cheet_sheet.rs similarity index 100% rename from crates/advotracker_client/examples/cheet_sheet.rs rename to advotracker_client/examples/cheet_sheet.rs diff --git a/crates/advotracker_client/examples/combobox-test.rs b/advotracker_client/examples/combobox-test.rs similarity index 100% rename from crates/advotracker_client/examples/combobox-test.rs rename to advotracker_client/examples/combobox-test.rs diff --git a/crates/advotracker_client/examples/csv-test/.env b/advotracker_client/examples/csv-test/.env similarity index 100% rename from crates/advotracker_client/examples/csv-test/.env rename to advotracker_client/examples/csv-test/.env diff --git a/crates/advotracker_client/examples/csv-test/data/POLLFNR_MINI.txt b/advotracker_client/examples/csv-test/data/POLLFNR_MINI.txt similarity index 100% rename from crates/advotracker_client/examples/csv-test/data/POLLFNR_MINI.txt rename to advotracker_client/examples/csv-test/data/POLLFNR_MINI.txt diff --git a/crates/advotracker_client/examples/csv-test/data/POLLFNR_TEST.txt b/advotracker_client/examples/csv-test/data/POLLFNR_TEST.txt similarity index 100% rename from crates/advotracker_client/examples/csv-test/data/POLLFNR_TEST.txt rename to advotracker_client/examples/csv-test/data/POLLFNR_TEST.txt diff --git a/crates/advotracker_client/examples/csv-test/data/POLLFNR_WOECHENTLICH.txt b/advotracker_client/examples/csv-test/data/POLLFNR_WOECHENTLICH.txt similarity index 100% rename from crates/advotracker_client/examples/csv-test/data/POLLFNR_WOECHENTLICH.txt rename to advotracker_client/examples/csv-test/data/POLLFNR_WOECHENTLICH.txt diff --git a/crates/advotracker_client/examples/csv-test/main.rs b/advotracker_client/examples/csv-test/main.rs similarity index 100% rename from crates/advotracker_client/examples/csv-test/main.rs rename to advotracker_client/examples/csv-test/main.rs diff --git a/crates/advotracker_client/examples/csv-test/parse_args.rs b/advotracker_client/examples/csv-test/parse_args.rs similarity index 100% rename from crates/advotracker_client/examples/csv-test/parse_args.rs rename to advotracker_client/examples/csv-test/parse_args.rs diff --git a/crates/advotracker_client/examples/email_test.rs b/advotracker_client/examples/email_test.rs similarity index 100% rename from crates/advotracker_client/examples/email_test.rs rename to advotracker_client/examples/email_test.rs diff --git a/crates/advotracker_client/examples/increment_progress_bar.rs b/advotracker_client/examples/increment_progress_bar.rs similarity index 100% rename from crates/advotracker_client/examples/increment_progress_bar.rs rename to advotracker_client/examples/increment_progress_bar.rs diff --git a/crates/advotracker_client/examples/messages_test/data/constants.rs b/advotracker_client/examples/messages_test/data/constants.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/data/constants.rs rename to advotracker_client/examples/messages_test/data/constants.rs diff --git a/crates/advotracker_client/examples/messages_test/data/mod.rs b/advotracker_client/examples/messages_test/data/mod.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/data/mod.rs rename to advotracker_client/examples/messages_test/data/mod.rs diff --git a/crates/advotracker_client/examples/messages_test/main.rs b/advotracker_client/examples/messages_test/main.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/main.rs rename to advotracker_client/examples/messages_test/main.rs diff --git a/crates/advotracker_client/examples/messages_test/main_view.rs b/advotracker_client/examples/messages_test/main_view.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/main_view.rs rename to advotracker_client/examples/messages_test/main_view.rs diff --git a/crates/advotracker_client/examples/messages_test/mod.rs b/advotracker_client/examples/messages_test/mod.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/mod.rs rename to advotracker_client/examples/messages_test/mod.rs diff --git a/crates/advotracker_client/examples/messages_test/receiver/mod.rs b/advotracker_client/examples/messages_test/receiver/mod.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/receiver/mod.rs rename to advotracker_client/examples/messages_test/receiver/mod.rs diff --git a/crates/advotracker_client/examples/messages_test/receiver/receiver_state.rs b/advotracker_client/examples/messages_test/receiver/receiver_state.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/receiver/receiver_state.rs rename to advotracker_client/examples/messages_test/receiver/receiver_state.rs diff --git a/crates/advotracker_client/examples/messages_test/receiver/receiver_view.rs b/advotracker_client/examples/messages_test/receiver/receiver_view.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/receiver/receiver_view.rs rename to advotracker_client/examples/messages_test/receiver/receiver_view.rs diff --git a/crates/advotracker_client/examples/messages_test/sender/mod.rs b/advotracker_client/examples/messages_test/sender/mod.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/sender/mod.rs rename to advotracker_client/examples/messages_test/sender/mod.rs diff --git a/crates/advotracker_client/examples/messages_test/sender/sender_state.rs b/advotracker_client/examples/messages_test/sender/sender_state.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/sender/sender_state.rs rename to advotracker_client/examples/messages_test/sender/sender_state.rs diff --git a/crates/advotracker_client/examples/messages_test/sender/sender_view.rs b/advotracker_client/examples/messages_test/sender/sender_view.rs similarity index 100% rename from crates/advotracker_client/examples/messages_test/sender/sender_view.rs rename to advotracker_client/examples/messages_test/sender/sender_view.rs diff --git a/crates/advotracker_client/examples/my_progress_bar.rs b/advotracker_client/examples/my_progress_bar.rs similarity index 100% rename from crates/advotracker_client/examples/my_progress_bar.rs rename to advotracker_client/examples/my_progress_bar.rs diff --git a/crates/advotracker_client/examples/pager_test.rs b/advotracker_client/examples/pager_test.rs similarity index 100% rename from crates/advotracker_client/examples/pager_test.rs rename to advotracker_client/examples/pager_test.rs diff --git a/crates/advotracker_client/examples/pdf_check_rs.example b/advotracker_client/examples/pdf_check_rs.example similarity index 100% rename from crates/advotracker_client/examples/pdf_check_rs.example rename to advotracker_client/examples/pdf_check_rs.example diff --git a/crates/advotracker_client/examples/ron_decode_test.rs b/advotracker_client/examples/ron_decode_test.rs similarity index 100% rename from crates/advotracker_client/examples/ron_decode_test.rs rename to advotracker_client/examples/ron_decode_test.rs diff --git a/crates/advotracker_client/examples/ron_encode_test.rs b/advotracker_client/examples/ron_encode_test.rs similarity index 100% rename from crates/advotracker_client/examples/ron_encode_test.rs rename to advotracker_client/examples/ron_encode_test.rs diff --git a/crates/advotracker_client/examples/ron_test.rs b/advotracker_client/examples/ron_test.rs similarity index 100% rename from crates/advotracker_client/examples/ron_test.rs rename to advotracker_client/examples/ron_test.rs diff --git a/crates/advotracker_client/examples/sdl2_demo.rs b/advotracker_client/examples/sdl2_demo.rs similarity index 100% rename from crates/advotracker_client/examples/sdl2_demo.rs rename to advotracker_client/examples/sdl2_demo.rs diff --git a/crates/advotracker_client/examples/size_test.rs b/advotracker_client/examples/size_test.rs similarity index 100% rename from crates/advotracker_client/examples/size_test.rs rename to advotracker_client/examples/size_test.rs diff --git a/advotracker_client/examples/windows_test.rs b/advotracker_client/examples/windows_test.rs new file mode 100644 index 0000000..59e9107 --- /dev/null +++ b/advotracker_client/examples/windows_test.rs @@ -0,0 +1,27 @@ +#[cfg(windows)] extern crate winapi; +use std::io::Error; + +#[cfg(windows)] +fn print_message(msg: &str) -> Result { + use std::ffi::OsStr; + use std::iter::once; + use std::os::windows::ffi::OsStrExt; + use std::ptr::null_mut; + use winapi::um::winuser::{MB_OK, MessageBoxW}; + let wide: Vec = OsStr::new(msg).encode_wide().chain(once(0)).collect(); + let ret = unsafe { + MessageBoxW(null_mut(), wide.as_ptr(), wide.as_ptr(), MB_OK) + }; + if ret == 0 { Err(Error::last_os_error()) } + else { Ok(ret) } +} + +#[cfg(not(windows))] +fn print_message(msg: &str) -> Result<(), Error> { + println!("{}", msg); + Ok(()) +} + +fn main() { + print_message("Hello, world!").unwrap(); +} diff --git a/crates/advotracker_client/resources.rc b/advotracker_client/resources.rc similarity index 100% rename from crates/advotracker_client/resources.rc rename to advotracker_client/resources.rc diff --git a/crates/advotracker_client/src/bin/policycheck.rs b/advotracker_client/src/bin/policycheck.rs similarity index 100% rename from crates/advotracker_client/src/bin/policycheck.rs rename to advotracker_client/src/bin/policycheck.rs diff --git a/crates/advotracker_client/src/bin/resources b/advotracker_client/src/bin/resources similarity index 100% rename from crates/advotracker_client/src/bin/resources rename to advotracker_client/src/bin/resources diff --git a/crates/advotracker_client/src/data/constants.rs b/advotracker_client/src/data/constants.rs similarity index 100% rename from crates/advotracker_client/src/data/constants.rs rename to advotracker_client/src/data/constants.rs diff --git a/crates/advotracker_client/src/data/mod.rs b/advotracker_client/src/data/mod.rs similarity index 100% rename from crates/advotracker_client/src/data/mod.rs rename to advotracker_client/src/data/mod.rs diff --git a/crates/advotracker_client/src/data/structures.rs b/advotracker_client/src/data/structures.rs similarity index 100% rename from crates/advotracker_client/src/data/structures.rs rename to advotracker_client/src/data/structures.rs diff --git a/crates/advotracker_client/src/i18n/localization.ini b/advotracker_client/src/i18n/localization.ini similarity index 100% rename from crates/advotracker_client/src/i18n/localization.ini rename to advotracker_client/src/i18n/localization.ini diff --git a/crates/advotracker_client/src/lib.rs b/advotracker_client/src/lib.rs similarity index 100% rename from crates/advotracker_client/src/lib.rs rename to advotracker_client/src/lib.rs diff --git a/crates/advotracker_client/src/main.rs b/advotracker_client/src/main.rs similarity index 100% rename from crates/advotracker_client/src/main.rs rename to advotracker_client/src/main.rs diff --git a/crates/advotracker_client/src/parse_args.rs b/advotracker_client/src/parse_args.rs similarity index 100% rename from crates/advotracker_client/src/parse_args.rs rename to advotracker_client/src/parse_args.rs diff --git a/advotracker_client/src/services/exports/#send_ticketdata.rs# b/advotracker_client/src/services/exports/#send_ticketdata.rs# new file mode 100644 index 0000000..a4217a9 --- /dev/null +++ b/advotracker_client/src/services/exports/#send_ticketdata.rs# @@ -0,0 +1,127 @@ +/* + * advotracker - Hotline tackingtool for Advocats + * + * Copyright 2021 Ralf Zerres + * SPDX-License-Identifier: (0BSD or MIT) + */ + +use lettre::{ + message::{header, MultiPart, SinglePart}, + Message, SmtpTransport, Transport, + transport::smtp::authentication::Credentials, +}; +use maud::html; +use std::error::Error; +//use std::process; +use tracing::{info, trace}; + +use crate::data::structures::Email; +use self::t; + +// include localization strings +include!(concat!(env!("OUT_DIR"), "/i18n.rs")); + +/// send ticket data via eMail +pub fn sendticketdata(email: &Email, language: &str) -> Result<(), Box> { + use self.t; + + let mut res = t!(sendticketdata_export_started => lang); + let mut state = t!(state_started => lang); + trace!(target: "sendticketdata", process = ?res, state = ?state); + + // The html we want to send. + // It uses https://crates.io/crates/maud + let html = html! { + head { + title { (email.subject) " (" (email.policy_code) ")" } + style type="text/css" { + "h2, h4 { font-family: Arial, Helvetica, sans-serif; }" + } + } + div style="display: flex; flex-direction: column; align-items: left;" { + // compose with variables and strings + h2 { (email.subject) " (" (email.policy_code) ")" } + p { "Vers.-Schein/Schadennummer: " (email.policy_code) } + p { "Versicherungsnehmer: " (email.policy_holder) } + p { "Selbstbehalt: " (email.deductible) } + p { "Rückrufnummer: " (email.callback_number) } + p { "Erreichbarkeit: " (email.callback_date) } + p { "Rechtsproblem: " (email.harm_type) } + p { "Rechtsrat: " (email.ivr_comment) } + } + }; + + let ascii_body = String::new() + + &"Vers.-Schein/Schadennummer".to_string() + &(email.policy_code) + &"\n" + + &"Versicherungsnehmer: ".to_string() + &(email.policy_holder) + &"\n" + + &"Selbstbehalt: ".to_string() + &(email.deductible) + &"\n" + + &"Rückrufnummer: ".to_string()+ &(email.callback_number) + &"\n" + + &"Erreichbarkeit: ".to_string() + &(email.callback_date) + &"\n" + + &"Rechtsproblem: ".to_string() + &(email.harm_type) + &"\n" + + &"Rechtsrat: ".to_string() + &(email.ivr_comment) + &"\n"; + + info!("email body: {:?}", ascii_body); + + let message = Message::builder() + .from((email.mail_from).parse().unwrap()) + .reply_to((email.mail_reply).parse().unwrap()) + .to((email.mail_to).parse().unwrap()) + .cc((email.mail_cc).parse().unwrap()) + // we do not use bcc yet + //.bcc((email.mail_bcc).parse().unwrap()) + .subject(String::new() + + &email.subject.to_string() + + &" (".to_string() + + &email.policy_code.to_string() + + &")".to_string() + ) + .multipart( + MultiPart::alternative() // This is composed of two parts. + .singlepart( + SinglePart::builder() + .header(header::ContentType( + "text/plain; charset=utf8".parse().unwrap(), + )) + .body(String::from(ascii_body)), + ) + .singlepart( + SinglePart::builder() + .header(header::ContentType( + "text/html; charset=utf8".parse().unwrap(), + )) + .body(html.into_string()), + ), + ) + .expect("failed to build email"); + + + info!("message: {:?}", message); + + // Create credential for remote authentication (username, password) + // WIP: get credentials from config file / cli + let credentials = Credentials::new("service@hiedemann.de".to_string(), "88service99$".to_string()); + + // standard smtp client connection + //let mailer = SmtpTransport::starttls_relay("hiedemannsbs.kanzlei.hiedemann.de") + + // Open a remote connection to relay server (port 2525) + // WIP: get relay address from config file / cli + //let relay = "hiedemannsbs.kanzlei.hiedemann.de" + let relay = "smtp.strato.de"; + + let mailer = SmtpTransport::relay(relay) + .unwrap() + .credentials(credentials) + .build(); + + trace!(target: "sendticketdata", email = ?email); + + // Send the email and catch the error if it isn't successfully + let _result = mailer.send(&message)?; + + state = t!(state_finished => lang); + res = t!(sendticketdata_export_finished => lang); + trace!(target: "sendticketdata", process = ?res, state = ?state); + + Ok(()) +} diff --git a/crates/advotracker_client/src/services/exports/allianzdirectcall.rs b/advotracker_client/src/services/exports/allianzdirectcall.rs similarity index 100% rename from crates/advotracker_client/src/services/exports/allianzdirectcall.rs rename to advotracker_client/src/services/exports/allianzdirectcall.rs diff --git a/crates/advotracker_client/src/services/exports/mod.rs b/advotracker_client/src/services/exports/mod.rs similarity index 100% rename from crates/advotracker_client/src/services/exports/mod.rs rename to advotracker_client/src/services/exports/mod.rs diff --git a/crates/advotracker_client/src/services/exports/send_ticketdata.rs b/advotracker_client/src/services/exports/send_ticketdata.rs similarity index 100% rename from crates/advotracker_client/src/services/exports/send_ticketdata.rs rename to advotracker_client/src/services/exports/send_ticketdata.rs diff --git a/crates/advotracker_client/src/services/imports/allianzdirectcall.rs b/advotracker_client/src/services/imports/allianzdirectcall.rs similarity index 100% rename from crates/advotracker_client/src/services/imports/allianzdirectcall.rs rename to advotracker_client/src/services/imports/allianzdirectcall.rs diff --git a/crates/advotracker_client/src/services/imports/csv-test.rs b/advotracker_client/src/services/imports/csv-test.rs similarity index 100% rename from crates/advotracker_client/src/services/imports/csv-test.rs rename to advotracker_client/src/services/imports/csv-test.rs diff --git a/crates/advotracker_client/src/services/imports/mod.rs b/advotracker_client/src/services/imports/mod.rs similarity index 100% rename from crates/advotracker_client/src/services/imports/mod.rs rename to advotracker_client/src/services/imports/mod.rs diff --git a/crates/advotracker_client/src/services/mod.rs b/advotracker_client/src/services/mod.rs similarity index 100% rename from crates/advotracker_client/src/services/mod.rs rename to advotracker_client/src/services/mod.rs diff --git a/crates/advotracker_client/src/widgets/configuration/configuration_state.rs b/advotracker_client/src/widgets/configuration/configuration_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/configuration/configuration_state.rs rename to advotracker_client/src/widgets/configuration/configuration_state.rs diff --git a/crates/advotracker_client/src/widgets/configuration/configuration_view.rs b/advotracker_client/src/widgets/configuration/configuration_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/configuration/configuration_view.rs rename to advotracker_client/src/widgets/configuration/configuration_view.rs diff --git a/crates/advotracker_client/src/widgets/configuration/mod.rs b/advotracker_client/src/widgets/configuration/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/configuration/mod.rs rename to advotracker_client/src/widgets/configuration/mod.rs diff --git a/crates/advotracker_client/src/widgets/global_state.rs b/advotracker_client/src/widgets/global_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/global_state.rs rename to advotracker_client/src/widgets/global_state.rs diff --git a/crates/advotracker_client/src/widgets/localization/localization_state.rs b/advotracker_client/src/widgets/localization/localization_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/localization/localization_state.rs rename to advotracker_client/src/widgets/localization/localization_state.rs diff --git a/crates/advotracker_client/src/widgets/localization/localization_view.rs b/advotracker_client/src/widgets/localization/localization_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/localization/localization_view.rs rename to advotracker_client/src/widgets/localization/localization_view.rs diff --git a/crates/advotracker_client/src/widgets/localization/mod.rs b/advotracker_client/src/widgets/localization/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/localization/mod.rs rename to advotracker_client/src/widgets/localization/mod.rs diff --git a/crates/advotracker_client/src/widgets/login/loginform_view.rs b/advotracker_client/src/widgets/login/loginform_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/login/loginform_view.rs rename to advotracker_client/src/widgets/login/loginform_view.rs diff --git a/crates/advotracker_client/src/widgets/login/loginlist_view.rs b/advotracker_client/src/widgets/login/loginlist_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/login/loginlist_view.rs rename to advotracker_client/src/widgets/login/loginlist_view.rs diff --git a/crates/advotracker_client/src/widgets/main_view.rs b/advotracker_client/src/widgets/main_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/main_view.rs rename to advotracker_client/src/widgets/main_view.rs diff --git a/crates/advotracker_client/src/widgets/menu/menu_state.rs b/advotracker_client/src/widgets/menu/menu_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/menu/menu_state.rs rename to advotracker_client/src/widgets/menu/menu_state.rs diff --git a/crates/advotracker_client/src/widgets/menu/menu_view.rs b/advotracker_client/src/widgets/menu/menu_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/menu/menu_view.rs rename to advotracker_client/src/widgets/menu/menu_view.rs diff --git a/crates/advotracker_client/src/widgets/menu/mod.rs b/advotracker_client/src/widgets/menu/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/menu/mod.rs rename to advotracker_client/src/widgets/menu/mod.rs diff --git a/crates/advotracker_client/src/widgets/mod.rs b/advotracker_client/src/widgets/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/mod.rs rename to advotracker_client/src/widgets/mod.rs diff --git a/crates/advotracker_client/src/widgets/policycheck/mod.rs b/advotracker_client/src/widgets/policycheck/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policycheck/mod.rs rename to advotracker_client/src/widgets/policycheck/mod.rs diff --git a/crates/advotracker_client/src/widgets/policycheck/policycheck_state.rs b/advotracker_client/src/widgets/policycheck/policycheck_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policycheck/policycheck_state.rs rename to advotracker_client/src/widgets/policycheck/policycheck_state.rs diff --git a/crates/advotracker_client/src/widgets/policycheck/policycheck_view.rs b/advotracker_client/src/widgets/policycheck/policycheck_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policycheck/policycheck_view.rs rename to advotracker_client/src/widgets/policycheck/policycheck_view.rs diff --git a/crates/advotracker_client/src/widgets/policydata/mod.rs b/advotracker_client/src/widgets/policydata/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policydata/mod.rs rename to advotracker_client/src/widgets/policydata/mod.rs diff --git a/crates/advotracker_client/src/widgets/policydata/policydata_state.rs b/advotracker_client/src/widgets/policydata/policydata_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policydata/policydata_state.rs rename to advotracker_client/src/widgets/policydata/policydata_state.rs diff --git a/crates/advotracker_client/src/widgets/policydata/policydata_view.rs b/advotracker_client/src/widgets/policydata/policydata_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policydata/policydata_view.rs rename to advotracker_client/src/widgets/policydata/policydata_view.rs diff --git a/crates/advotracker_client/src/widgets/policylist/mod.rs b/advotracker_client/src/widgets/policylist/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policylist/mod.rs rename to advotracker_client/src/widgets/policylist/mod.rs diff --git a/crates/advotracker_client/src/widgets/policylist/policylist_state.rs b/advotracker_client/src/widgets/policylist/policylist_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policylist/policylist_state.rs rename to advotracker_client/src/widgets/policylist/policylist_state.rs diff --git a/crates/advotracker_client/src/widgets/policylist/policylist_view.rs b/advotracker_client/src/widgets/policylist/policylist_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/policylist/policylist_view.rs rename to advotracker_client/src/widgets/policylist/policylist_view.rs diff --git a/crates/advotracker_client/src/widgets/ticketdata/mod.rs b/advotracker_client/src/widgets/ticketdata/mod.rs similarity index 100% rename from crates/advotracker_client/src/widgets/ticketdata/mod.rs rename to advotracker_client/src/widgets/ticketdata/mod.rs diff --git a/crates/advotracker_client/src/widgets/ticketdata/ticketdata_state.rs b/advotracker_client/src/widgets/ticketdata/ticketdata_state.rs similarity index 100% rename from crates/advotracker_client/src/widgets/ticketdata/ticketdata_state.rs rename to advotracker_client/src/widgets/ticketdata/ticketdata_state.rs diff --git a/crates/advotracker_client/src/widgets/ticketdata/ticketdata_view.rs b/advotracker_client/src/widgets/ticketdata/ticketdata_view.rs similarity index 100% rename from crates/advotracker_client/src/widgets/ticketdata/ticketdata_view.rs rename to advotracker_client/src/widgets/ticketdata/ticketdata_view.rs diff --git a/crates/advotracker_client/static/fonts/MaterialIcons.ttf b/advotracker_client/static/fonts/MaterialIcons.ttf similarity index 100% rename from crates/advotracker_client/static/fonts/MaterialIcons.ttf rename to advotracker_client/static/fonts/MaterialIcons.ttf diff --git a/crates/advotracker_client/static/images/hiedemann_logo.png b/advotracker_client/static/images/hiedemann_logo.png similarity index 100% rename from crates/advotracker_client/static/images/hiedemann_logo.png rename to advotracker_client/static/images/hiedemann_logo.png diff --git a/crates/advotracker_client/static/images/networkx_logo.png b/advotracker_client/static/images/networkx_logo.png similarity index 100% rename from crates/advotracker_client/static/images/networkx_logo.png rename to advotracker_client/static/images/networkx_logo.png diff --git a/crates/advotracker_client/static/index.html b/advotracker_client/static/index.html similarity index 100% rename from crates/advotracker_client/static/index.html rename to advotracker_client/static/index.html diff --git a/crates/advotracker_client/static/resources/advotracker/advotracker_de_DE.ron b/advotracker_client/static/resources/advotracker/advotracker_de_DE.ron similarity index 100% rename from crates/advotracker_client/static/resources/advotracker/advotracker_de_DE.ron rename to advotracker_client/static/resources/advotracker/advotracker_de_DE.ron diff --git a/crates/advotracker_client/static/resources/advotracker/hiedemann_logo.png b/advotracker_client/static/resources/advotracker/hiedemann_logo.png similarity index 100% rename from crates/advotracker_client/static/resources/advotracker/hiedemann_logo.png rename to advotracker_client/static/resources/advotracker/hiedemann_logo.png diff --git a/crates/advotracker_client/static/resources/advotracker/networkx_logo.png b/advotracker_client/static/resources/advotracker/networkx_logo.png similarity index 100% rename from crates/advotracker_client/static/resources/advotracker/networkx_logo.png rename to advotracker_client/static/resources/advotracker/networkx_logo.png diff --git a/crates/advotrackerd/.env b/crates/advotrackerd/.env deleted file mode 100644 index 60b6304..0000000 --- a/crates/advotrackerd/.env +++ /dev/null @@ -1,4 +0,0 @@ -TEST_LANG=en -RUST_LOG=advotracker=info -DATABASE_URL=./advotracker.sqlite3 -#DATABASE_URL=postgres://username:password@localhost/advotracker diff --git a/crates/advotrackerd/.gitignore b/crates/advotrackerd/.gitignore deleted file mode 100644 index e274948..0000000 --- a/crates/advotrackerd/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# This file should only ignore things that are generated during a build, -# generated by common IDEs, and optional files controlled by the user that -# affect the build (such as config.toml). -.#* -.DS_Store -**/*.rs.bk -Cargo.lock -**/*~ -/target/ -/config.toml diff --git a/crates/advotrackerd/Cargo.toml b/crates/advotrackerd/Cargo.toml deleted file mode 100644 index f4fb360..0000000 --- a/crates/advotrackerd/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -[package] -name = "advotrackerd" -version = "0.1.0-alpha1" -authors = ["Ralf Zerres "] -description = "Supports lawyers to capture relevant data encountered during an online legal advice\n" -repository = "https://gitea.networkx.de:50443/rzerres/advotrackerdb" -homepage = "https://gitea.networkx.de:50443/rzerres/advotrackerdb" -readme = "README.md" -license = "(0BSD OR MIT)" -keywords = ["backend", "database", "db"] -edition = "2018" - -[target.'cfg(windows)'.dependencies] -winapi = { version = "0.3", features = ["winuser"] } -#diesel = { version = "1.4", features = [ "msql", "postgres", "sqlite" ] } - -[dependencies] -advotrackerdb = { path = "../advotrackerdb" } - -clap = { version = "~2.33", features = [ "suggestions", "color" ] } -dotenv = { version = "~0.15.0" } -#env_logger = "~0.7.1" -envy = { version = "~0.4" } -locales = { version = "0.1" } -#log = { version = "~0.4.8" } -serde = { version = "~1.0", features = [ "derive" ] } -serde_json = { version = "~1.0" } -tracing = { version = "0.1" } -tracing-subscriber = { version = "0.2.0-alpha", features = ["tracing-log"] } -viperus = { git = "https://github.com/maurocordioli/viperus", features = ["cache", "watch", "fmt-clap", "fmt-env"] } - -#[replace] -#"foo:0.1.0" = { git = 'https://github.com/example/foo' } diff --git a/crates/advotrackerd/LICENSE-0BSD b/crates/advotrackerd/LICENSE-0BSD deleted file mode 100644 index ae1aa23..0000000 --- a/crates/advotrackerd/LICENSE-0BSD +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (C) 2019 by Ralf Zerres - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/crates/advotrackerd/LICENSE-MIT b/crates/advotrackerd/LICENSE-MIT deleted file mode 100644 index 107a485..0000000 --- a/crates/advotrackerd/LICENSE-MIT +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2019 Ralf Zerres - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/crates/advotrackerd/LICENSE.spdx b/crates/advotrackerd/LICENSE.spdx deleted file mode 100644 index a47a78d..0000000 --- a/crates/advotrackerd/LICENSE.spdx +++ /dev/null @@ -1,6 +0,0 @@ -SPDXVersion: SPDX-2.1 -DataLicense: CC0-1.0 -PackageName: advotracker -PackageOriginator: Ralf Zerres -PackageHomePage: https://github.com/rzerres/advotracker/ -PackageLicenseDeclared: MIT, 0BSD \ No newline at end of file diff --git a/crates/advotrackerd/README.md b/crates/advotrackerd/README.md deleted file mode 100755 index b04696e..0000000 --- a/crates/advotrackerd/README.md +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -# AdvoTracker - Backend # - -AdvoTracker unterstützt Anwälte bei der Erfassung von Mandatsdaten zu einer Online-Beratung. - -Dieses crate implementiert das Backend. - -Als Programmiersprache wird *Rust* verwendet. Die Implementierung der -GUI Elemente erfolgt mit der Klassenbibliothek *OrbTk*. - -Als Dokumentationsquellen wird auf die offiziellen Projektseiten [Rust Book][^1] und [OrbTk][^2] verwiesen. - -# Internationalisierung # - -AdvoTracker wurde mit Unterstützung der Mehrsprachenfähigkeit implementiert. -Existieren für aktive Umgebung defnierte Sprache (Umgebungsvariable LOCALE) Übersetzungen, -werden diese in allen Dialogen verwendet. Andernfalls erfolgen alle Ausgaben in englischer Sprache -, die als default-Wert (LANG = C) hinterlegt ist. - -## Übersetzungen für neue Sprachen ## - -### derzeit: crate locales -* Übersetzungen für weiter Sprachen als JSON Dateien - im Unerordner ./locales/*.json - z.B. für Französisch: advotracker_fr.json - -### todo: crate fluent - -Die zu verwendende Sprache wird aus der in der Umgebungsvariable des Betriebssystems hinterlegten Sprache -ausgewählt. - ---- - -[Logo-CC_BY]: https://i.creativecommons.org/l/by/4.0/88x31.png "Creative Common Logo" -[License-CC_BY]: https://creativecommons.org/licenses/by/4.0/legalcode "Creative Common License" -This work is licensed under a [Creative Common License 4.0][License-CC_BY] - -![Creative Common Logo][Logo-CC_BY] - -© 2019 Ralf Zerres, Networkx GmbH - ---- - -Foodnotes - -[^1]: RUST Book: https://doc.rust-lang.org/book/ -[^2]: OrbTK GUI: https://gitlab.redox-os.org/redox-os/orbtk diff --git a/crates/advotrackerd/locales/main.json b/crates/advotrackerd/locales/main.json deleted file mode 100644 index b6caee8..0000000 --- a/crates/advotrackerd/locales/main.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "err.lang.not_found": { - "de_DE.UTF-8": "Konnte Sprachkode nicht auslesen", - "de": "Konnte Sprachkode nicht auslesen", - "en": "Couldn't read LANG" - }, - "err.user.not_found": { - "fr": "Utilisateur introuvable: $email, $id", - "de-DE.UTF-8": "Anwender nicht gefunden: $email, $id", - "de": "Anwender nicht gefunden: $email, $id", - "en": "User not found: $email, $id" - }, - "main.started": { - "de_DE.UTF-8": "Programmlogik starten", - "de": "Programmlogik starten", - "en": "Program logic started" - }, - "main.finished": { - "de_DE.UTF-8": "Programmlogik beendet", - "de": "Programmlogik beendet", - "en": "Program logic finished" - }, - "parse.arguments": { - "de_DE.UTF-8": "Programmargumente prüfen", - "de": "Programmargumente prüfen", - "en": "Parsing arguments" - }, - "parse.environment": { - "de_DE.UTF-8": "Umgebungsvariablen prüfen", - "de": "Umgebungsvariablen prüfen", - "en": "Parsing environment" - }, - "parse.results": { - "de_DE.UTF-8": "Ergebnisse der Konfigurations-Parameterprüfung", - "de": "Ergebnisse der Konfigurationsparameterprüfung", - "en": "Config parsing results" - }, - "config.name": { - "de_DE.UTF-8": "Konfigurationswert für", - "de": "Konfigurationswert für", - "en": "Config Value for" - }, - "config.name.lang": { - "de_DE.UTF-8": "Sprach-Code", - "de": "Sprach-Code", - "en": "Language code" - }, - "config.name.verbositylevel": { - "de_DE.UTF-8": "Ausgabe-Ebene", - "de": "Ausgabe-Ebene", - "en": "verbosity level" - }, - "config.name.environment": { - "de_DE.UTF-8": "Umgebungsvariablen", - "de": "Umgebungsvariablen", - "en": "environment" - }, - "config.name.configfile": { - "de_DE.UTF-8": "Konfigurations-Datei", - "de": "Konfigurations-Datei", - "en": "config file" - }, - "config.name.dbdriver": { - "de_DE.UTF-8": "Datenbank-Treiber", - "de": "Datenbank-Treiber", - "en": "database driver" - }, - "state.started": { - "de_DE.UTF-8": "gestartet", - "de": "gestartet", - "en": "started" - }, - "state.finished": { - "de_DE.UTF-8": "beendet", - "de": "beended", - "en": "finished" - } -} diff --git a/crates/advotrackerd/src/cli.yml b/crates/advotrackerd/src/cli.yml deleted file mode 100644 index 427e53f..0000000 --- a/crates/advotrackerd/src/cli.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: advotrackerd -version: "1.0" -author: Networkx GmbH -about: capture relevant data encountered during an online legal advice -after_help: in Zusammenarbeit mit HIEDEMANN Rechtsanwälte -args: - - config: - short: c - long: config - value_name: FILE - help: Sets a custom config file - takes_value: true - - dbdriver: - short: D - long: dbdriver - help: Driver used to connect to database - possible_values: - - mysql - - postgres - - sqlite - takes_value: true - - verbose: - short: v - long: verbose - multiple: true - help: Sets the level of verbosity -subcommands: - - config: - about: configure the program environment - version: "0.1.0" - author: Ralf Zerres - value_name: "FILE" - default_value: advotracker.conf - - test: - about: run testing features - version: "0.1.0" - author: Ralf Zerres - args: - - debug: - short: d - help: print debug information diff --git a/crates/advotrackerd/src/database.rs b/crates/advotrackerd/src/database.rs deleted file mode 100644 index bc1345f..0000000 --- a/crates/advotrackerd/src/database.rs +++ /dev/null @@ -1,327 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -// module: db -#![warn(clippy::pedantic)] -#![warn(clippy::nursery)] - -//#[cfg(test)] -use diesel::debug_query; -use diesel::dsl::*; -use diesel::prelude::*; -//use diesel::sql_query; -use diesel::sqlite::Sqlite; -use diesel::sqlite::SqliteConnection; -use dotenv::dotenv; -//use serde_derive; -use serde_json; -use std::env; -use std::error::Error; - -// modules -pub mod models; -pub mod schema; -pub mod types; - -//use crate::db::models::Users; -use crate::db::models::Harm; -use models::User; -use models::UserRole; -use schema::*; - -// functions -pub fn establish_connection() -> SqliteConnection { - dotenv().ok(); - - let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); - SqliteConnection::establish(&database_url) - .unwrap_or_else(|_| panic!("Error connecting to {}", &database_url)) - /* - * WIP: integrate tracing! - trace!( - target: "diesel", - type: "Sqlite3", - status: "connected" - ); - */ -} - -/* - * base functions -pub fn users_insert_default_values(conn: &SqliteConnection) -> QueryResult { - //use schema::users::dsl::*; - - insert_into(users).default_values().execute(conn) -} - -#[test] -fn examine_sql_users_insert_default_values() { - use schema::users::dsl::*; - - let query = insert_into(users).default_values(); - let sql = "INSERT INTO `users` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -pub fn user_roles_insert_default_values(conn: &SqliteConnection) -> QueryResult { - use schema::user_roles::dsl::*; - - insert_into(user_roles).default_values().execute(conn) -} - -#[test] -fn examine_sql_user_roles_insert_default_values() { - use schema::user_roles::dsl::*; - - let query = insert_into(user_roles).default_values(); - let sql = "INSERT INTO `user_roles` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -pub fn user_harms_insert_default_values(conn: &SqliteConnection) -> QueryResult { - use schema::harms::dsl::*; - - insert_into(harms).default_values().execute(conn) -} - -#[test] -fn examine_sql_harms_insert_default_values() { - use schema::harms::dsl::*; - - let query = insert_into(harms).default_values(); - let sql = "INSERT INTO `harms` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -pub fn users_insert_single_column(conn: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users) - .values(alias.eq("Hiedemann")) - .execute(conn) -} - -#[test] -fn examine_sql_users_insert_single_column() { - use schema::users::dsl::*; - - let query = insert_into(users).values(alias.eq("Hiedemann")); - let sql = "INSERT INTO `users` (`alias`) VALUES (?) \ - -- binds: [\"Hiedemann\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -pub fn users_insert_multiple_columns(conn: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users) - .values(( - first_name.eq("Lothar"), - last_name.eq("Schlömer"), - alias.eq("102"), - )) - .execute(conn) -} - -#[test] -fn examine_sql_user_insert_multiple_columns() { - use models::Users; - //use crate::db::models::Users; - use crate::db::schema::users::dsl::*; - - let query = insert_into(users).values(( - first_name.eq("Lothar"), - last_name.eq("Schlömer"), - alias.eq("102"), - )); - let sql = "INSERT INTO `users` (`first_name`, `last_name`, `alias`) \ - VALUES (?, ?, ?) \ - -- binds: [\"Lothar\", \"Schlömer\", \"102\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -pub fn user_insert_struct_via_json(conn: &SqliteConnection) -> Result<(), Box> { - use models::insert::NewUser; - use schema::users::dsl::*; - - let json = r#"{ "alias": "Daniela", "first_name": "Daniela","last_name": "Knocke" }"#; - let user_struct = serde_json::from_str::(json)?; - - insert_into(users).values(&user_struct).execute(conn)?; - - Ok(()) -} -*/ - -/* -#[test] -fn examine_sql_user_insert_struct_via_json() { - use models::NewUser; - use schema::users::dsl::*; - - let json = r#"{ "last_name": "Knocke", "first_name": "Daniela", "alias": "Sekretariat" }"#; - let user_form = serde_json::from_str::(json).unwrap(); - let query = insert_into(users).values(&user_form); - let sql = "INSERT INTO `users` (`last_name`, `first_name`, `alias`) \ - VALUES (?, ?, ?) \ - -- binds: [\"Knocke\", \"Daniela\", \"Sekretariat\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - */ - -/* -pub fn user_insert_struct_json_option(conn: &SqliteConnection) -> Result<(), Box> { - use models::NewUser; - use schema::users::dsl::*; - - let json = r#"{ "alias": "Networkx", "email_confirmed": true, - "email": "support@networkx.de", "first_name": null, "last_name": null }"#; let user_form = - serde_json::from_str::(json)?; - - insert_into(users).values(&user_form).execute(conn)?; - - Ok(()) -} - */ - -/* -#[test] -fn examine_sql_user_insert_struct_json_option() { - use schema::users::dsl::*; - use models::NewUser; - - let json = r#"{ "alias": "Networkx", "email_confirmed": true, "email": "support@networkx.de", "first_name": null, "last_name": null }"#; - let user_form = serde_json::from_str::(json).unwrap(); - let query = insert_into(users).values(&user_form); - let sql = "INSERT INTO `users` (`alias`, `email`, `email_confirmed`) \ - VALUES (?, ?, ?) \ - -- binds: [\"Networkx\", \"support@networkx.de\", \"$true\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} -*/ - -// WIP -/* -#[test] -fn examine_sql_users_insert_get_results() { - use diesel::result::Error; - - let conn = establish_connection(); - conn.test_transaction::<_, Error, _>(|| { - use diesel::select; - use chrono::NaiveDateTime; - use schema::users::dsl::*; - //use schema::users::*; - - let now = select(diesel::dsl::now).get_result::(&conn)?; - - let inserted_users = conn.transaction::<_, Error, _>(|| { - let inserted_count = insert_into(users) - .values(&vec![ - (id.eq(1), last_name.eq("Hiedemann"), first_name.eq("Eric")), - (id.eq(2), last_name.eq("Schlömer"), first_name.eq("Lothar")), - //(id.eq(1), first_name.eq("Eric"), last_name.eq("Hiedemann"), alias.eq("Eric.Hiedemann")), - //(id.eq(2), first_name.eq("Lothar"), last_name.eq("Schlömer"), alias.eq("othar.Schlömer")), - ]) - .execute(&conn)?; - - /* - Ok(users - .order(id.desc()) - .limit(inserted_count as i64) - .load(&conn)? - .into_iter() - .rev() - .collect::>()) - */ - })?; - - /* - let expected_users = vec![ - User { - id: 1, - last_name: "Hiedemann".into(), - first_name: "Eric".into(), - alias: "Eric.Hiedemann".into(), - email: None, - email_confirmed: false, - password_hash: None, - initials: None, - date_created: now, - date_updated: now, - }, - User { - id: 2, - last_name: "Schlömer".into(), - first_name: "Lothar".into(), - alias: "Lothar.Schlömer".into(), - email: None, - email_confirmed: false, - password_hash: None, - initials: None, - date_created: now, - date_updated: now, - }, - ]; - assert_eq!(expected_users, inserted_users); - */ - - Ok(()) - }); -} -*/ - -/* -pub fn create_numberharm<'a>(connection: &SqliteConnection, NumberHarm: &'a str) { - let numberHarm = models::NewNumberHarm { NumberHarm }; - - diesel::insert_into(schema::NumberHarm::table) - .values(&numberHarm) - .execute(connection) - .expect("Error inserting new task"); -} - */ - -/* -pub fn create_userid<'a>(connection: &SqliteConnection, User: &'a str) { - let user = models::NewUser { User }; - - diesel::insert_into(schema::User::table) - .values(&user) - .execute(connection) - .expect("Error inserting new task"); -} - */ - -/* -pub fn create_userclaimid<'a>(connection: &SqliteConnection, UserClaim: &'a str) { - let userClaim = models::NewUserClaim { UserClaim }; - - diesel::insert_into(schema::UserClaim::table) - .values(&userClaim) - .execute(connection) - .expect("Error inserting new task"); -} - -pub fn create_userrole<'a>(connection: &SqliteConnection, UserRole: &'a str) { - let userRole = models::NewUserRole { UserRole }; - - diesel::insert_into(schema::UserRole::table) - .values(&userRole) - .execute(connection) - .expect("Error inserting new task"); -} - -pub fn create_useruserrole<'a>(connection: &SqliteConnection, UserUserRole: &'a str) { - let userUserRole = models::NewUserUserRole { UserUserRole }; - - diesel::insert_into(schema::UserUserRole::table) - .values(&userUserRole) - .execute(connection) - .expect("Error inserting new task"); -} -*/ diff --git a/crates/advotrackerd/src/lib.rs b/crates/advotrackerd/src/lib.rs deleted file mode 100644 index a51e272..0000000 --- a/crates/advotrackerd/src/lib.rs +++ /dev/null @@ -1,43 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: 0BSD, MIT - */ - -#![warn(missing_docs, rust_2018_idioms, rust_2018_compatibility)] - -//! advotrackerd: crate documentation - -// This function adds two integers (given as arguments) and returns the sum. -// -// # Examples -// -// ``` -// assert_eq!(8, advotrackerd::internal_adder(4, 4)); -// ``` -fn internal_adder(a: i32, b: i32) -> i32 { - a + b -} - -/// This function adds two to its argument. -/// -/// # Examples -/// -/// ``` -/// assert_eq!(4, advotrackerd::add_two(2)); -/// ``` -pub fn add_two(a: i32) -> i32 { - internal_adder(a, 2) -} - - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn internal_test() { - assert_eq!(8, internal_adder(4, 4)); - } -} diff --git a/crates/advotrackerd/src/main.rs b/crates/advotrackerd/src/main.rs deleted file mode 100644 index abd61a5..0000000 --- a/crates/advotrackerd/src/main.rs +++ /dev/null @@ -1,213 +0,0 @@ -/* advotracker infrastructure. - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -// Rust nightly supports procedural macros! -//#![feature(proc_macro)] -//#![deny(rust_2018_idioms)] - -/// advotrackerd: the main binary - -//use log::info; //substituted with tracing -use dotenv::dotenv; -use locales::t; -use serde::Deserialize; -//use std::{env, process}; -use std::env; -//use tracing::{debug, info, instrument, span, Level}; -//use tracing::{debug, info, instrument, Level, Metadata, span::{Id, Attributes, Record}, trace}; -//use tracing::{debug, instrument, span::*, trace, Level}; -use tracing::{debug, trace, Level}; - -//use diesel::prelude::*; -//use diesel::sqlite::SqliteConnection; - -mod parse_args; -#[derive(Deserialize, Debug)] -struct Environment { - test_lang: String, -} - -/* -pub struct AdvoTrackerSubscriber; - -impl tracing::Subscriber for AdvoTrackerSubscriber{ - fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) } - fn record(&self, _: &Id, _: &Record) {} - fn event(&self, _: &tracing::Event) {} - fn record_follows_from(&self, _: &Id, _: &Id) {} - fn enabled(&self, _: &Metadata) -> bool { false } - fn enter(&self, _: &Id) {} - fn exit(&self, _: &Id) {} -} - -impl AdvoTrackerSubscriber { - fn new() -> Self { AdvoTrackerSubscriber } -} - -#[instrument] -fn run_subcommand(matches: &ArgMatches) -> Result<(), String> { - //info!("inside run_subcommand"); - match matches.subcommand() { - ("config", Some(cmd)) => run_config(cmd), - ("test", Some(cmd)) => run_test(cmd), - _ => Ok(()), - } -} - -fn run_config(matches: &ArgMatches) -> Result<(), String> { - //info!("inside run_config"); - let _input = matches.value_of("FILE").unwrap(); - Ok(()) -} - - -fn run_test(matches: &ArgMatches) -> Result<(), String> { - //info!("inside run_test"); - - if let Some(matches) = matches.subcommand_matches("test") { - if matches.is_present("debug") { - println!("test: Printing debug info..."); - } else { - println!("test: Printing normally..."); - } - } - Ok(()) -} - */ - -/// `advotrackerd` is the daemon that keeps track of legal mandate data -/// that are backed up in a database. -fn main() -> Result<(), Box> { - use parse_args::parse_args; - use tracing_subscriber::fmt; - use viperus::Viperus; - - //let advotracker_subscriber = AdvoTrackerSubscriber::new(); - //tracing::subscriber::set_global_default(advotracker_subscriber) - // .expect("setting tracing default failed"); - - // initialize the tracing subsystem - // a drop in replacement for classical logging - // reference: https://tokio.rs/blog/2019-08-tracing/ - let span = tracing::span!(Level::TRACE, "advotracker_main"); - let _enter = span.enter(); - let subscriber = fmt::Subscriber::builder() - .with_env_filter("advotracker=trace") - .finish(); - - // initialize logger - // TODO: exchange with tracing! - //env_logger::init(); - //info!("Commencing the proxy!"); - - tracing::subscriber::with_default(subscriber, || { - // get system environment - let mut lang = env::var("LANG").unwrap_or("en".to_string()); - let mut res = t!("parse.environment", lang); - let mut state = t!("state.started", lang); - trace!(target: "advotracker", message = ?res, state = ?state); - //debug!(message = ?res, state = ?state); - trace!(target: "advotracker", environment = "system", lang = ?lang); - - // get testing environment (.env) - dotenv().ok(); - match envy::from_env::() { - Ok(environment) => { - if environment.test_lang != lang { lang = environment.test_lang; } - }, - Err(e) => { debug!(target: "advotracker", "{}", e); } - } - res = t!("parse.environment", lang); - trace!(target: "advotracker", environment = "envy", lang = ?lang); - state = t!("state.finished", lang); - trace!(target: "advotracker", message = ?res, state = ?state); - //debug!(message = ?res, state = ?state); - - // initialize viperus structure - let mut v = Viperus::new(); - - // parse commandline arguments - res = t!("parse.arguments", lang); - state = t!("state.started", lang); - trace!(target: "advotracker", process = ?res, state = ?state); - //info!(target: "advotracker", "{}", res); - //debug!(message = ?res, state = ?state); - //info!(target: "advotracker", "parsing commandline args"); - let _ = parse_args(&mut v); - state = t!("state.finished", lang); - trace!(target: "advotracker", process = ?res, state = ?state); - //trace!(target: "Viperus", "Config results: {:?}", v); - - /* - if verbose > 1 { - for (key, value) in env::vars() { - println!("{}={}", key, value); - } - } - */ - - //state = t!("state.finished", lang); - //trace!(target: "advotracker", process = ?res, state = ?state); - //debug!(message = ?res, state = ?state); - - /* - // handle subcommands - if let Err(e) = run_subcommand(&matches) { - println!("Subcommand error: {}", e); - process::exit(1); - } - */ - - // Starting the program logic - res = t!("main.started", lang); - state = t!("state.started", lang); - //info!(target: "advotracker", "{}", res); - trace!(target: "advotracker", process = ?res, state = ?state); - - //use advotracker_backend::*; - //use advotracker_backend::schema::users::dsl::*; - - /* - let connection = establish_connection(); - - trace!( - target: "advotracker", - process = "Sqlite3", - status = "connected", - ); - */ - - /* - //User::table.load(&connection); - //user::belonging_to(users).load(&connection); - use advotracker_backend::models::*; - - - let results = users - //.filter(published.eq(true)) - .limit(5) - .load::(&connection) - .expect("Error loading users"); - - println!("Displaying {} users", results.len()); - for user in results { - println!("{}", user.user_id); - println!("----------\n"); - println!("{}", user.first_name); - println!("{}", user.last_name); - println!("{}", user.alias); - println!("{}", user.email); - } - */ - - state = t!("state.finished", lang); - res = t!("main.finished", lang); - //info!(target: "advotracker", "{}", res); - trace!(target: "advotracker", process = ?res, state = ?state); - }); - - Ok(()) -} diff --git a/crates/advotrackerd/src/parse_args.rs b/crates/advotrackerd/src/parse_args.rs deleted file mode 100644 index b7e896c..0000000 --- a/crates/advotrackerd/src/parse_args.rs +++ /dev/null @@ -1,143 +0,0 @@ -/* advotracker infrastructure. - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use viperus::Viperus; - -/// The given Viperus structure will be muted according to the -/// processed default, environment and commandline arguments -pub fn parse_args(v: &mut Viperus) -> Result<(), Box> { - use tracing::trace; - use std::env; - - if cfg!(feature = "yaml") { - trace!(target:"feature", "Clap feature 'yaml' enabled."); - println!("Using feature yaml."); - } - if cfg!(feature = "fmt-clap") { - trace!(target: "Viperus", "Viperus feature 'fmt-clap' enabled."); - println!("Using feature fmt-clap"); - } - - // preset default key/value pairs (lowest priority) - v.add_default("config_file", String::from("advotrackerd.yml")); - v.add_default("db_driver", String::from("sqlite")); - v.add_default("verbose", 0); - - //if cfg!(feature = "fmt-clap") { - println!("With fmt-clap..."); - - // parse CLI commandline arguments with clap - use clap::{crate_authors, crate_description, crate_name, crate_version, App, Arg}; - - // CLI arguments are defined inline - let matches = App::new("advotrackerd") - .name(crate_name!()) - .version(crate_version!()) - .author(crate_authors!()) - .about(crate_description!()) - .after_help("in Zusammenarbeit mit Hiedemann Rechtsanwälte ") - .template( - "\ - {bin} v{version} -{about} - -{all-args} - -(C) 2020 {author} -{after_help}", - ) - .arg( - Arg::with_name("configFile") - .short("c") - .long("configFile") - .value_name("FILE") - .help("Sets a custom config file") - .takes_value(true), - ) - .arg( - Arg::with_name("dbdriver") - .short("d") - .long("dbdriver") - .value_name("DatabaseDriver") - .help("Driver used to connect to database") - .possible_values(&["mysql", "postgres", "sqlite"]) - .takes_value(true), - ) - .arg( - Arg::with_name("verbose") - .short("v") - .long("verbose") - .help("Sets verbosity level") - .multiple(true), - ) - .get_matches(); - //} - if matches.occurrences_of("verbose") > 0 { - // clap is using i64, viperus i32 - let n = matches.occurrences_of("verbose") as i32; - v.add("verbose", n); - } - //} - - // preset the prefix for relevant environment variables ("ADVOTRACKERD_") - //if cfg!(feature = "fmt-clap") { - let mut env_prefix: String = crate_name!().to_uppercase(); - env_prefix.push_str("_"); - v.set_env_prefix(&env_prefix); - //} - - // respect dotenv environment (e.g for testing) - // -> overwrites the preset default values - println!( - "RUST_LOG={}", - dotenv::var("RUST_LOG").unwrap_or_else(|_| String::from("None")) - ); - //v.load_file(".env", v.Format::ENV).unwrap(); - - // enable caching and automatic update of environment values - if cfg!(feature = "fmt-cache") { - v.cache(true); - } - if cfg!(feature = "fmt-env") { - v.automatic_env(true); - } - - //if cfg!(feature = "fmt-clap") { - // load user selected call arguments - // -> overwrites values given via environment variables - v.load_clap(matches)?; - - // bond the clap names to camel_case rust variable names - v.bond_clap("configFile", "config_file"); - v.bond_clap("dbdriver", "db_driver"); - v.bond_clap("verbose", "verbose"); - //} - - trace!("verbose {:?}", v.get::("verbose").unwrap()); - if v.get::("verbose").unwrap() > 0 { - println!( - "config_file: {:?}", - v.get::("config_file").unwrap_or_default() - ); - println!( - "db_driver: {:?}", - v.get::("db_driver").unwrap_or_default() - ); - println!( - "verbosity level: {:?}", - v.get::("verbose").unwrap_or_default() - ); - } - - if v.get::("verbose").unwrap() > 1 { - println!("\nEnvironment:"); - for (key, value) in env::vars() { - println!("{}={}", key, value); - } - } - - Ok(()) -} diff --git a/crates/advotrackerd/tests/integration_test.rs b/crates/advotrackerd/tests/integration_test.rs deleted file mode 100644 index 9d925a2..0000000 --- a/crates/advotrackerd/tests/integration_test.rs +++ /dev/null @@ -1,7 +0,0 @@ -//use advotracker; - -#[test] -fn integration_add_two() { - assert_eq!(4, advotracker_backend::add_two(2)); -} - diff --git a/crates/advotrackerdb/.env b/crates/advotrackerdb/.env deleted file mode 100644 index 730ac11..0000000 --- a/crates/advotrackerdb/.env +++ /dev/null @@ -1,3 +0,0 @@ -RUST_LOG=advotracker=info -DATABASE_URL=./advotracker.sqlite3 -#DATABASE_URL=postgres://username:password@localhost/advotracker diff --git a/crates/advotrackerdb/.gitignore b/crates/advotrackerdb/.gitignore deleted file mode 100644 index 97d56b9..0000000 --- a/crates/advotrackerdb/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target -**/*.rs.bk - -*.sqlite3 \ No newline at end of file diff --git a/crates/advotrackerdb/Cargo.toml b/crates/advotrackerdb/Cargo.toml deleted file mode 100644 index 0928cf8..0000000 --- a/crates/advotrackerdb/Cargo.toml +++ /dev/null @@ -1,60 +0,0 @@ -[package] -name = "advotrackerdb" -version = "0.1.0-alpha1" -authors = ["Ralf Zerres "] -description = "Advotracker crate implementing Database handling.\n" -repository = "https://gitea.networkx.de:50443/rzerres/advotrackerdb" -homepage = "https://gitea.networkx.de:50443/rzerres/advotrackerdb" -readme = "README.md" -license = "(0BSD OR MIT)" -edition = "2018" -categories = ["command-line-interface"] -#build = "build.rs" -default-run = "new-role" - -[lib] -name = "advotrackerdb" -path = "src/lib.rs" -crate-type = ["dylib"] - -[[bin]] -name = "get-harms" -path = "src/bin/get-harms.rs" -advotrackerdb = { Path="." } - -[[bin]] -name = "get-roles" -path = "src/bin/get-roles.rs" -advotrackerdb = { Path="." } - -[[bin]] -name = "get-users" -path = "src/bin/get-users.rs" -advotrackerdb = { Path="." } - -[[bin]] -name = "new-role" -path = "src/bin/new-role.rs" -advotrackerdb = { Path="." } - -[[bin]] -name = "new-harm" -path = "src/bin/new-harm.rs" -advotrackerdb = { Path="." } - -[[bin]] -name = "new-user" -path = "src/bin/new-user.rs" -advotrackerdb = { Path="." } - -[dependencies] -lazy_static = "1.0" - -bcrypt = { version = "0.8.2" } -chrono = { version = "0.4.15", features = [ "serde" ] } -diesel = { version = "1.4.5", features = [ "sqlite", "chrono" ] } -dotenv = { version = "0.15.0" } -#ldap3 = { version = "0.6" } -serde = { version = "~1.0", features = [ "derive" ] } -#serde_derive = { version = "1.0" } -serde_json = { version = "~1.0" } diff --git a/crates/advotrackerdb/LICENSE-0BSD b/crates/advotrackerdb/LICENSE-0BSD deleted file mode 100644 index ae1aa23..0000000 --- a/crates/advotrackerdb/LICENSE-0BSD +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (C) 2019 by Ralf Zerres - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/crates/advotrackerdb/LICENSE-MIT b/crates/advotrackerdb/LICENSE-MIT deleted file mode 100644 index 107a485..0000000 --- a/crates/advotrackerdb/LICENSE-MIT +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2019 Ralf Zerres - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/crates/advotrackerdb/LICENSE.spdx b/crates/advotrackerdb/LICENSE.spdx deleted file mode 100644 index a47a78d..0000000 --- a/crates/advotrackerdb/LICENSE.spdx +++ /dev/null @@ -1,6 +0,0 @@ -SPDXVersion: SPDX-2.1 -DataLicense: CC0-1.0 -PackageName: advotracker -PackageOriginator: Ralf Zerres -PackageHomePage: https://github.com/rzerres/advotracker/ -PackageLicenseDeclared: MIT, 0BSD \ No newline at end of file diff --git a/crates/advotrackerdb/README.md b/crates/advotrackerdb/README.md deleted file mode 100644 index d2b7d63..0000000 --- a/crates/advotrackerdb/README.md +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -# advotracker - database handling - -`advotracker` make use of [Diesel][^1] to handle all SQL access functionality. -Diesel requires to be compiled with Rust version 1.24 or later. - -The actual version is tested with the `sqlite3` backend. All following documentation -will reference to this constellation. - -# Diesel - -First of all, add the required dependencies to the projects Cargo.toml - -```bash -[dependencies] -diesel = { version = "1.4.4", features = ["sqlite" "chrono"] } -dotenv = "0.15.0" -``` - -## CLI helper - -Diesel provides a separate CLI tool to help manage the project. -This CLI should be installed on your system. I you don't have that -already available on you system, go and install it like this: - -```bash -cargo install diesel_cli -cargo install diesel_cli --no-default-features --features sqlite3 -``` - -## Database Setup - -We do uses `sqlite` for now. Use your distro package for sqlite3. - -Now direct diesel to the correct database instance. We can create an -environment variable `DATABASE_URL`, that will point to the instance. -For the test setup, we take advantage of an .env file: - -```.env -DATABASE_URL=sqlite://localhost/advotracker -#DATABASE_URL=postgres://username:password@localhost/advotracker -``` - -- **Instantiate a new database** - -In the beginning, there is .... nothing! -We will create an empty database to get started: - -```bash -$ sqlite3 /advotracker.sqlite3> -sqlite3 advotracker.sqlite3 -``` - -- **Test availability** - -Sqlite will drop us in the CLI shell. Try to get available -databases, which should response a `main` pointing to the -absolute path of the created database. - -```bash - -SQLite version 3.32.3 2020-06-18 14:00:33 -Enter ".help" for usage hints. -sqlite> .databases -main: //advotracker.sqlite3 -.quit -``` - -All fine. - -## Diesel Setup - -When managing the database schema, probably it will evolve over the time. -Diesel takes that into account and supports a bundles called `Migrations`. -They allow us to define states, that can be applied (up.sql) or reverted (down.sql). -Applying and immediately reverting a migration is a good test, to make sure you -that the used migration leaves your database schema in the requested state. - -- **Instantiate a migration** - -The following command will crate the basic `advotracker` structure. - -```bash -diesel setup -diesel migration generate advotracker -``` - -You can review the generated structure in the subfolder `migrations`. It -holds a timestamp based subfolder, named `/advotracker.sqlite3> -SQLite version 3.32.3 2020-06-18 14:00:33 -Enter ".help" for usage hints. -sqlite> .index -claims_ix_id_user -harms_ix_number_harm -sqlite_autoindex___diesel_schema_migrations_1 -sqlite_autoindex_roles_1 -sqlite_autoindex_user_roles_1 -user_roles_ix_id_role -user_roles_ix_id_user -users_ix_email -.quit -``` - -You are done. The database is ready to be accessed for the -advotracker rust code. - -## Reference - -Any further information can be obtained from [Diesel's project page][^1]. - ---- - -[Logo-CC_BY]: https://i.creativecommons.org/l/by/4.0/88x31.png "Creative Common Logo" -[License-CC_BY]: https://creativecommons.org/licenses/by/4.0/legalcode "Creative Common License" -This work is licensed under a [Creative Common License 4.0][License-CC_BY] - -![Creative Common Logo][Logo-CC_BY] - -© 2020 Ralf Zerres, Networkx GmbH - ---- - -Footnotes - -[^1]: Diesel Guides: https://diesel.rs/guides/getting-started/ diff --git a/crates/advotrackerdb/advotracker_build.rs b/crates/advotrackerdb/advotracker_build.rs deleted file mode 100644 index 5e6ac1b..0000000 --- a/crates/advotrackerdb/advotracker_build.rs +++ /dev/null @@ -1,6 +0,0 @@ -fn main() { - println!("hey cargo"); - //println!("cargo:rustc-link-lib=dylib=advotrackerdb.so"); - println!("cargo:rustc-link-args=-Wl,-rpath=$ORIGIN"); - //println!("cargo:rustc-link-search=native=$ORIGIN"); -} diff --git a/crates/advotrackerdb/diesel.toml b/crates/advotrackerdb/diesel.toml deleted file mode 100644 index dde8559..0000000 --- a/crates/advotrackerdb/diesel.toml +++ /dev/null @@ -1,8 +0,0 @@ -# For documentation on how to configure this file, -# see https://diesel.rs/guides/configuring-diesel-cli - -[print_schema] -file = "src/schema.rs" -#filter = { only_tables = [ "User", "UserRole" ] } -# includes the "#![allow(missing_docs)]" -patch_file = "src/missing_docs.patch" \ No newline at end of file diff --git a/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/down.sql b/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/down.sql deleted file mode 100644 index e910d0d..0000000 --- a/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/down.sql +++ /dev/null @@ -1,17 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: 0BSD - */ - -DROP INDEX IF EXISTS NumberHarm_ix_numberHarm; -DROP TABLE IF EXISTS NumberHarm; -DROP INDEX IF EXISTS UserClaim_ix_userId; -DROP TABLE IF EXISTS UserClaim; -DROP VIEW IF EXISTS View_UserRole; -DROP INDEX IF EXISTS UserUserRole_ix_roleId; -DROP INDEX IF EXISTS UserUserRole_ix_userId; -DROP TABLE IF EXISTS UserUserRole; -DROP TABLE IF EXISTS UserRole; -DROP TABLE IF EXISTS User; diff --git a/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/up.sql b/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/up.sql deleted file mode 100644 index 2bb20bf..0000000 --- a/crates/advotrackerdb/migrations/2020-06-28-140423_advotracker/up.sql +++ /dev/null @@ -1,94 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD, MIT) - */ - --- echo ".read | --- sqlite3 advotracker.db \ - -CREATE TABLE IF NOT EXISTS claims ( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - id_user INTEGER NOT NULL, - type VARCHAR, - value VARCHAR, - date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - id_user_changed INTEGER NOT NULL, - date_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - -- CONSTRAINTS - CONSTRAINT claims_fk_id_user FOREIGN KEY (id_user) - REFERENCES users (id) ON DELETE CASCADE ON UPDATE CASCADE -); -CREATE INDEX IF NOT EXISTS claims_ix_id_user ON claims (id_user); - -CREATE TABLE IF NOT EXISTS harms ( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - harm VARCHAR NOT NULL, - policyholder VARCHAR, - number_callback VARCHAR, - deductible VARCHAR, - date_callback TIMESTAMP, - date_recording TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - id_user INTEGER NOT NULL, - date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - id_user_changed INTEGER NOT NULL, - date_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); -CREATE INDEX IF NOT EXISTS harms_ix_number_harm ON harms (id_harm); - -CREATE TABLE IF NOT EXISTS roles ( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - name VARCHAR NOT NULL, - date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - id_user_changed INTEGER NOT NULL, - date_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - -- Constraints - CONSTRAINT user_roles_uk_name UNIQUE (name) -); - -CREATE TABLE IF NOT EXISTS users ( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - last_name VARCHAR NOT NULL, - first_name VARCHAR, - alias_name VARCHAR, - email VARCHAR, - /* email_confirmed boolean NOT NULL DEFAULT 0, */ - email_confirmed INTEGER, - initials VARCHAR, - password_hash VARCHAR, - date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - id_changed Integer NOT NULL, - date_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP - -- Constraints - CONSTRAINT users_ck_email_confirmed CHECK (email_confirmed IN (0,1)) -); -CREATE INDEX IF NOT EXISTS users_ix_email ON users (email); - -CREATE TABLE IF NOT EXISTS user_roles ( - /* id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, */ - id_user INTEGER NOT NULL, - id_role INTEGER NOT NULL, - -- Constraints - CONSTRAINT user_roles_pk_id_user_id_role PRIMARY KEY (id_user, id_role), - CONSTRAINT user_roles_fk_id_user FOREIGN KEY (id_user) - REFERENCES users (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT user_roles_fk_id_role FOREIGN KEY (id_role) - REFERENCES roles (id) ON DELETE CASCADE ON UPDATE CASCADE -); -CREATE INDEX IF NOT EXISTS user_roles_ix_id_user ON user_roles (id_user); -CREATE INDEX IF NOT EXISTS user_roles_ix_id_role ON user_roles (id_role); - -CREATE VIEW IF NOT EXISTS view_user_roles - AS SELECT - users.id_user AS id_user, - users.last_name AS last_name, - users.first_name AS first_name, - users.email AS email, - users.user_initials AS initials, - role.user_rolename AS role_name - FROM user_roles - INNER JOIN users ON users.id_user = user_roles.id_user - INNER JOIN roles ON user_roles.id = user_roles.id_role; - --- end diff --git a/crates/advotrackerdb/src/bin/get-harms.rs b/crates/advotrackerdb/src/bin/get-harms.rs deleted file mode 100644 index d0566dc..0000000 --- a/crates/advotrackerdb/src/bin/get-harms.rs +++ /dev/null @@ -1,24 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - use advotrackerdb::{ - functions::db_connection::establish_connection, - models::harms::Harm, - }; - - let connection = establish_connection(); - - // function call - let vec_rows = Harm::get_all(&connection); - let rows = vec_rows.iter(); - println!("Matching harms (count: {})", rows.len()); - for row in rows { - println!("{:?}: {:?} {:?} {:?} {:?}", - row.id, row.id_harm, row.id_policyholder, row.id_callback, row.date_recording); - } -} diff --git a/crates/advotrackerdb/src/bin/get-roles.rs b/crates/advotrackerdb/src/bin/get-roles.rs deleted file mode 100644 index 4d4ddb3..0000000 --- a/crates/advotrackerdb/src/bin/get-roles.rs +++ /dev/null @@ -1,90 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - use diesel::RunQueryDsl; - - use advotrackerdb::{ - functions::db_connection::establish_connection, - models::roles::Role, - schema::roles::dsl::*, - }; - - let connection = establish_connection(); - - // direct diesel method call - match roles - //.filter(name.eq("Administrator")) - .load::(&connection) - { - Err(err) => println!("{}", err), - Ok(rows) => { - println!("Matching roles (found: {})", rows.len()); - //for row in rows { - // println!("{:?}: {:?}", row.id, row.name); - //} - //for field in role_row { - // println!("{}", field.id); - // println!("{}", field.name); - //} - } - } - - // function call - let vec_rows = Role::get_all(&connection); - let rows = vec_rows.iter(); - println!("Matching roles (count: {})", rows.len()); - for row in rows { - println!("{:?}: {:?}", row.id, row.name); - } - - // get a specific role, selected by attribute "name" - //let role_name = "Hacker"; - let role_name = "Sekretariat"; - println!("\nRole details for: {}", role_name); - let row = Role::get(&role_name, &connection).unwrap(); - /*let row = match row { - Err(err) => println!("{}", err), - // will return a vector of matching rows - Ok(row) => { - //println!("\nNumber of matching rows: {}", row.len()); - println!("Role id: {:?}", row[0].id); - println!("----------"); - //println!("row: {:?}", row); - println!("Role name: {:?}", row[0].name); - println!("Role date_created: {:?}", row[0].date_created); - println!("Role updated by: {:?}", row[0].id_user_changed); - println!("Role date_changed: {:?}", row[0].date_changed); - } - }; - */ - if row.len() > 0 { - println!("Role name: {:?}", row[0].name); - println!("Role date_created: {:?}", row[0].date_created); - println!("Role updated by: {:?}", row[0].id_user_changed); - println!("Role date_changed: {:?}", row[0].date_changed); - } - - /* - // join tables "roles" and "users" - let join = roles::table.left_join(users::table); - - // By default, all columns from both tables are selected - let role_struct = join - .select((roles::name, users::full_name.nullable())) - .load::<(String, Option)>(&connection)?; - println!( - "\nRole id: {} (len: {})", - role_struct.name, - role_struct.len() - ); - println!("----------\n"); - println!("Role name: {}", role_struct.name); - */ - - println!("Finish!"); -} diff --git a/crates/advotrackerdb/src/bin/get-users.rs b/crates/advotrackerdb/src/bin/get-users.rs deleted file mode 100644 index b4f2d12..0000000 --- a/crates/advotrackerdb/src/bin/get-users.rs +++ /dev/null @@ -1,62 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - - use advotrackerdb::{ - functions::db_connection::establish_connection, - models::users::User, - }; - - let connection = establish_connection(); - - // function call - let vec_rows = User::get_all(&connection); - let rows = vec_rows.iter(); - println!("Matching roles (count: {})", rows.len()); - for row in rows { - println!("{:?}: {:?} {:?} {:?} {:?}", - row.id, row.last_name, row.first_name, row.email, row.password_hash); - } - - /* - use advotracker_database::models::User; - use advotracker_database::schema::users::dsl::*; - let results = users - .load::(&connection) - .expect("Error loading users"); - - //.filter(email_confirmed.eq(1)) - //.limit(5) - //.filter(email_confirmed.eq(Confirmed)) - //.limit(5) - - println!("Displaying {} users", results.len()); - for user in results { - println!("{}", user.id); - println!("----------\n"); - println!("{:?}", user.first_name); - println!("{:?}", user.last_name); - println!("{:?}", user.alias); - println!("{:?}", user.email); - } - */ - - /* - use advotracker_database::models::Role; - let results = roles - .load::(&connection) - .expect("Error loading Roles"); - - println!("Displaying {} roles", results.len()); - for role in results { - println!("{}", role.id); - println!("----------\n"); - println!("{:?}", role.name); - } - */ -} diff --git a/crates/advotrackerdb/src/bin/new-harm.rs b/crates/advotrackerdb/src/bin/new-harm.rs deleted file mode 100644 index 7ba1170..0000000 --- a/crates/advotrackerdb/src/bin/new-harm.rs +++ /dev/null @@ -1,73 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - use chrono::Local; - use std::io::{stdin, Read}; - - use advotrackerdb::{ - functions::db_connection::*, - models::harms::Harm, - }; - - let connection = establish_connection(); - - let number_harm = "123456789"; - let number_policyholder = "110-123456789"; - let number_callback = "0221 93123456789"; - let date_fallback = Local::now().naive_local(); - let date_recording = Local::now().naive_local(); - - // WIP: there is emptyness in the beginning - // how do we make sure, that there is a 'root' user? - // real world: this needs to be the id of the logged in user - let user_id = 1; - //let user_id_changed = 1; - - println!("\nOk! I got the following:\nNumber Harm: {}", number_harm); - println!( - "Policyholder: {}, Number callback: {}", - number_policyholder, number_callback - ); - - println!( - "If correct, let's create this harm '{}'. (Press {} when finished)", - number_harm, EOF - ); - - let mut body = String::new(); - stdin().read_to_string(&mut body).unwrap(); - - // insert as multicolon - let ret = Harm::new( - &number_harm, - Some(&number_policyholder), - Some(&number_callback), - Some(date_fallback), - date_recording, - user_id, - &connection, - ); - println!("\nCreated new harm {}, returns {:?}", number_harm, ret); - - // get a given harm - let harm_vec = Harm::get(number_harm, &connection); - println!("\nHarm: {:?}", harm_vec); - - //let json = r#"{ "number_harm": "123456789", "number_policyholder": "110-123456789", "number_callback": "0221 92123456789", "user_id": 102, "user_id_changed": 101}"#; - //let json = - // r#"{ "number_harm": "123456789", "number_policyholder": null, "number_callback": null }"#; - //let harm_struct = serde_json::from_str::(json); - - //insert_into(harms).values(&harm_struct).execute(connection); -} - -#[cfg(not(windows))] -const EOF: &str = "CTRL+D"; - -#[cfg(windows)] -const EOF: &str = "CTRL+Z"; diff --git a/crates/advotrackerdb/src/bin/new-role.rs b/crates/advotrackerdb/src/bin/new-role.rs deleted file mode 100644 index d592430..0000000 --- a/crates/advotrackerdb/src/bin/new-role.rs +++ /dev/null @@ -1,80 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - use std::io::{stdin, Read}; - - use advotrackerdb::{ - functions::db_connection::*, - models::roles::Role, - }; - - let connection = establish_connection(); - - println!("Role name?"); - let mut role_name = String::new(); - stdin().read_line(&mut role_name).unwrap(); - // Drop the newline character form our String slice - let role_name = &role_name[..(role_name.len() - 1)]; - - // WIP: there is emptyness in the beginning - // how do we make sure, that there is a 'root' user? - // real world: this needs to be the id of the logged in user - let user_id_changed = 1; - - println!("\nOk! I got the following:\nRole Name: {}", role_name); - println!( - "If correct, let's create this role {}. (Press {} when finished)", - role_name, EOF - ); - - let mut body = String::new(); - stdin().read_to_string(&mut body).unwrap(); - - // insert as multicolon - let ret = Role::new(role_name, user_id_changed, &connection); - println!("\nCreated new role {}, returns {:?}", role_name, ret); - - // get a given role_name - let role_vec = Role::get(role_name, &connection); - println!("\nRole: {:?}", role_vec); - //println!( - // "\nRole parameter:\nRole name: {}\nUpdated via: {}", - // role_vec.name, role_vec.id_updated - //); - - // update a given role_name - //role_id = 2; - //role_name = "New Freelancer"; - //role_vec = Role::update(role_id, role_name, &connection); - //println!("\nRole: {:?}", role_vec); - - let role_names = ["Administrator", "Rechtsanwalt", "Sekretariat"]; - //let roles = role_names.iter(); - for role_name in &role_names { - let _ = Role::new(role_name, user_id_changed, &connection); - } - - //role_name = "Sekretariat"; - //let _ = Role::new(role_name, user_id_changed, &connection); - - /* - let inserted_count = insert_into(user_roles) - .values(&vec![ - (id.eq(1), name.eq("Rechtsanwalt")), - (id.eq(2), name.eq("Administrator")), - ]) - .execute(&connection)?; - */ - println!("Saved Role {}", role_name); -} - -#[cfg(not(windows))] -const EOF: &str = "CTRL+D"; - -#[cfg(windows)] -const EOF: &str = "CTRL+Z"; diff --git a/crates/advotrackerdb/src/bin/new-user.rs b/crates/advotrackerdb/src/bin/new-user.rs deleted file mode 100644 index 452310d..0000000 --- a/crates/advotrackerdb/src/bin/new-user.rs +++ /dev/null @@ -1,181 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -fn main() { - use std::io::{stdin, Read}; - - use advotrackerdb::{ - functions::db_connection::*, - models::users::User, - }; - - let connection = establish_connection(); - - /* - println!("Users first name?"); - let mut last_name = String::new(); - stdin().read_line(&mut last_name).unwrap(); - let last_name = &last_name[..(last_name.len() - 1)]; // Drop the newline character - - println!("Users last name?"); - let mut first_name = String::new(); - stdin().read_line(&mut first_name).unwrap(); - let first_name = &first_name[..(first_name.len() - 1)]; - - println!("Users alias?"); - let mut alias = String::new(); - stdin().read_line(&mut alias).unwrap(); - let alias = &alias[..(alias.len() - 1)]; - - println!("Users email?"); - let mut email = String::new(); - stdin().read_line(&mut email).unwrap(); - let email = &email[..(email.len() - 1)]; - let email_confirmed = 0; - - println!("Users password?"); - let mut password_hash = String::new(); - stdin().read_line(&mut password_hash).unwrap(); - let password_hash = &password_hash[..(password_hash.len() - 1)]; - - println!("Users initials?"); - let mut initials = String::new(); - stdin().read_line(&mut initials).unwrap(); - let initials = &initials[..(initials.len() - 1)]; - */ - - let first_name = "Ralf"; - let last_name = "Zerres"; - let alias = "ralf.zerres"; - let email = "ralf.zerres@networkx.de"; - let initials = "rze"; - let email_confirmed = 0; - let password_hash = "testrze"; - let id_changed = 1; - - println!( - "\nOk! I got the following:\nName: {} {}, Alias: {}", - first_name, last_name, alias - ); - println!( - "Email-address: {}, Status: {}\nInitials: {}, Password: {}", - email, email_confirmed, initials, password_hash - ); - - println!( - "If correct, let's create this user {}. (Press {} when finished)", - last_name, EOF - ); - - let mut body = String::new(); - stdin().read_to_string(&mut body).unwrap(); - - // insert as multicolon - let ret = User::new( - last_name, - Some(first_name), - Some(alias), - Some(email), - Some(email_confirmed), - password_hash, - Some(initials), - //date_create: null, - //date_updated: null, - id_changed, - &connection, - ); - println!("\nCreated new user {}, returns {:?}", last_name, ret); - - use serde_json::json; - - // prepare full record - let _json_record = json!({ - "first_name": "Daniela", - "last_name": "Knocke", - "alias": "Sekretariat", - "email": "knocke@kanzlei.hiedemann.de", - "email_confirmed": 1, - "password_hash": "", - "initials": "dkn", - "date_create": null, - "date_updated": null, - "id_changed": 1, - }); - - // println!( - // "\nCreate user {} via json record:\n{}", - // json_record["last_name"], json_record - // ); - // ret = User::set_user_struct_json_option(&connection); - // println!( - // "Created new user {} via json-struct returns {:?}", - // json_record["last_name"], ret - //); - - // insert as vector - /* - //connection.test_transaction::<_, Error, _>(|| { - //use diesel::select; - use schema::users::dsl::*; - - //let now = select(diesel::dsl::now).get_result::(&connection); - //let now = select(diesel::dsl::now).get_result::(&connection); - let inserted_count = insert_into(users) - .values(&vec![ - (last_name.eq("Networkx"), first_name.eq("Admin"), alias.eq("Networkx"), - email.eq("support@networkx.de")), - (last_name.eq("Schlömer"), first_name.eq("Lothar"), alias.eq("lothar.schlömer"), - email.eq("schlömer@kanzlei-hiedemann.de")), - ]) - .execute(&connection); - //}); - */ - - // Some data structure. - println!( - "\nCreate new json stuct representing user: {} {}", - first_name, last_name - ); - let user = json!({ - "first_name": first_name, - "last_name": last_name, - "alias": alias, - "email": email, - //"email_confirmed": 1, - //"password_hash": "", - "initials": initials, - //"date_create": null, - //"date_updated": null, - "id_changed": 1, - }); - - // Convert to a string of JSON and print it out - println!( - "json stuct representing user: {} {}", - user["last_name"], - user.to_string() - ); - - // Serialize it to a JSON string. - let json = serde_json::to_string(&user); - - // Print, write to a file, or send to an HTTP server. - println!("Serialized output: {:?}", json); - - /* - let user_id = 1; - let role_id = 1; - use advotrackerdb::functions::roles::*; - let _ = set_user_role(&connection, &user_id, &role_id); - */ -} - -#[cfg(not(windows))] -const EOF: &str = "CTRL+D"; - -#[cfg(windows)] -const EOF: &str = "CTRL+Z"; diff --git a/crates/advotrackerdb/src/bin/search_ldap.rs b/crates/advotrackerdb/src/bin/search_ldap.rs deleted file mode 100644 index 3fa26d4..0000000 --- a/crates/advotrackerdb/src/bin/search_ldap.rs +++ /dev/null @@ -1,33 +0,0 @@ -// source: https://github.com/inejge/ldap3 -//use std::error::Error; - -//use ldap3::{LdapConn, Scope, SearchEntry}; - -fn main() { - println!("search ldap ..."); - /* - match do_search() { - Ok(_) => (), - Err(e) => println!("{}", e), - } - } - - fn do_search() -> Result<(), Box> { - println!("do_search ..."); - /* - let ldap = LdapConn::new("ldap://localhost:2389")?; - let (rs, _res) = ldap - .search( - "ou=Places,dc=example,dc=org", - Scope::Subtree, - "(&(objectClass=locality)(l=ma*))", - vec!["l"], - )? - .success()?; - for entry in rs { - println!("{:?}", SearchEntry::construct(entry)); - } - */ - Ok(()) - */ -} diff --git a/crates/advotrackerdb/src/functions/db_connection.rs b/crates/advotrackerdb/src/functions/db_connection.rs deleted file mode 100644 index 9c3f91f..0000000 --- a/crates/advotrackerdb/src/functions/db_connection.rs +++ /dev/null @@ -1,42 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -//use diesel::debug_query; -use diesel::prelude::*; -use diesel::sqlite::SqliteConnection; -use diesel::sqlite::Sqlite; -use dotenv::dotenv; -use std::env; - -/// establish a sqlite connection -pub fn establish_connection() -> SqliteConnection { - // load our .env file - dotenv().ok(); - - // set database_url to the given DATABASE_URL env variable - let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); - - // establish a new SQLite connection (taking the reference from database_url) - SqliteConnection::establish(&database_url) - .unwrap_or_else(|_| panic!("Error connecting to {}", &database_url)) - /* - * WIP: integrate tracing! - trace!( - target: "diesel", - type: "Sqlite3", - status: "connected" - ); - */ -} - -/// show the sql query -pub fn show_query(query: &T) -where - T: diesel::query_builder::QueryFragment, -{ - dbg!(diesel::debug_query::(&query)); -} diff --git a/crates/advotrackerdb/src/functions/harms.rs b/crates/advotrackerdb/src/functions/harms.rs deleted file mode 100644 index fb1a81e..0000000 --- a/crates/advotrackerdb/src/functions/harms.rs +++ /dev/null @@ -1,196 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -//#[cfg(test)] - -use chrono::{Local, NaiveDateTime}; -use diesel; -use diesel::debug_query; -use diesel::dsl::*; -use diesel::prelude::*; -use diesel::sqlite::{Sqlite, SqliteConnection}; -use diesel::{QueryDsl, RunQueryDsl}; -use std::error::Error; - -use crate::models::harms::{Harm, NewHarm}; -use crate::schema::harms; -use crate::schema::harms::dsl::*; -use crate::schema::harms::*; - -impl Harm { - // implement CRUD-Functions - // new- -> Create - // get- -> Read - // set- -> Update - // remove- -> Delete - - /// create a new harm record - pub fn new( - param_id_harm: &str, - param_id_policyholder: Option<&str>, - param_id_callback: Option<&str>, - param_date_fallback: Option, - param_date_recording: NaiveDateTime, - param_id_user: i32, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let struct_harm = NewHarm { - id_harm: param_id_harm, - id_policyholder: param_id_policyholder, - id_callback: param_id_callback, - date_fallback: param_date_fallback, - date_recording: param_date_recording, - id_user: param_id_user, - date_created: Some(Local::now().naive_local()), - id_user_changed: param_id_user, - date_changed: Some(Local::now().naive_local()), - }; - - diesel::insert_into(harms::table) - .values(struct_harm) - .execute(connection)?; - - Ok(()) - } - - /* - pub fn delete(param_hame_id: i32, connection: &SqliteConnection) -> Result<(), Box> { - diesel::delete(dsl::harms.filter(dsl::id.eq(param_role_id)).find(id)).execute(connection)?; - - Ok(()) - - // alternative: - // let old_count = get_count(); - // assert_eq!(old_count.map(|count| count - 1), get_count()); - } - */ - - /// get list of all harm record - pub fn get_all(connection: &SqliteConnection) -> Box> { - Box::new( - harms - .order(harms::id.asc()) - .load::(connection) - .expect("Error loading harms"), - ) - } - - /// get harm record - pub fn get( - param_id_harm: &str, - connection: &SqliteConnection, - ) -> Result, Box> { - let query = harms - .filter(id_harm.eq(param_id_harm)) - .load::(connection) - .expect("Error loading harm"); - debug_query::(&query); - - Ok(query) - } - - /// update harm record - pub fn update( - param_id: i32, - param_id_harm: &str, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let query = diesel::update(harms.filter(id.eq(param_id))) - .set(id_harm.eq(param_id_harm)) - .execute(connection); - - debug_query::(&query); - - Ok(()) - } -} - -/// set a test harm record -pub fn set_harms_single_column(connection: &SqliteConnection) -> QueryResult { - insert_into(harms) - .values(id_harm.eq("123456789")) - .execute(connection) -} - -#[test] -/// examine the test harm record -fn examine_set_harms_single_column() { - let query = insert_into(harms).values(id_harm.eq("123456789")); - let sql = "INSERT INTO `harms` (`id_harm`) VALUES (?) \ - -- binds: [\"123456789\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set multiple collumns for the test harm record -pub fn set_harms_multi_column(connection: &SqliteConnection) -> QueryResult { - insert_into(harms) - .values(( - id_harm.eq("123456789"), - id_policyholder.eq("110-123456789"), - id_callback.eq("0221 93123456789"), - )) - .execute(connection) -} - -// #[test] -// fn examine_set_harms_multi_column() { -// let query = insert_into(harms).values(( -// id_harm.eq("123456789"), -// id_policyholder.eq("110-123456789"), -// id_callback.eq("0221 93123456789"), -// )); -// let sql = "INSERT INTO `harms` (`id_harm`, `id_policyholder`, `id_callback`) \ -// VALUES (?, ?, ?) \ -// -- binds: [\"123456789\", \"110-123456789\", \"0221 93123456789\"]"; -// assert_eq!(sql, debug_query::(&query).to_string()); -// } - -// pub fn set_harms_struct_json(connection: &SqliteConnection) -> Result<(), Box> { -// let json = r#"{ "id_harm": "123456789", "id_policyholder": "110-123456789", "id_callback": "0221 92123456789", "date_recording": "2019-11-16 20:00:15.114957766"}"#; -// //let harm_struct = serde_json::from_str::(json)?; -// let harm_struct = serde_json::from_str::<'_>(json)?; - -// insert_into(harms) -// .values(&harm_struct) -// .execute(connection)?; - -// Ok(()) -// } - -// #[test] -// fn examine_set_harms_struct_json() { -// let json = r#"{ "id_harm": "123456789", "id_policyholder": "110-123456789", "id_callback": "0221 93123456789", "date_recording": "2019-11-19T00:08:00", "id_user": 102, "id_user_changed": 101 }"#; -// let harm_struct = serde_json::from_str::(json).unwrap(); -// let query = insert_into(harms).values(&harm_struct); -// let sql = -// "INSERT INTO `harms` (`id_harm`, `id_policyholder`, `id_callback`, `date_recording`, `id_user`, `id_user_changed`) \ -// VALUES (?, ?, ?, ?, ?, ?) \ -// -- binds: [\"123456789\", \"110-123456789\", \"0221 93123456789\", 2019-11-19T00:08:00, 102, 101]"; -// assert_eq!(sql, debug_query::(&query).to_string()); -// } - -// pub fn set_harms_struct_json_option(connection: &SqliteConnection) -> Result<(), Box> { -// let json = r#"{ "id_harm": "123456789", "id_policyholder": null, "id_callback": null, "date_recording": "2019-11-19T00:08:00", 102, 101 }"#; -// let harm_struct = serde_json::from_str::<'_>(json)?; - -// insert_into(harms) -// .values(&harm_struct) -// .execute(connection)?; - -// Ok(()) -// } - -// #[test] -// fn examine_set_harms_struct_json_option() { -// let json = r#"{ "id_harm": "123456789", "id_policyholder": null, "id_callback": null, "date_recording": "2019-11-19T00:08:00", "id_user": 102, "id_user_changed": 101 }"#; -// let harm_struct = serde_json::from_str::(json).unwrap(); -// let query = insert_into(harms).values(&harm_struct); -// let sql = "INSERT INTO `harms` (`id_harm`, `date_recording`, `id_user`, `id_user_changed`) \ -// VALUES (?, ?, ?, ?) \ -// -- binds: [\"123456789\", 2019-11-19T00:08:00, 102, 101]"; -// assert_eq!(sql, debug_query::(&query).to_string()); -// } diff --git a/crates/advotrackerdb/src/functions/mod.rs b/crates/advotrackerdb/src/functions/mod.rs deleted file mode 100644 index c62116d..0000000 --- a/crates/advotrackerdb/src/functions/mod.rs +++ /dev/null @@ -1,25 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -// table specific functions -/// module handling database connections -pub mod db_connection; - -/// module handling harms -pub mod harms; - -/// module handling roles -pub mod roles; - -/// module handling user roles -pub mod user_roles; - -/// module handling users -pub mod users; - -/// module handling functionalty tests -pub mod tests; diff --git a/crates/advotrackerdb/src/functions/roles.rs b/crates/advotrackerdb/src/functions/roles.rs deleted file mode 100644 index 718c0b0..0000000 --- a/crates/advotrackerdb/src/functions/roles.rs +++ /dev/null @@ -1,105 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -//#[cfg(test)] - -use chrono::Local; -use diesel::debug_query; -use diesel::prelude::*; -use diesel::sqlite::{Sqlite, SqliteConnection}; -use diesel::{QueryDsl, RunQueryDsl}; -use std::error::Error; - -//use crate::functions::establish_connection; -//use crate::models::roles::{NewRole, Role, RoleList}; -use crate::models::roles::{NewRole, Role}; -use crate::schema::roles; -use crate::schema::roles::dsl::*; -use crate::schema::roles::*; - -impl Role { - // implement CRUD-Functions for our trait - // new- -> Create - // show- -> Read - // update- -> Update - // delete- -> Delete - - /// create a new role record - pub fn new( - param_role_name: &str, - param_id_user_changed: i32, - connection: &SqliteConnection, - ) -> Result<(), Box> { - //let row = Self::get(param_role_name, param_user_id_changed, &connection); - //if row.len() == 0 { - // create a new role row - let struct_role = NewRole { - name: param_role_name, - date_created: Some(Local::now().naive_local()), - id_user_changed: param_id_user_changed, - date_changed: Some(Local::now().naive_local()), - }; - diesel::insert_into(roles::table) - .values(struct_role) - .execute(connection)?; - - Ok(()) - //else { - // Err(("row already exists!")) - //} - } - - /* - pub fn delete(param_role_id: i32, connection: &SqliteConnection) -> Result<(), Box> { - diesel::delete(dsl::roles.filter(dsl::id.eq(param_role_id)).find(id)).execute(connection)?; - - Ok(()) - - // alternative: - // let old_count = get_count(); - // assert_eq!(old_count.map(|count| count - 1), get_count()); - } - */ - - /// get all role records - pub fn get_all(connection: &SqliteConnection) -> Box> { - Box::new( - roles - .order(roles::id.asc()) - .load::(connection) - .expect("Error loading roles"), - ) - } - - /// get a role record - pub fn get( - param_role_name: &str, - connection: &SqliteConnection, //) -> Vec { - ) -> Result, Box> { - let query = roles - .filter(name.eq(param_role_name)) - .load::(connection) - .expect("Error loading roles"); - debug_query::(&query); - - Ok(query) - } - - /// update a role record - pub fn update( - param_id: i32, - param_role_name: &str, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let query = diesel::update(roles.filter(id.eq(param_id))) - .set(name.eq(param_role_name)) - .execute(connection); - debug_query::(&query); - - Ok(()) - } -} diff --git a/crates/advotrackerdb/src/functions/tests.rs b/crates/advotrackerdb/src/functions/tests.rs deleted file mode 100644 index 60c95f6..0000000 --- a/crates/advotrackerdb/src/functions/tests.rs +++ /dev/null @@ -1,192 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -#[cfg(test)] -use diesel::debug_query; -use diesel::dsl::*; -use diesel::prelude::*; -#[cfg(test)] -use diesel::sqlite::Sqlite; -#[cfg(test)] -use diesel::sqlite::SqliteConnection; - -use crate::schema; - -/// set user defaults -pub fn set_users_default_values(connection: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users).default_values().execute(connection) -} - -#[test] -/// examine results when setting user defaults -fn examine_set_users_default_values() { - use schema::users::dsl::*; - - let query = insert_into(users).default_values(); - let sql = "INSERT INTO `users` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set user defaults -pub fn set_roles_default_values(connection: &SqliteConnection) -> QueryResult { - use schema::roles::dsl::*; - - insert_into(roles).default_values().execute(connection) -} - -#[test] -/// examine results when setting user defaults -fn examine_set_roles_default_values() { - use schema::roles::dsl::*; - - let query = insert_into(roles).default_values(); - let sql = "INSERT INTO `roles` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set user roles defaults -pub fn set_user_roles_default_values(connection: &SqliteConnection) -> QueryResult { - use schema::user_roles::dsl::*; - - insert_into(user_roles).default_values().execute(connection) -} - -#[test] -/// examine results when setting user roles defaults -fn examine_set_user_roles_default_values() { - use schema::user_roles::dsl::*; - - let query = insert_into(user_roles).default_values(); - let sql = "INSERT INTO `user_roles` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set harm defaults -pub fn set_harms_default_values(connection: &SqliteConnection) -> QueryResult { - use schema::harms::dsl::*; - - insert_into(harms).default_values().execute(connection) -} - -#[test] -/// examine results when setting harm defaults -fn examine_set_harms_default_values() { - use schema::harms::dsl::*; - - let query = insert_into(harms).default_values(); - let sql = "INSERT INTO `harms` DEFAULT VALUES -- binds: []"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set a users email-confirmed column -pub fn set_users_email_confirmed(connection: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - diesel::update(users) - .set(email_confirmed.eq(1)) - .execute(connection) -} - -/// set a user column -pub fn set_users_single_column(connection: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users) - .values(alias_name.eq("Hiedemann")) - .execute(connection) -} - -#[test] -/// examine results when setting a single user column -fn examine_set_users_single_column() { - use schema::users::dsl::*; - - let query = insert_into(users).values(alias_name.eq("Hiedemann")); - let sql = "INSERT INTO `users` (`alias_name`) VALUES (?) \ - -- binds: [\"Hiedemann\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/// set multiple user columns -pub fn set_users_multiple_columns(connection: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users) - .values(( - first_name.eq("Lothar"), - last_name.eq("Schlömer"), - alias_name.eq("102"), - )) - .execute(connection) -} - -#[test] -/// examine results when setting multiple user columns -fn examine_set_user_multiple_columns() { - use schema::users::dsl::*; - - let query = diesel::insert_into(users).values(( - first_name.eq("Lothar"), - last_name.eq("Schlömer"), - alias_name.eq("102"), - )); - let sql = "INSERT INTO `users` (`first_name`, `last_name`, `alias_name`) \ - VALUES (?, ?, ?) \ - -- binds: [\"Lothar\", \"Schlömer\", \"102\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} - -/* -#[test] -/// examine results when setting user columns via json -fn examine_set_user_struct_json() { - use crate::models::users::NewUser; - use schema::users::dsl::*; - //use serde_json::json; - - /*_let json_struct = json!({ - "last_name": "Knocke", - "first_name": "Daniela", - "alias_name": "Sekretariat", - "email": "knocke@kanzlei.hiedemann.de", - "email_confirmed": 1, - "password_hash": "", - "initials": "dkn", - "date_create": "2019-11-16 20:00:14.114957766", - "id_changed": 1, - "date_changed": "2019-11-16 20:00:15.114957766", - });*/ - - let json = r#"{ "last_name": "Knocke", "first_name": "Daniela", "alias_name": "Sekretariat", "email": "knocke@kanzlei.hiedemann.de", "email_confirmed": 1, "initials": "dkn", "password_hash": "testpassword", "date_created": "2019-11-16 20:00:14.114957766", "id_changed": 1", "date_changed": "2019-11-16 20:00:15.114957766" }"#; - let user_struct = serde_json::from_str::(json).unwrap(); - let query = diesel::insert_into(users).values(&user_struct); - //let query = serde_json::from_str::(&json_struct); - let sql = "diesel::INSERT INTO `users` (`last_name`, `first_name`, `alias_name`, `email`, `email_confirmed`, `initials`, `password_hash`, `date_create`, `id_changed`, `data_updated`) \ - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) \ - -- binds: [\"Knocke\", \"Daniela\", \"Sekretariat\", \"knocke@kanzlei.hiedemann.de\", 1, \"dkn\", \"testpassword\", \"2019-11-16 20:00:14.114957766\", 1, \"2019-11-16 20:00:15.114957766\"]"; - assert_eq!(sql, debug_query::(&query).to_string()); -} -*/ - -#[test] -/// examine results when setting user columns via json options -fn examine_set_user_struct_json_option() { - //use crate::models::users::NewUser; - use schema::users::dsl::*; - use serde_json; - - let json = r#"{ "last_name": "Knocke", "first_name": null, "alias_name": null, "email": "knocke@kanzlei.hiedemann.de", "email_confirmed": 1, "initials": "dkn", "password_hash": "test", "date_created": null, "id_changed": 1, "date_changed": null }"#; - let user_struct = serde_json::from_str::<'_>(json).unwrap(); - let query = diesel::insert_into(users).values(&user_struct); - let sql = "INSERT INTO `users` (`last_name`, `email`, `email_confirmed`, `initials`, `password_hash`, `id_changed`) \ - VALUES (?, ?, ?, ?, ?, ?) \ - -- binds: [\"Knocke\", \"knocke@kanzlei.hiedemann.de\", 1, \"dkn\", \"test\", 1]"; - //assert_eq!(sql, debug_query::(&query).to_string()); - assert_eq!(sql, debug_query::(&query).to_string()); -} diff --git a/crates/advotrackerdb/src/functions/user_roles.rs b/crates/advotrackerdb/src/functions/user_roles.rs deleted file mode 100644 index fa2c6c7..0000000 --- a/crates/advotrackerdb/src/functions/user_roles.rs +++ /dev/null @@ -1,79 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -//#[cfg(test)] - -use diesel::debug_query; -use diesel::prelude::*; -use diesel::sqlite::{Sqlite, SqliteConnection}; -use diesel::{QueryDsl, RunQueryDsl}; -use std::error::Error; - -use crate::models::user_roles::{NewUserRole, UserRole}; -use crate::schema::user_roles; -use crate::schema::user_roles::dsl::*; -use crate::schema::user_roles::*; - -impl UserRole { - /// create a new user role record - pub fn new( - param_id_user: i32, - param_id_role: i32, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let struct_user_role = NewUserRole { - id_user: param_id_user, - id_role: param_id_role, - //date_created: Some(Local::now().naive_local()), - //id_user_changed: param_id_user_changed, - //date_changed: Some(Local::now().naive_local()), - }; - diesel::insert_into(user_roles::table) - .values(struct_user_role) - .execute(connection)?; - - Ok(()) - } - - /// get a list of all user role records - pub fn get_all(connection: &SqliteConnection) -> Box> { - Box::new( - user_roles - .order(user_roles::id_user.asc()) - .load::(connection) - .expect("Error loading user_roles"), - ) - } - - /// get a user role record - pub fn get( - param_id_role: i32, - connection: &SqliteConnection, - ) -> Result, Box> { - let query = user_roles - .filter(id_role.eq(param_id_role)) - .load::(connection) - .expect("Error loading user_roles"); - debug_query::(&query); - - Ok(query) - } - - /// update a user role record - pub fn update( - param_id_user: i32, - param_id_role: i32, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let query = diesel::update(user_roles.filter(id_user.eq(param_id_user))) - .set(id_role.eq(param_id_role)) - .execute(connection); - debug_query::(&query); - - Ok(()) - } -} diff --git a/crates/advotrackerdb/src/functions/users.rs b/crates/advotrackerdb/src/functions/users.rs deleted file mode 100644 index 4ab983c..0000000 --- a/crates/advotrackerdb/src/functions/users.rs +++ /dev/null @@ -1,189 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use bcrypt::{hash, DEFAULT_COST}; -use chrono::Local; -use diesel::debug_query; -use diesel::prelude::*; -use diesel::sqlite::Sqlite; -#[cfg(test)] -use diesel::sqlite::SqliteConnection; -use diesel::{QueryDsl, RunQueryDsl}; -// WIP: json functionality need work! -// use serde_json; -use std::error::Error; - -//use crate::models::users::{NewUser, RegisterUser, User, UserList}; -use crate::models::users::{NewUser, RegisterUser, User}; -use crate::schema::users; -use crate::schema::users::dsl::*; - -impl User { - // implement CRUD-Functions - // new- -> Create - // get- -> Read - // set- -> Update - // remove- -> Delete - - /// create a new user record - pub fn new( - param_last_name: &str, - param_first_name: Option<&str>, - param_alias_name: Option<&str>, - param_email: Option<&str>, - param_email_confirmed: Option, - param_password_hash: &str, - param_initials: Option<&str>, - param_id_user: i32, - connection: &SqliteConnection, - ) -> Result<(), Box> { - let struct_user = NewUser { - last_name: param_last_name, - first_name: param_first_name, - alias_name: param_alias_name, - email: param_email, - email_confirmed: param_email_confirmed, - password_hash: param_password_hash, - //password_hash: Self::hash_password(param_password_hash.to_string()).unwrap(), - initials: param_initials, - date_created: Some(Local::now().naive_local()), - id_changed: param_id_user, - date_changed: Some(Local::now().naive_local()), - }; - - diesel::insert_into(users::table) - .values(struct_user) - .execute(connection)?; - - Ok(()) - } - - /// get a list of all user records - pub fn get_all(connection: &SqliteConnection) -> Box> { - Box::new( - users - .order(users::id.asc()) - .load::(connection) - .expect("Error loading users"), - ) - } - - /* - pub fn get( - param_last_name: &str, - connection: &SqliteConnection, - ) -> Result, Box> { - let query = users - .filter(last_name.eq(param_last_name)) - .load::(connection) - .expect("Error loading users"); - debug_query::(&query); - - Ok(query) - } - */ - - /// update a user record - pub fn update(param_id: i32, connection: &SqliteConnection) -> Result<(), Box> { - let query = users.filter(id.eq(param_id)).execute(connection)?; - - debug_query::(&query); - - Ok(()) - } - - /// create a hash value for the user password - pub fn hash_password(plain: &str) -> Result> { - Ok(hash(plain, DEFAULT_COST)?) - } - - /// update the confirmation status of a user emak address - pub fn set_users_email_confirmed(connection: &SqliteConnection) -> QueryResult { - diesel::update(users) - .set(email_confirmed.eq(1)) - .execute(connection) - } - - /// update a singel column of a given user record - pub fn set_users_single_column(connection: &SqliteConnection) -> QueryResult { - diesel::insert_into(users) - .values(alias_name.eq("Hiedemann")) - .execute(connection) - } - - /// update multiple columns of a given user record - pub fn set_users_multiple_columns(connection: &SqliteConnection) -> QueryResult { - diesel::insert_into(users) - .values(( - first_name.eq("Lothar"), - last_name.eq("Schlömer"), - alias_name.eq("102"), - )) - .execute(connection) - } - - // /// update multiple columns of a given user record with a json string - // pub fn set_user_struct_json(connection: &SqliteConnection) -> Result<(), Box> { - // let json = r#"{ "first_name": "Daniela", "last_name": "Knocke", "alias_name": "Sekretariat", "email": "knocke@kanzlei.hiedemann.de", "email_confirmed": 1, "password_hash": "", "initials": "dkn" }"#; - // //let user_struct = serde_json::from_str::(json)?; - // let user_struct = serde_json::from_str::<'_>(json)?; - - // diesel::insert_into(users) - // .values(&user_struct) - // .execute(connection)?; - - // Ok(()) - // } - - // pub fn set_user_struct_json_option( - // connection: &SqliteConnection, - // ) -> Result<(), Box> { - // let json = r#"{ "first_name": null, "last_name": "Knocke", "alias_name": null, "email": "knocke@kanzlei.hiedemann.de", "email_confirmed": 1, "password_hash": "", "initials": "dkn", "id_changed": 1 }"#; - // let user_form = serde_json::from_str::<'_>(json)?; - - // diesel::insert_into(users) - // .values(&user_form) - // .execute(connection)?; - - // Ok(()) - //} -} - -impl<'a> RegisterUser<'a> { - //pub fn validates(self) -> Result<(), Error> { - /// validate the password hash - pub fn validates(self) -> Result, &'static str> { - let password_are_equal = self.password_hash == self.password_confirmation; - let password_not_empty = self.password_hash.len() > 0; - if password_are_equal && password_not_empty { - Ok(self) - //else if !password_are_equal { - // Err("Password and Password Confirmation does not match") - } else { - Err("Wrong Password, check it is not empty") - } - } - - /* - pub fn get_all( - connection: &SqliteConnection, - //) -> Product { - //) -> Box> { - ) -> Result, Box> { - let data = users - .filter(last_name.like("H%")) - //.order(users::id.desc()) - .load(connection)?; - debug_query::(&data); - - Ok(data) - - // We return a value by leaving it without a comma - //UserList(all_users) - } - */ -} diff --git a/crates/advotrackerdb/src/functions/wip.rs b/crates/advotrackerdb/src/functions/wip.rs deleted file mode 100644 index 02c555f..0000000 --- a/crates/advotrackerdb/src/functions/wip.rs +++ /dev/null @@ -1,139 +0,0 @@ -// WIP - -use diesel::dsl::*; -use diesel::prelude::*; -//#[cfg(test)] -//use diesel::sqlite::Sqlite; -//#[cfg(test)] -//use diesel::sqlite::SqliteConnection; -//use serde_derive; -//use std::error::Error; - -use crate::schema; - -pub fn set_users_single_column_batch(conn: &SqliteConnection) -> QueryResult { - use schema::users::dsl::*; - - insert_into(users) - .values(&vec![last_name.eq("Zerres"), last_name.eq("Plank")]) - .execute(conn) -} - -/* -#[test] -fn examine_sql_users_insert_get_results() { - use diesel::result::Error; - - let connection = establish_connection(); - connection.test_transaction::<_, Error, _>(|| { - use diesel::select; - use diesel::dsl; - use chrono::NaiveDateTime; - use schema::users::dsl::*; - use models::insert::NewUser; - //use models::User; - - //let now = select(dsl::now).get_result::(&connection)?; - - let inserted_users = connection.transaction::<_, Error, _>(|| { - let inserted_count = insert_into(users) - .values(&vec![ - (id.eq(1), last_name.eq("Hiedemann"), first_name.eq("Eric"), - alias.eq("Eric.Hiedemann"), email_confirmed.eq(0),initials.eq("EH")), - (id.eq(2), last_name.eq("Schlömer"), first_name.eq("Lothar"), - alias.eq("Lothar.Schlömer"), email_confirmed.eq(0), initials.eq("LS")), - ]) - .execute(&connection)?; - - Ok(users - .order(id.desc()) - .limit(inserted_count as i64) - .load(&connection)? - .into_iter() - .rev() - .collect::>()) - })?; - - let expected_users = vec![ - NewUser { - //id: 1, - last_name: "Hiedemann".into(), - first_name: "Eric".into(), - alias: "Eric.Hiedemann".into(), - email: "".into(), - email_confirmed: 0, - password_hash: "".into(), - initials: "EH".into(), - //date_created: now, - //date_updated: now, - }, - NewUser { - //id: 2, - last_name: "Schlömer".into(), - first_name: "Lothar".into(), - alias: "Lothar.Schlömer".into(), - email: "".into(), - email_confirmed: 0, - password_hash: "".into(), - initials: ("LS").into(), - //date_created: now, - //date_updated: now, - }, - ]; - //assert_eq!(expected_users, inserted_users); - - Ok(()) - }); -} -*/ - -/* -pub fn create_numberharm<'a>(connection: &SqliteConnection, NumberHarm: &'a str) { - let numberHarm = models::NewNumberHarm { NumberHarm }; - - diesel::insert_into(schema::NumberHarm::table) - .values(&numberHarm) - .execute(connection) - .expect("Error inserting new task"); -} - */ - -/* -pub fn create_userid<'a>(connection: &SqliteConnection, User: &'a str) { - let user = models::NewUser { User }; - - diesel::insert_into(schema::User::table) - .values(&user) - .execute(connection) - .expect("Error inserting new task"); -} - */ - -/* -pub fn create_userclaimid<'a>(connection: &SqliteConnection, UserClaim: &'a str) { - let userClaim = models::NewUserClaim { UserClaim }; - - diesel::insert_into(schema::UserClaim::table) - .values(&userClaim) - .execute(connection) - .expect("Error inserting new task"); -} - -pub fn create_userrole<'a>(connection: &SqliteConnection, UserRole: &'a str) { - let userRole = models::NewUserRole { UserRole }; - - diesel::insert_into(schema::UserRole::table) - .values(&userRole) - .execute(connection) - .expect("Error inserting new task"); -} - -pub fn create_useruserrole<'a>(connection: &SqliteConnection, UserUserRole: &'a str) { - let userUserRole = models::NewUserUserRole { UserUserRole }; - - diesel::insert_into(schema::UserUserRole::table) - .values(&userUserRole) - .execute(connection) - .expect("Error inserting new task"); -} -*/ diff --git a/crates/advotrackerdb/src/lib.rs b/crates/advotrackerdb/src/lib.rs deleted file mode 100644 index 837bd08..0000000 --- a/crates/advotrackerdb/src/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2019 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -#![warn(missing_docs, rust_2018_idioms, rust_2018_compatibility)] -#![recursion_limit="256"] - -#![warn(clippy::pedantic)] -//#![warn(clippy::nursery)] - -//! advotracker database -//! Supports lawyers to capture relevant data encountered during an -//! online legal advice. -//! This SQL database backend will consuming Diesel to make use of -//! sql features. - -// ?? is this needed in edition 2018 anymore ?? -#[macro_use] -extern crate diesel; - -/// SQL functions and methods -pub mod functions; - -/// SQL models definitions -pub mod models; - -/// SQL schema definitions -pub mod schema; diff --git a/crates/advotrackerdb/src/missing_docs.patch b/crates/advotrackerdb/src/missing_docs.patch deleted file mode 100644 index 326d3e9..0000000 --- a/crates/advotrackerdb/src/missing_docs.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- src/schema.rs.orig 2020-06-30 13:35:01.826955973 +0200 -+++ src/schema.rs 2020-06-30 13:35:26.640286611 +0200 -@@ -1,3 +1,5 @@ -+#![allow(missing_docs)] -+ - table! { - claims (id) { - id -> Integer, diff --git a/crates/advotrackerdb/src/models/claims.rs b/crates/advotrackerdb/src/models/claims.rs deleted file mode 100644 index 7042272..0000000 --- a/crates/advotrackerdb/src/models/claims.rs +++ /dev/null @@ -1,32 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use crate::schema::claim; - -/// Stucture of a claim record -#[derive(Debug, Queryable)] -pub struct Claim { - /// the auto incremented primary index - pub id: i32, - /// the user id - pub user_id: i32, - /// the type of the user - pub type_: Option, - /// the name string of the claim type - pub value: Option, -} - -/// Structure of a new claim record -#[derive(Debug, Deserialize, Insertable)] -#[table_name = "claims"] -pub struct NewClaim<'a> { - //pub user_id: &'a i32, - /// Lifetime to the claim type - pub type_: Option<&'a str>, - /// Lifetime to the name of the claim type - pub value: Option<&'a str>, -} diff --git a/crates/advotrackerdb/src/models/harms.rs b/crates/advotrackerdb/src/models/harms.rs deleted file mode 100644 index 4c1f9b9..0000000 --- a/crates/advotrackerdb/src/models/harms.rs +++ /dev/null @@ -1,60 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use chrono::NaiveDateTime; -use serde::{Deserialize, Serialize}; - -use crate::schema::harms; - -/// Manage harm records (SELECT, UPDATE, DELETE) -#[derive(AsChangeset, Debug, Deserialize, Identifiable, PartialEq, Queryable)] -pub struct Harm { - /// the auto incremented primary index - pub id: i32, - /// the harm name - pub id_harm: String, - /// the policy holder name - pub id_policyholder: Option, - /// the callback number - pub id_callback: Option, - /// the fallback date - pub date_fallback: Option, - /// the date the record was recorded - pub date_recording: NaiveDateTime, - /// the user id - pub id_user: i32, - /// the date the record was created - pub date_created: NaiveDateTime, - /// the user id that has chanced the record - pub id_user_changed: i32, - /// the date the record was changed - pub date_changed: NaiveDateTime, -} - -/// Structure of a new harm -#[derive(Debug, Deserialize, Insertable, Serialize)] -#[table_name = "harms"] -pub struct NewHarm<'a> { - /// Lifetime to the harm name - pub id_harm: &'a str, - /// Lifetime to the policyholder - pub id_policyholder: Option<&'a str>, - /// Lifetime to the callback number - pub id_callback: Option<&'a str>, - /// the fallback date - pub date_fallback: Option, - /// the date the record was recorded - pub date_recording: NaiveDateTime, - /// the user id that has chanced the record - pub id_user: i32, - /// the date the record was created - pub date_created: Option, - /// the user id that has chanced the record - pub id_user_changed: i32, - /// Lifetime to the date the record was changed - pub date_changed: Option, -} diff --git a/crates/advotrackerdb/src/models/insert.rs b/crates/advotrackerdb/src/models/insert.rs deleted file mode 100644 index 29f48d2..0000000 --- a/crates/advotrackerdb/src/models/insert.rs +++ /dev/null @@ -1,15 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use crate::schema::*; -//use chrono::NaiveDateTime; -use serde_derive::*; -//use types::*; -//use crate::models::types::*; -//use serde::*; - -pub mod types; diff --git a/crates/advotrackerdb/src/models/mod.rs b/crates/advotrackerdb/src/models/mod.rs deleted file mode 100644 index eb33c97..0000000 --- a/crates/advotrackerdb/src/models/mod.rs +++ /dev/null @@ -1,22 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -/// defining roles -pub mod roles; - -/// defining harms -pub mod harms; - -/// defining users -pub mod users; - -/// defining user roles -pub mod user_roles; - -// methods used for: INSERT -//pub mod insert; -//use insert::types::*; diff --git a/crates/advotrackerdb/src/models/roles.rs b/crates/advotrackerdb/src/models/roles.rs deleted file mode 100644 index c0d9003..0000000 --- a/crates/advotrackerdb/src/models/roles.rs +++ /dev/null @@ -1,47 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use chrono::NaiveDateTime; -use serde::{Deserialize, Serialize}; - -use crate::schema::roles; - -/// Structure of a role record -#[derive(AsChangeset, Debug, Deserialize, Identifiable, PartialEq, Queryable)] -#[table_name = "roles"] -pub struct Role { - /// The auto incremented primary index - pub id: i32, - /// The role name - pub name: String, - /// Creation date of the role - pub date_created: NaiveDateTime, - /// The user id, that has changed the record - pub id_user_changed: i32, - /// The timestamp, when the record was changed - pub date_changed: NaiveDateTime, -} - -/// Structure of a new claim record -#[derive(Debug, Deserialize, Insertable, Serialize)] -#[table_name = "roles"] -pub struct NewRole<'a> { - /// Lifetime of the role name - pub name: &'a str, - /// Creation date of the role - pub date_created: Option, - /// The user id, that has changed the record - pub id_user_changed: i32, - /// The timestamp, when the record was changed - pub date_changed: Option, -} - -// we couldn't do a RoleList implementation for a Vector -// because we don't own it, RoleList is using the newtype pattern - -//#[derive(Debug, Deserialize, Serialize)] -//pub struct RoleList(pub Vec); diff --git a/crates/advotrackerdb/src/models/traits/mod.rs b/crates/advotrackerdb/src/models/traits/mod.rs deleted file mode 100644 index 1d086e5..0000000 --- a/crates/advotrackerdb/src/models/traits/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -// WIP -// /// traits for the user model -// pub mod traits; diff --git a/crates/advotrackerdb/src/models/traits/trait.rs b/crates/advotrackerdb/src/models/traits/trait.rs deleted file mode 100644 index 6e16c32..0000000 --- a/crates/advotrackerdb/src/models/traits/trait.rs +++ /dev/null @@ -1,192 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -// bring models into scope -use diesel::backend::Backend; -use diesel::deserialize; -use diesel::deserialize::FromSql; -use diesel::serialize; -use diesel::serialize::{Output, ToSql}; -use diesel::sql_types::Integer; -//use serde::Serializer; -use serde; - -//use super::models::ConfirmState; -//use crate::db::models::ConfirmState; - -// trait: meaningful enum/types for email confirmation states -// in analogy: https://noyez.gitlab.io/post/2018-08-05-a-small-custom-bool-type-in-diesel/ - -//#[repr(i32)] -#[derive(AsExpression, Copy, Clone, Debug, PartialEq, FromSqlRow)] -#[sql_type = "Integer"] -pub enum ConfirmState { - Unconfirmed = 0, - Confirmed = 1, - Authorized = 2, - Blocked = 3, -} - -impl ToSql for ConfirmState -where - DB: Backend, - i32: ToSql, -{ - fn to_sql(&self, out: &mut Output) -> serialize::Result { - let int_value; - match &self { - ConfirmState::Unconfirmed => int_value = 0, - ConfirmState::Confirmed => int_value = 1, - ConfirmState::Authorized => int_value = 2, - ConfirmState::Blocked => int_value = 3, - } - println!("Writing to sql: i32:{:?}", &int_value); - >::to_sql(&int_value, out) - } -} - -/* -impl FromSql - for ConfirmState -{ - fn from_sql( - bytes: Option<&::RawValue>, - ) -> diesel::deserialize::Result { - >::from_sql() - .map(ConfirmState::Confirmed) - } -} - */ - -impl FromSql for ConfirmState -where - DB: Backend, - i32: FromSql, -{ - fn from_sql(bytes: Option<&DB::RawValue>) -> deserialize::Result { - match >::from_sql(bytes)? { - 0 => Ok(ConfirmState::Unconfirmed), - 1 => Ok(ConfirmState::Confirmed), - 2 => Ok(ConfirmState::Authorized), - 3 => Ok(ConfirmState::Blocked), - x => Err(format!("Unrecognized variant {}", x).into()), - } - } -} - -/* -// WIP - -impl FromSql for ConfirmState -where - DB: Backend, - i32: FromSql { - //fn from_sql(bytes: Option::RawValue) -> diesel::deserialize::Result { - fn from_sql( - bytes: Option<&::RawValue>, - ) -> diesel::deserialize::Result { - //println!("Reading from sql: bytes:{:?}", bytes); - match bytes { - >::from_sql(bytes) - .map(ConfirmState::Confirmed) - } - /* - Some(bytes) => if bytes[0] != 0 { - Ok(ConfirmState::Confirmed) } - else { Ok(ConfirmState::Unconfirmed) } - } - //>::from_sql(bytes).map(ConfirmState::Confirmed) - //fn from_sql(bytes: Option) -> diesel::deserialize::Result { - // println!("Reading from sql: bytes:{:?}", bytes); - // match bytes { - // Some(bytes) => if bytes[0] != 0 { - // Ok(ConfirmState::Confirmed) } - // else { Ok(ConfirmState::Unconfirmed) }, - // None => Ok(ConfirmState::Unconfirmed), - // } - */ - } -} - */ - -/* -impl> - diesel::deserialize::FromSql for ConfirmState -{ - fn from_sql(bytes: Option<&[u8]>) -> diesel::deserialize::Result { - >::from_sql( - bytes, - ) - .map($name) - } -} - */ - -struct ConfirmStateVisitor; -use serde::de::Deserialize; -use serde::de::{self, Visitor}; - -impl<'de> Visitor<'de> for ConfirmStateVisitor { - type Value = ConfirmState; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str("an integer or string of ", - "\"Unconfirmed (0)\",", - "\"Confirmed (1)\"", - "\"Authorized (2)\"", - "\"Blocked (3)\"."); - } - - //fn visit_bool(self, value: bool) -> Result - //where - // E: de::Error, - //{ - // match value { - // true => Ok(ConfirmState::Confirmed), - // false => Ok(ConfirmState::Unconfirmed), - // } - //} - - fn visit_i32(self, value: &'a i32) -> Result - where - E: de::Error, - { - match >::from_sql(bytes)? { - 0 => Ok(ConfirmState::Unconfirmed), - 1 => Ok(ConfirmState::Confirmed), - 2 => Ok(ConfirmState::Authorized), - 3 => Ok(ConfirmState::Blocked), - x => Err(format!("Unrecognized variant {}", x).into()), - 0 => Ok(ConfirmState::Confirmed), - false => Ok(ConfirmState::Unconfirmed), - } - } - fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { - match value { - //"Confirmed" | "Authorized" => Ok(ConfirmState::Confirmed), - //"Unconfirmed" | "Unauthorized" => Ok(ConfirmState::Unconfirmed), - "Unconfirmed" => Ok(ConfirmState::Unconfirmed), - "Confirmed" => Ok(ConfirmState::Confirmed), - "Authorized" => Ok(ConfirmState::Authorized), - "Bolcked" => Ok(ConfirmState::Blocked), - _s => Err(E::custom(format!("Unknown string value: {}", _s))), - } - } -} - -impl<'de> Deserialize<'de> for ConfirmState { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - deserializer.deserialize_any(ConfirmStateVisitor) - } -} diff --git a/crates/advotrackerdb/src/models/user_roles.rs b/crates/advotrackerdb/src/models/user_roles.rs deleted file mode 100644 index eee2ffc..0000000 --- a/crates/advotrackerdb/src/models/user_roles.rs +++ /dev/null @@ -1,28 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use crate::schema::user_roles; -use serde::Deserialize; - -/// Structure of a user role record -#[derive(Debug, Queryable, PartialEq)] -pub struct UserRole { - /// id of the referenced user - pub id_user: i32, - /// id of the referenced role - pub id_role: i32, -} - -/// Structure of a new user role record -#[derive(Deserialize, Insertable)] -#[table_name = "user_roles"] -pub struct NewUserRole { - /// id of the referenced user - pub id_user: i32, - /// id of the referenced role - pub id_role: i32, -} diff --git a/crates/advotrackerdb/src/models/users.rs b/crates/advotrackerdb/src/models/users.rs deleted file mode 100644 index 5d0437f..0000000 --- a/crates/advotrackerdb/src/models/users.rs +++ /dev/null @@ -1,98 +0,0 @@ -/* - * advotracker - Hotline tackingtool for Advocats - * - * Copyright 2020 Ralf Zerres - * SPDX-License-Identifier: (0BSD or MIT) - */ - -use chrono::NaiveDateTime; -use serde::{Deserialize, Serialize}; - -use crate::schema::users; - -/// Structure of a user record -#[derive(AsChangeset, Debug, Deserialize, Identifiable, PartialEq, Queryable, Serialize)] -pub struct User { - /// the auto incremented primary index - pub id: i32, - /// last name of the user - pub last_name: String, - // Option -> returns "None", if db value is null - /// first name of the user - pub first_name: Option, - /// alias of the user name - pub alias_name: Option, - /// users email address - pub email: Option, - /// confirmation state of users email address - pub email_confirmed: Option, - /// users initials - pub initials: Option, - /// users password hash - pub password_hash: Option, - /// timestamp when the record was created - pub date_created: NaiveDateTime, - /// user id that has changed the record - pub id_changed: i32, - /// timestamp when the record was changed - pub date_changed: NaiveDateTime, -} - -/// Structure of a new user record -#[derive(Debug, Deserialize, Insertable, Serialize)] -#[table_name = "users"] -pub struct NewUser<'a> { - /// Lifetime for users last name - pub last_name: &'a str, - /// Lifetime for users first name - pub first_name: Option<&'a str>, - /// Lifetime for users alias name - pub alias_name: Option<&'a str>, - /// Lifetime for users users email - pub email: Option<&'a str>, - /// Lifetime for users email-confirmed - pub email_confirmed: Option, - /// Lifetime for users initials - pub initials: Option<&'a str>, - /// Lifetime for users password hash - pub password_hash: &'a str, - /// Optional timestamp for cration date - pub date_created: Option, - /// Optional userid that changed the record - pub id_changed: i32, - /// Optional timestamp for the change date - pub date_changed: Option, -} - - -/// Structure of a user registration -#[derive(Debug, Deserialize, Queryable)] -pub struct RegisterUser<'a> { - /// Lifetime of users last name - pub last_name: &'a str, - /// Lifetime of users first name - pub first_name: Option<&'a str>, - /// Lifetime for users alias name column - pub alias: Option<&'a str>, - /// Lifetime for users email column - pub email: Option<&'a str>, - /// Lifetime for users email confirmed column - pub email_confirmed: Option, - /// Lifetime for users initials - pub initials: Option<&'a str>, - /// Lifetime for users password hash - pub password_hash: &'a str, - /// Lifetime for users password confirmation - pub password_confirmation: &'a str, - /// Optional userid that changed the record - pub id_changed: i32, -} - -// WIP -//pub mod traits; -//use types::ConfirmState; -//use crate::types::ConfirmStateVisitor; -//#[serde(skip)] - -//#[derive(Serialize, Deserialize)] -//pub struct UserList(pub Vec); diff --git a/crates/advotrackerdb/src/schema.rs b/crates/advotrackerdb/src/schema.rs deleted file mode 100644 index eb93cfb..0000000 --- a/crates/advotrackerdb/src/schema.rs +++ /dev/null @@ -1,74 +0,0 @@ -#![allow(missing_docs)] - -table! { - claims (id) { - id -> Integer, - id_user -> Integer, - #[sql_name = "type"] - type_ -> Nullable, - value -> Nullable, - date_created -> Timestamp, - id_user_changed -> Integer, - date_changed -> Timestamp, - } -} - -table! { - harms (id) { - id -> Integer, - id_harm -> Text, - id_policyholder -> Nullable, - id_callback -> Nullable, - date_fallback -> Nullable, - date_recording -> Timestamp, - id_user -> Integer, - date_created -> Timestamp, - id_user_changed -> Integer, - date_changed -> Timestamp, - } -} - -table! { - roles (id) { - id -> Integer, - name -> Text, - date_created -> Timestamp, - id_user_changed -> Integer, - date_changed -> Timestamp, - } -} - -table! { - user_roles (id_user, id_role) { - id_user -> Integer, - id_role -> Integer, - } -} - -table! { - users (id) { - id -> Integer, - last_name -> Text, - first_name -> Nullable, - alias_name -> Nullable, - email -> Nullable, - email_confirmed -> Nullable, - initials -> Nullable, - password_hash -> Nullable, - date_created -> Timestamp, - id_changed -> Integer, - date_changed -> Timestamp, - } -} - -joinable!(claims -> users (id_user)); -joinable!(user_roles -> roles (id_role)); -joinable!(user_roles -> users (id_user)); - -allow_tables_to_appear_in_same_query!( - claims, - harms, - roles, - user_roles, - users, -);