From 28ff3bd2bf4f609d9949a44cd0a43e6cd35564e5 Mon Sep 17 00:00:00 2001 From: Peter Date: Mon, 8 Jun 2026 21:40:23 +0200 Subject: [PATCH] =?UTF-8?q?benutzer=20hinzugef=C3=BCgt=20und=20grupe=20rep?= =?UTF-8?q?ostory=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- migrations/30000101000000_seed.up.sql | 461 ++++++++++++++++++ src/domain.rs | 2 +- src/domain/benutzer.rs | 3 +- src/domain/benutzer/dataloader.rs | 4 +- src/domain/benutzer/entity.rs | 4 +- src/domain/benutzer/entity/benutzer.rs | 28 +- src/domain/benutzer/model.rs | 8 +- src/domain/benutzer/model/benutzer.rs | 8 +- ...e_input.rs => benutzer_erstellen_input.rs} | 2 +- src/domain/benutzer/mutation.rs | 3 + src/domain/benutzer/mutation/benutzer.rs | 49 ++ src/domain/benutzer/repository.rs | 6 +- .../{alle_benutzer.rs => benutzer_alle.rs} | 3 +- .../benutzer/repository/benutzer_erstellen.rs | 34 ++ .../benutzer/repository/benutzer_loeschen.rs | 27 + .../benutzer/repository/benutzer_update.rs | 30 ++ .../benutzer/repository/create_benutzer.rs | 31 -- src/domain/benutzer/service.rs | 4 +- src/domain/benutzer/service/alle_benutzer.rs | 11 - src/domain/benutzer/service/benutzer_alle.rs | 12 + .../benutzer/service/benutzer_erstellen.rs | 36 ++ .../benutzer/service/create_benutzer.rs | 25 - src/domain/gruppe/repository.rs | 1 + src/domain/gruppe/repository/gruppe_alle.rs | 3 + src/domain/gruppe/service.rs | 1 + src/mutations/benutzer.rs | 74 +-- src/mutations/mod.rs | 10 +- src/queries/mod.rs | 15 +- 28 files changed, 761 insertions(+), 134 deletions(-) create mode 100644 migrations/30000101000000_seed.up.sql rename src/domain/benutzer/model/{benutzer_create_input.rs => benutzer_erstellen_input.rs} (89%) create mode 100644 src/domain/benutzer/mutation.rs create mode 100644 src/domain/benutzer/mutation/benutzer.rs rename src/domain/benutzer/repository/{alle_benutzer.rs => benutzer_alle.rs} (90%) create mode 100644 src/domain/benutzer/repository/benutzer_erstellen.rs create mode 100644 src/domain/benutzer/repository/benutzer_loeschen.rs create mode 100644 src/domain/benutzer/repository/benutzer_update.rs delete mode 100644 src/domain/benutzer/repository/create_benutzer.rs delete mode 100644 src/domain/benutzer/service/alle_benutzer.rs create mode 100644 src/domain/benutzer/service/benutzer_alle.rs create mode 100644 src/domain/benutzer/service/benutzer_erstellen.rs delete mode 100644 src/domain/benutzer/service/create_benutzer.rs diff --git a/migrations/30000101000000_seed.up.sql b/migrations/30000101000000_seed.up.sql new file mode 100644 index 0000000..22551d0 --- /dev/null +++ b/migrations/30000101000000_seed.up.sql @@ -0,0 +1,461 @@ +-- noqa: disable=all + +-- TYPEN (20 Typen) +INSERT INTO typen (typ_id, id, typname, erstellt_am, geaendert_am) VALUES +('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', '01KTKVYYPDB0K66R13PKC3V5PF', 'Smartphone', NOW(), NOW()), +('b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', '01KTKVYYPE7CM3QRKCMSD7KZQS', 'Laptop', NOW(), NOW()), +('c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', '01KTKVYYPEQX27Z8DXCMNAR2FG', 'Tablet', NOW(), NOW()), +('d3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', '01KTKVYYPF9V548XBAWDRYGY1D', 'Desktop', NOW(), NOW()), +('e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', '01KTKVYYPFQ0MJ3ZK10SMZB7E3', 'Monitor', NOW(), NOW()), +('f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', '01KTKVYYPFNV0F97X5PXD12SKE', 'Drucker', NOW(), NOW()), +('a6eebc99-9c0b-4ef8-bb6d-6bb9bd380a17', '01KTKVYYPGYNKBYZY4J8HWX890', 'Scanner', NOW(), NOW()), +('b7eebc99-9c0b-4ef8-bb6d-6bb9bd380a18', '01KTKVYYPGG1980704VJAFJN8Q', 'Router', NOW(), NOW()), +('c8eebc99-9c0b-4ef8-bb6d-6bb9bd380a19', '01KTKVYYPGXBR6TGWFJ2T6XRAE', 'Switch', NOW(), NOW()), +('d9eebc99-9c0b-4ef8-bb6d-6bb9bd380a20', '01KTKVYYPG6Q03SCBFN4DXVZ34', 'Server', NOW(), NOW()), +('e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21', '01KTKVYYPHPP2KRDVB01JFPHK3', 'Kopfhörer', NOW(), NOW()), +('f1eebc99-9c0b-4ef8-bb6d-6bb9bd380a22', '01KTKVYYPHNHA897JVNQ7BWXAV', 'Tastatur', NOW(), NOW()), +('a2eebc99-9c0b-4ef8-bb6d-6bb9bd380a23', '01KTKVYYPJZ9DB7KFP7QEW00SH', 'Maus', NOW(), NOW()), +('b3eebc99-9c0b-4ef8-bb6d-6bb9bd380a24', '01KTKVYYPJCTBKFSFNE1EXXRVS', 'Webcam', NOW(), NOW()), +('c4eebc99-9c0b-4ef8-bb6d-6bb9bd380a25', '01KTKVYYPJH7XDZFEMT0SDGSRA', 'Mikrofon', NOW(), NOW()), +('d5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26', '01KTKVYYPJAHAYR68WRWE626HW', 'Lautsprecher', NOW(), NOW()), +('e6eebc99-9c0b-4ef8-bb6d-6bb9bd380a27', '01KTKVYYPJB9KZ21D00G0HWKPY', 'Projektor', NOW(), NOW()), +('f7eebc99-9c0b-4ef8-bb6d-6bb9bd380a28', '01KTKVYYPJRQVQ6PTXB0GKKVK3', 'Smartwatch', NOW(), NOW()), +('a8eebc99-9c0b-4ef8-bb6d-6bb9bd380a29', '01KTKVYYPKGW7CPNEXCD006VSG', 'Tablett', NOW(), NOW()), +('b9eebc99-9c0b-4ef8-bb6d-6bb9bd380a30', '01KTKVYYPKFE64215S8B2Z85C2', 'E-Reader', NOW(), NOW()); +-- HERSTELLER (20 Hersteller) +INSERT INTO hersteller (hersteller_id, id, herstellername, erstellt_am, geaendert_am) VALUES +('c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11', '01KTKW42C3XGAZAEYJBP9A2F3C', 'Apple', NOW(), NOW()), +('d1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12', '01KTKW42C45RC56726EZ0X84K7', 'Samsung', NOW(), NOW()), +('e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13', '01KTKW42C5HDYNWMB0JY4FC9BQ', 'Dell', NOW(), NOW()), +('f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14', '01KTKW42C5A132W02FNXJY1YJW', 'HP', NOW(), NOW()), +('a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15', '01KTKW42C575G26J7N5G490WBV', 'Lenovo', NOW(), NOW()), +('b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16', '01KTKW42C6TGMVB6RZD5XP8XJE', 'Asus', NOW(), NOW()), +('c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17', '01KTKW42C6VXM1G1AM4JECQ74C', 'Acer', NOW(), NOW()), +('d7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18', '01KTKW42C6MJPVKQ1XJ18A0WEV', 'Microsoft', NOW(), NOW()), +('e8eebc99-9c0b-4ef8-bb6d-6bb9bd380b19', '01KTKW42C6A0BX2EE979RXVH8D', 'Sony', NOW(), NOW()), +('f9eebc99-9c0b-4ef8-bb6d-6bb9bd380b20', '01KTKW42C71W2HFJEFBMG083SD', 'LG', NOW(), NOW()), +('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380b21', '01KTKW42C73DZANHBXJR60F5XY', 'Panasonic', NOW(), NOW()), +('b1eebc99-9c0b-4ef8-bb6d-6bb9bd380b22', '01KTKW42C79QBGS0GHRHWT5WTV', 'Canon', NOW(), NOW()), +('c2eebc99-9c0b-4ef8-bb6d-6bb9bd380b23', '01KTKW42C7R5H2NZR6655CJ2PW', 'Epson', NOW(), NOW()), +('d3eebc99-9c0b-4ef8-bb6d-6bb9bd380b24', '01KTKW42C7W0BYCWNTE3ABPZ44', 'Brother', NOW(), NOW()), +('e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25', '01KTKW42C7FHF80WT7JG9FZC7R', 'Logitech', NOW(), NOW()), +('f5eebc99-9c0b-4ef8-bb6d-6bb9bd380b26', '01KTKW42C7DDNYZ4PV7AZ2V1G4', 'Razer', NOW(), NOW()), +('a6eebc99-9c0b-4ef8-bb6d-6bb9bd380b27', '01KTKW42C7Q9Q941BNCW7HEAYX', 'Corsair', NOW(), NOW()), +('b7eebc99-9c0b-4ef8-bb6d-6bb9bd380b28', '01KTKW42C7T1X2GJ3T28S1DV88', 'Bose', NOW(), NOW()), +('c8eebc99-9c0b-4ef8-bb6d-6bb9bd380b29', '01KTKW42C77WZT0PXH1DM7WBPB', 'JBL', NOW(), NOW()), +('d9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30', '01KTKW55FM6WZJNFZFJR5Y6AZR', 'Xiaomi', NOW(), NOW()); + +-- MODELLE (100 Modelle) +INSERT INTO modelle (id, modellname, typ_id, hersteller_id) VALUES +-- Smartphones (typ_id: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11) +('e0eebc99-9c0b-4ef8-bb6d-6bb9bd380c01', 'iPhone 14 Pro', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('e1eebc99-9c0b-4ef8-bb6d-6bb9bd380c02', 'iPhone 15', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('e2eebc99-9c0b-4ef8-bb6d-6bb9bd380c03', 'Galaxy S23 Ultra', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('e3eebc99-9c0b-4ef8-bb6d-6bb9bd380c04', 'Galaxy Z Fold 5', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('e4eebc99-9c0b-4ef8-bb6d-6bb9bd380c05', 'Xiaomi 13 Pro', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), +('e5eebc99-9c0b-4ef8-bb6d-6bb9bd380c06', 'Pixel 8 Pro', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), + +-- Laptops (typ_id: b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12) +('e6eebc99-9c0b-4ef8-bb6d-6bb9bd380c07', 'MacBook Pro 14', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('e7eebc99-9c0b-4ef8-bb6d-6bb9bd380c08', 'MacBook Air M2', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('e8eebc99-9c0b-4ef8-bb6d-6bb9bd380c09', 'XPS 15', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('e9eebc99-9c0b-4ef8-bb6d-6bb9bd380c10', 'Latitude 7440', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('f0eebc99-9c0b-4ef8-bb6d-6bb9bd380c11', 'ThinkPad X1 Carbon', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('f1eebc99-9c0b-4ef8-bb6d-6bb9bd380c12', 'Surface Laptop 5', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), +('f2eebc99-9c0b-4ef8-bb6d-6bb9bd380c13', 'Zenbook 14', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('f3eebc99-9c0b-4ef8-bb6d-6bb9bd380c14', 'ROG Strix G16', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), + +-- Tablets (typ_id: c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13) +('f4eebc99-9c0b-4ef8-bb6d-6bb9bd380c15', 'iPad Pro 12.9', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('f5eebc99-9c0b-4ef8-bb6d-6bb9bd380c16', 'iPad Air', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('f6eebc99-9c0b-4ef8-bb6d-6bb9bd380c17', 'Galaxy Tab S9', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('f7eebc99-9c0b-4ef8-bb6d-6bb9bd380c18', 'Surface Pro 9', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), + +-- Desktop (typ_id: d3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14) +('f8eebc99-9c0b-4ef8-bb6d-6bb9bd380c19', 'Mac Studio', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('f9eebc99-9c0b-4ef8-bb6d-6bb9bd380c20', 'OptiPlex 7010', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380c21', 'EliteDesk 800', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), + +-- Monitore (typ_id: e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15) +('a1eebc99-9c0b-4ef8-bb6d-6bb9bd380c22', 'UltraSharp 27', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('a2eebc99-9c0b-4ef8-bb6d-6bb9bd380c23', 'Studio Display', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('a3eebc99-9c0b-4ef8-bb6d-6bb9bd380c24', 'Odyssey G9', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('a4eebc99-9c0b-4ef8-bb6d-6bb9bd380c25', 'ProArt PA32UCX', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), + +-- Drucker (typ_id: f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16) +('a5eebc99-9c0b-4ef8-bb6d-6bb9bd380c26', 'LaserJet Pro M404dn', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), +('a6eebc99-9c0b-4ef8-bb6d-6bb9bd380c27', 'EcoTank ET-4850', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380b23'), +('a7eebc99-9c0b-4ef8-bb6d-6bb9bd380c28', 'PIXMA G6020', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380b22'), + +-- Router (typ_id: b7eebc99-9c0b-4ef8-bb6d-6bb9bd380a18) +('a8eebc99-9c0b-4ef8-bb6d-6bb9bd380c29', 'AX5400', 'b7eebc99-9c0b-4ef8-bb6d-6bb9bd380a18', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('a9eebc99-9c0b-4ef8-bb6d-6bb9bd380c30', 'Orbi RBK852', 'b7eebc99-9c0b-4ef8-bb6d-6bb9bd380a18', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), + +-- Kopfhörer (typ_id: e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21) +('b0eebc99-9c0b-4ef8-bb6d-6bb9bd380c31', 'AirPods Pro 2', 'e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('b1eebc99-9c0b-4ef8-bb6d-6bb9bd380c32', 'WH-1000XM5', 'e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21', 'e8eebc99-9c0b-4ef8-bb6d-6bb9bd380b19'), +('b2eebc99-9c0b-4ef8-bb6d-6bb9bd380c33', 'QuietComfort 45', 'e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21', 'b7eebc99-9c0b-4ef8-bb6d-6bb9bd380b28'), +('b3eebc99-9c0b-4ef8-bb6d-6bb9bd380c34', 'Galaxy Buds2 Pro', 'e0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), + +-- Tastaturen (typ_id: f1eebc99-9c0b-4ef8-bb6d-6bb9bd380a22) +('b4eebc99-9c0b-4ef8-bb6d-6bb9bd380c35', 'MX Mechanical', 'f1eebc99-9c0b-4ef8-bb6d-6bb9bd380a22', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25'), +('b5eebc99-9c0b-4ef8-bb6d-6bb9bd380c36', 'Huntsman V2', 'f1eebc99-9c0b-4ef8-bb6d-6bb9bd380a22', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380b26'), +('b6eebc99-9c0b-4ef8-bb6d-6bb9bd380c37', 'K100 RGB', 'f1eebc99-9c0b-4ef8-bb6d-6bb9bd380a22', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380b27'), + +-- Mäuse (typ_id: a2eebc99-9c0b-4ef8-bb6d-6bb9bd380a23) +('b7eebc99-9c0b-4ef8-bb6d-6bb9bd380c38', 'MX Master 3S', 'a2eebc99-9c0b-4ef8-bb6d-6bb9bd380a23', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25'), +('b8eebc99-9c0b-4ef8-bb6d-6bb9bd380c39', 'DeathAdder V3', 'a2eebc99-9c0b-4ef8-bb6d-6bb9bd380a23', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380b26'), +('b9eebc99-9c0b-4ef8-bb6d-6bb9bd380c40', 'G502 X Plus', 'a2eebc99-9c0b-4ef8-bb6d-6bb9bd380a23', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25'), + +-- Webcams (typ_id: b3eebc99-9c0b-4ef8-bb6d-6bb9bd380a24) +('c0eebc99-9c0b-4ef8-bb6d-6bb9bd380c41', 'Brio 4K', 'b3eebc99-9c0b-4ef8-bb6d-6bb9bd380a24', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25'), +('c1eebc99-9c0b-4ef8-bb6d-6bb9bd380c42', 'StreamCam', 'b3eebc99-9c0b-4ef8-bb6d-6bb9bd380a24', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380b25'), + +-- Lautsprecher (typ_id: d5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26) +('c2eebc99-9c0b-4ef8-bb6d-6bb9bd380c43', 'HomePod 2', 'd5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('c3eebc99-9c0b-4ef8-bb6d-6bb9bd380c44', 'SoundLink Flex', 'd5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26', 'b7eebc99-9c0b-4ef8-bb6d-6bb9bd380b28'), +('c4eebc99-9c0b-4ef8-bb6d-6bb9bd380c45', 'Flip 6', 'd5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26', 'c8eebc99-9c0b-4ef8-bb6d-6bb9bd380b29'), +('c5eebc99-9c0b-4ef8-bb6d-6bb9bd380c46', 'SRS-XG300', 'd5eebc99-9c0b-4ef8-bb6d-6bb9bd380a26', 'e8eebc99-9c0b-4ef8-bb6d-6bb9bd380b19'), + +-- Smartwatches (typ_id: f7eebc99-9c0b-4ef8-bb6d-6bb9bd380a28) +('c6eebc99-9c0b-4ef8-bb6d-6bb9bd380c47', 'Apple Watch Ultra 2', 'f7eebc99-9c0b-4ef8-bb6d-6bb9bd380a28', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('c7eebc99-9c0b-4ef8-bb6d-6bb9bd380c48', 'Galaxy Watch 6', 'f7eebc99-9c0b-4ef8-bb6d-6bb9bd380a28', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('c8eebc99-9c0b-4ef8-bb6d-6bb9bd380c49', 'Watch GT 4', 'f7eebc99-9c0b-4ef8-bb6d-6bb9bd380a28', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), + +-- Weitere Produkte (verschiedene Typen) +('c9eebc99-9c0b-4ef8-bb6d-6bb9bd380c50', 'UltraSharp 32 6K', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('d0eebc99-9c0b-4ef8-bb6d-6bb9bd380c51', 'Pro Display XDR', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('d1eebc99-9c0b-4ef8-bb6d-6bb9bd380c52', 'Predator X34', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('d2eebc99-9c0b-4ef8-bb6d-6bb9bd380c53', 'Alienware AW3423DW', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('d3eebc99-9c0b-4ef8-bb6d-6bb9bd380c54', 'Legion 5 Pro', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('d4eebc99-9c0b-4ef8-bb6d-6bb9bd380c55', 'OmniBook X', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), +('d5eebc99-9c0b-4ef8-bb6d-6bb9bd380c56', 'Swift Go 14', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('d6eebc99-9c0b-4ef8-bb6d-6bb9bd380c57', 'Toughbook 55', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380b21'), +('d7eebc99-9c0b-4ef8-bb6d-6bb9bd380c58', 'Chromebook Spin 514', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('d8eebc99-9c0b-4ef8-bb6d-6bb9bd380c59', 'ROG Phone 7', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('d9eebc99-9c0b-4ef8-bb6d-6bb9bd380c60', 'OnePlus 11', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), +('e0eebc99-9c0b-4ef8-bb6d-6bb9bd380c61', 'Nothing Phone 2', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), +('e1eebc99-9c0b-4ef8-bb6d-6bb9bd380c62', 'Mi 13 Ultra', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), +('e2eebc99-9c0b-4ef8-bb6d-6bb9bd380c63', 'Yoga Book 9i', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('e3eebc99-9c0b-4ef8-bb6d-6bb9bd380c64', 'MatePad Pro', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd9eebc99-9c0b-4ef8-bb6d-6bb9bd380b30'), +('e4eebc99-9c0b-4ef8-bb6d-6bb9bd380c65', 'Fire Max 11', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), +('e5eebc99-9c0b-4ef8-bb6d-6bb9bd380c66', 'PowerShot G7 X III', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380a17', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380b22'), +('e6eebc99-9c0b-4ef8-bb6d-6bb9bd380c67', 'EOS R6 Mark II', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380a17', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380b22'), +('e7eebc99-9c0b-4ef8-bb6d-6bb9bd380c68', 'WorkForce ES-580W', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380a17', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380b23'), +('e8eebc99-9c0b-4ef8-bb6d-6bb9bd380c69', 'ScanSnap iX1600', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380a17', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380b24'), +('e9eebc99-9c0b-4ef8-bb6d-6bb9bd380c70', 'ColorLaser 6700', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380b24'), +('f0eebc99-9c0b-4ef8-bb6d-6bb9bd380c71', 'Smart Tank 760', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), +('f1eebc99-9c0b-4ef8-bb6d-6bb9bd380c72', 'ColorType MVII', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('f2eebc99-9c0b-4ef8-bb6d-6bb9bd380c73', 'MFC-L8900CDW', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380b24'), +('f3eebc99-9c0b-4ef8-bb6d-6bb9bd380c74', 'ImageCLASS MF753Cdw', 'f5eebc99-9c0b-4ef8-bb6d-6bb9bd380a16', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380b22'), +('f4eebc99-9c0b-4ef8-bb6d-6bb9bd380c75', 'ProArt Display PA279CV', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('f5eebc99-9c0b-4ef8-bb6d-6bb9bd380c76', 'Evnia 34M2C', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'a6eebc99-9c0b-4ef8-bb6d-6bb9bd380b27'), +('f6eebc99-9c0b-4ef8-bb6d-6bb9bd380c77', 'UltraGear 27GR95QE', 'e4eebc99-9c0b-4ef8-bb6d-6bb9bd380a15', 'f9eebc99-9c0b-4ef8-bb6d-6bb9bd380b20'), +('f7eebc99-9c0b-4ef8-bb6d-6bb9bd380c78', 'Swift 3D', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('f8eebc99-9c0b-4ef8-bb6d-6bb9bd380c79', 'ThinkStation P3', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('f9eebc99-9c0b-4ef8-bb6d-6bb9bd380c80', 'Precision 5860', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380c81', 'Mac Pro', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('a1eebc99-9c0b-4ef8-bb6d-6bb9bd380c82', 'ProArt Station PD5', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('a2eebc99-9c0b-4ef8-bb6d-6bb9bd380c83', 'Vero L11', 'd3eebc99-9c0b-4ef8-bb6d-6bb9bd380a14', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('a3eebc99-9c0b-4ef8-bb6d-6bb9bd380c84', 'TravelMate P4', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'c6eebc99-9c0b-4ef8-bb6d-6bb9bd380b17'), +('a4eebc99-9c0b-4ef8-bb6d-6bb9bd380c85', 'ExpertBook B9', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('a5eebc99-9c0b-4ef8-bb6d-6bb9bd380c86', 'Inspiron 16 Plus', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('a6eebc99-9c0b-4ef8-bb6d-6bb9bd380c87', 'Vostro 5620', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'e2eebc99-9c0b-4ef8-bb6d-6bb9bd380b13'), +('a7eebc99-9c0b-4ef8-bb6d-6bb9bd380c88', 'IdeaPad Slim 5', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('a8eebc99-9c0b-4ef8-bb6d-6bb9bd380c89', 'Yoga Slim 7', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'a4eebc99-9c0b-4ef8-bb6d-6bb9bd380b15'), +('a9eebc99-9c0b-4ef8-bb6d-6bb9bd380c90', 'EliteBook 1040 G10', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), +('b0eebc99-9c0b-4ef8-bb6d-6bb9bd380c91', 'ProBook 450 G10', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'f3eebc99-9c0b-4ef8-bb6d-6bb9bd380b14'), +('b1eebc99-9c0b-4ef8-bb6d-6bb9bd380c92', 'Zenbook Pro 16X', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('b2eebc99-9c0b-4ef8-bb6d-6bb9bd380c93', 'Vivobook 15', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('b3eebc99-9c0b-4ef8-bb6d-6bb9bd380c94', 'TUF Gaming A16', 'b1eebc99-9c0b-4ef8-bb6d-6bb9bd380a12', 'b5eebc99-9c0b-4ef8-bb6d-6bb9bd380b16'), +('b4eebc99-9c0b-4ef8-bb6d-6bb9bd380c95', 'Surface Go 4', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), +('b5eebc99-9c0b-4ef8-bb6d-6bb9bd380c96', 'Galaxy Tab S9 Ultra', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd1eebc99-9c0b-4ef8-bb6d-6bb9bd380b12'), +('b6eebc99-9c0b-4ef8-bb6d-6bb9bd380c97', 'iPad mini', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'c0eebc99-9c0b-4ef8-bb6d-6bb9bd380b11'), +('b7eebc99-9c0b-4ef8-bb6d-6bb9bd380c98', 'Kindle Scribe', 'b9eebc99-9c0b-4ef8-bb6d-6bb9bd380a30', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'), +('b8eebc99-9c0b-4ef8-bb6d-6bb9bd380c99', 'Kobo Libra 2', 'b9eebc99-9c0b-4ef8-bb6d-6bb9bd380a30', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380b21'), +('b9eebc99-9c0b-4ef8-bb6d-6bb9bd380d00', 'Pixel Tablet', 'c2eebc99-9c0b-4ef8-bb6d-6bb9bd380a13', 'd7eebc99-9c0b-4ef8-bb6d-6bb9bd380b18'); + +-- ---------------------------------------------------------- +-- ROLLEN (20) +-- ---------------------------------------------------------- +INSERT INTO rollen (rolle_id, id, rollenname, erstellt_am, geaendert_am) VALUES +('36125242-8a36-4f77-b3eb-7660a32a688e', '01J3HVW9G07TRMCT2JAYYXCG7V', 'Administrator', '2024-07-24 07:56:48+00', '2024-07-30 07:56:48+00'), +('ca8983dc-0551-40a8-86fd-5efa63120720', '01K5TNNN4RQPEATF1DDMD3T7X7', 'Benutzer', '2025-09-23 06:55:11+00', '2026-03-30 06:55:11+00'), +('563f4912-e8e8-4df7-9bc6-0af2aaae938d', '01HEN8NZVG10H6R0RHK6BJN139', 'Gast', '2023-11-07 16:08:38+00', '2023-11-29 16:08:38+00'), +('9a087c8d-6a7d-42e4-8ea2-d6886f2d513c', '01KNRP3BA0K8ER2QQPT4XRZAGR', 'Editor', '2026-04-09 08:35:20+00', '2026-06-03 08:35:20+00'), +('e88f1e3a-e939-4a90-9326-6c30b94814db', '01KNYJV9M8PE5ACQPKH6VMT3XH', 'Reviewer', '2026-04-11 15:33:57+00', '2026-05-31 15:33:57+00'), +('9245a5ab-6400-4d39-a1d1-8b0a660498ac', '01JB7VGH888WVSDPGXNHSFYQ9A', 'Auditor', '2024-10-27 20:43:33+00', '2024-12-22 20:43:33+00'), +('b6aa4bb1-3471-4cb2-92b0-9481863fe8ae', '01HNJ7TJE8PAWJHQVERK74MAXX', 'Manager', '2024-02-01 11:45:49+00', '2024-08-13 11:45:49+00'), +('cbf9c3ee-ace6-4468-99cb-a5637a5ee620', '01JNCKG5QRYM5KE7PDFCKWV09G', 'Teamleiter', '2025-03-02 23:36:43+00', '2025-05-12 23:36:43+00'), +('66faebf7-bba7-4195-aee1-f33668ca7087', '01HS9Z7YGG33162GQAFMBVWC8H', 'Entwickler', '2024-03-18 23:44:42+00', '2024-04-13 23:44:42+00'), +('8f8526c7-9ede-4c21-a107-2c6edab7665a', '01JTKYW33G1CFWX7ZNFX1VF8X6', 'Tester', '2025-05-06 23:28:38+00', '2025-10-07 23:28:38+00'), +('a7eaf389-3460-4434-9df8-efef1c943128', '01HW11D2TRXGDZJ7GX9GFZ96VR', 'Support', '2024-04-21 19:16:23+00', '2024-09-05 19:16:23+00'), +('ba1f25f5-aaf4-45c7-b7e8-c0e1a7ab8a1e', '01JS1G2AJ0M3QD8MYX695GVET1', 'Analyst', '2025-04-17 09:07:52+00', '2025-09-05 09:07:52+00'), +('d4cc652b-7816-48a4-b8ce-b70e8ed19461', '01J56YY5E0277B8QPHY0RKKMSC', 'Berater', '2024-08-13 22:50:00+00', '2025-01-07 22:50:00+00'), +('15fd9da7-6784-424e-a3f0-3c7d60138e54', '01KMEYZ0K82HPZRDVT9H51AN2D', 'Praktikant', '2026-03-24 03:42:09+00', '2026-10-07 03:42:09+00'), +('beed79f1-e009-405d-93b0-c874624f00fc', '01HHRAVKM0EG94EAA775GMZWYQ', 'Auszubildender', '2023-12-16 03:31:28+00', '2024-01-10 03:31:28+00'), +('8ffd53e3-c163-46a3-b6c9-eb94c7b4904c', '01J3V5S5886PH5NWR5ADFC8BG8', 'Externer', '2024-07-27 22:43:01+00', '2024-09-06 22:43:01+00'), +('c7813c5e-2d10-4933-9781-ad2f305836d9', '01J0YVPPMRMQJTXZ7TV3QWH629', 'Power-User', '2024-06-22 02:16:47+00', '2024-12-18 02:16:47+00'), +('7e3ccf3a-c9c5-44a9-a51b-3ffdcab34ce3', '01KJ7YJNR0QAM8HFB40WNWZFG1', 'Read-Only', '2026-02-24 13:49:20+00', '2026-08-05 13:49:20+00'), +('aa780cfa-e024-4ba8-9a0d-989b960948c1', '01K41XYCERZN8MA6TCYDGJ7ZFQ', 'Super-Admin', '2025-09-01 06:03:03+00', '2025-12-28 06:03:03+00'), +('94e4c8dc-d621-4710-afe5-a6fe6d90517f', '01HBXBB0JGNX13GE5K4T798GHS', 'API-Client', '2023-10-04 12:41:54+00', '2024-03-28 12:41:54+00'); + +-- ---------------------------------------------------------- +-- GRUPPEN (50) +-- ---------------------------------------------------------- +INSERT INTO gruppen (gruppe_id, id, gruppenname, erstellt_am, geaendert_am) VALUES +('0fbc09a8-b27d-4c6d-ab5d-6e61b0975a51', '01J2RATPA8SRBGGDXRMF9639XB', 'Geschäftsführung', '2024-07-14 09:57:49+00', '2024-11-08 09:57:49+00'), +('5e3f2796-bc55-4c2f-b8d7-e519e783ee83', '01J45ATPVRX71KC0QRNG8F3F41', 'IT-Abteilung', '2024-07-31 21:23:39+00', '2024-12-15 21:23:39+00'), +('4b8257b4-6b9c-448a-b840-b21bf69ad553', '01GTQJYG5RCN47ZKCYP6KWNN0N', 'Entwicklung', '2023-03-05 00:32:35+00', '2023-06-21 00:32:35+00'), +('29cfdb67-954f-4e11-9713-88853816a08e', '01GE7XAD2G7WH27FPG3N1WYBYY', 'Testing', '2022-09-30 19:17:38+00', '2022-12-12 19:17:38+00'), +('20b0a3b8-b8c5-4225-b259-83aae33a6b2b', '01GVNKNY70DPPSB9VDF6ZKRK06', 'Support', '2023-03-16 16:22:36+00', '2023-07-28 16:22:36+00'), +('5320f59a-ac44-430e-be5e-5876f895953d', '01GQZPV5EGZXFFYM5XWGW2ASXR', 'Vertrieb', '2023-01-29 21:27:30+00', '2023-08-02 21:27:30+00'), +('6edbc8a2-b813-4669-b633-ec0b87855567', '01K1BKJ5R01G7W2YQGH8BMBNPR', 'Marketing', '2025-07-29 17:26:56+00', '2026-04-07 17:26:56+00'), +('f23e557b-2835-4ea2-95d6-453f0615020a', '01K64XKA0RDG9AWD04AK5CBDMC', 'HR', '2025-09-27 06:26:07+00', '2025-12-17 06:26:07+00'), +('74860dcb-223f-4d9f-82c4-279a91e26845', '01GNY2FZMGZW0SH314S5GV3K92', 'Finance', '2023-01-04 09:41:14+00', '2023-07-20 09:41:14+00'), +('acca4447-3a1d-4bf2-8d65-a8263cf80529', '01HB1ETMY0VHE8V81PBFW9H5XS', 'Controlling', '2023-09-23 16:44:08+00', '2024-01-29 16:44:08+00'), +('55752b16-94c8-44f8-a7eb-6d748a253669', '01KPAM8YCGRK148KN7S303K1RG', 'Einkauf', '2026-04-16 07:49:46+00', '2027-01-15 07:49:46+00'), +('d6a81b1c-2285-49fb-a402-e4dcba2c518c', '01GEJNQZG851YPYK66K95J5MR8', 'Logistik', '2022-10-04 23:36:53+00', '2022-11-30 23:36:53+00'), +('d6e97227-0a32-447b-a6c8-b50f02036b0a', '01HDE62ZERRC7R09K9BZWCVA4B', 'Produktion', '2023-10-23 11:52:55+00', '2024-03-05 11:52:55+00'), +('20e09bd7-426f-4437-b9fe-ed00983d6aa3', '01JTRF6M2G9HKA04XCDVFDMKGP', 'Forschung', '2025-05-08 17:30:58+00', '2025-07-01 17:30:58+00'), +('a769cfa8-c911-4a89-8349-fe1988b7aa08', '01GEWACX10RCSNZE6HDGKJ0YBX', 'Recht', '2022-10-08 17:31:00+00', '2023-01-17 17:31:00+00'), +('2b873381-1aba-4aec-b198-a316d3357bd0', '01JXJF4ZERK5A009BTT7NJ4RYX', 'Datenschutz', '2025-06-12 16:21:43+00', '2026-03-10 16:21:43+00'), +('e656875f-d1bb-4d0e-a175-436240829a06', '01J2S74QFGBKPEVPB864EA6Q7V', 'Sicherheit', '2024-07-14 18:12:38+00', '2024-07-23 18:12:38+00'), +('b438cc59-a35a-4c10-ba51-196ee75d5314', '01J5HQSS2RJ4ZE1H9WQ0YTKGN9', 'Operations', '2024-08-18 03:16:55+00', '2024-09-16 03:16:55+00'), +('ac6ea47d-6687-4561-aded-7bab7140ce3d', '01KB7D1BKGZ9EH3DZ9938EDSK0', 'Kundenservice', '2025-11-29 08:52:54+00', '2026-08-04 08:52:54+00'), +('d82501f3-e52a-4a6b-8a13-c89f9caea1e8', '01H0F4S6T8Y9J7KB0V3TMEAVGC', 'Produktmanagement', '2023-05-15 07:25:17+00', '2023-07-19 07:25:17+00'), +('16d6ba9c-3b11-4045-90f2-631a24dc6c12', '01GXMVYJR8KD4XYNY5KA3HB883', 'Design', '2023-04-10 05:59:17+00', '2023-08-23 05:59:17+00'), +('b2bb7041-894d-4d00-b12d-33fbc2f84fa3', '01HJFK2240P2DVNQ635B0NJ3TK', 'UX-Team', '2023-12-25 04:17:20+00', '2024-09-26 04:17:20+00'), +('d992bded-41e7-444a-a207-b4ceb1ac3226', '01JQ2SDD2RMSFAQWXD77ZC46XY', 'DevOps', '2025-03-24 00:39:03+00', '2025-10-14 00:39:03+00'), +('80fd3e40-6dc8-4357-80cd-4c89b5475446', '01HTNBA5AG7XV1XYH1JXSS964F', 'SRE', '2024-04-04 20:02:58+00', '2024-12-24 20:02:58+00'), +('a17c94b1-de7b-42eb-8398-2633502bdb79', '01JK5JWY60HQ6SD6V6C82P502S', 'Data-Science', '2025-02-03 09:40:08+00', '2025-07-26 09:40:08+00'), +('2ebf8afa-ef0a-49e0-8a18-2f2f31f88819', '01JJ76ZC60PMTH4B4TAR0XEGJP', 'Machine-Learning', '2025-01-22 14:34:32+00', '2025-05-14 14:34:32+00'), +('d4206087-17cb-4ce5-a43d-6eb356626ae3', '01GG78VJB0105EFJCV4R8M29E6', 'QA', '2022-10-25 09:51:24+00', '2023-02-19 09:51:24+00'), +('a33577d7-d8c6-42cf-9670-e81363523199', '01J1SC6C58ND14EJJ97CYEVQSD', 'Release-Management', '2024-07-02 09:25:13+00', '2025-03-22 09:25:13+00'), +('c5fb35a2-bf3c-4484-aedd-919b15145bfa', '01H85ZW9M0XXYVJBD25CGXYC3F', 'Helpdesk', '2023-08-19 04:12:00+00', '2024-05-21 04:12:00+00'), +('c3651b6b-6c23-4809-8117-95614c44b14d', '01GT1Z2KKRF4ACHQ6HKWZ3A498', 'Sekretariat', '2023-02-24 15:01:15+00', '2023-10-24 15:01:15+00'), +('787306da-dac4-4a61-a211-47ec009c5ac2', '01HN4MVADRDSCTHCRQZ8CD0X9B', 'Empfang', '2024-01-27 05:04:03+00', '2024-03-15 05:04:03+00'), +('ce01290f-ad0f-4559-b6ce-bdf7afff9945', '01HXSTM8Q8QAJDT937NHVRXVDK', 'Reinigung', '2024-05-13 20:34:41+00', '2024-12-09 20:34:41+00'), +('4c60bac8-7050-4608-a519-04753cc9d824', '01KF8GASWRQ9P6E4HG787R8KZF', 'Haustechnik', '2026-01-18 12:12:31+00', '2026-03-09 12:12:31+00'), +('91c296e0-d7f5-4f87-84a3-f77e49a8b86b', '01J0AW7S5GH5531CC7XWRGR300', 'Werkstatt', '2024-06-14 08:01:18+00', '2024-10-19 08:01:18+00'), +('0480517d-d06c-458a-b404-e0d1ef821c15', '01HE9ZB53RESQ4EKNW34QFJ4KP', 'Lager', '2023-11-03 06:53:47+00', '2024-06-06 06:53:47+00'), +('331df942-4203-4342-8b2f-a65cbf951eb9', '01JF276W20VCGDS0AZWZ7DN2XV', 'Versand', '2024-12-14 09:15:20+00', '2025-07-28 09:15:20+00'), +('0303e743-4636-4fd8-86e2-063875bac175', '01GXFZJ08RH9HZZM7STPKF5XXR', 'Buchhaltung', '2023-04-08 08:26:07+00', '2023-05-03 08:26:07+00'), +('d256cbb5-12a4-4ea2-b733-fb8114e85ca4', '01KNRP5200FH96G2P0F8N96QB2', 'Steuern', '2026-04-09 08:36:16+00', '2026-08-08 08:36:16+00'), +('88b6dfee-f3fb-40d9-ad3f-31861fa62f79', '01H8X5GQ4058JGY0NTT3KGCZQM', 'Revision', '2023-08-28 04:13:04+00', '2024-03-20 04:13:04+00'), +('55bf7010-622c-4a84-86e8-5b5d6f176473', '01HSR51A3GS2WETC29SX1Y8P7W', 'Compliance', '2024-03-24 11:55:18+00', '2024-10-09 11:55:18+00'), +('c543618f-8717-42aa-81de-28c93db0bc30', '01HD7Y1GS0QC1FA4P4RES57MGR', 'Public-Relations', '2023-10-21 01:36:52+00', '2024-05-24 01:36:52+00'), +('d9fcece7-e59e-4b02-8e8e-672ecb870c7a', '01GWJ4K2H06YXMQX8BA8R9T9CC', 'Event-Management', '2023-03-27 18:16:52+00', '2023-06-14 18:16:52+00'), +('59ec70f6-ca2b-4d92-a026-c038dfb4c03b', '01KEHM1DQGA14BYYTKKC7SNTJB', 'Schulung', '2026-01-09 14:54:46+00', '2026-10-13 14:54:46+00'), +('cfbf5629-c1dd-46e4-a34e-345d082ce135', '01KERTZ0H0XDE81EPDCHX0XKZA', 'Bibliothek', '2026-01-12 10:10:28+00', '2026-11-07 10:10:28+00'), +('79326ccc-ad55-4a36-9181-4a86c3e3078c', '01H0PR0N482J18408CCBTZB6S2', 'Archiv', '2023-05-18 06:16:05+00', '2023-06-16 06:16:05+00'), +('6b8bbd03-4f61-43ae-b922-9dd9d14f8a6e', '01JSKJ4EZR7GVDS81EXJPDNEPC', 'Projekt-A', '2025-04-24 09:30:19+00', '2025-05-28 09:30:19+00'), +('403baac6-d093-4514-846a-f77cc83267f1', '01HNPYEERRK0S98D0A0CZGFY0M', 'Projekt-B', '2024-02-03 07:38:07+00', '2024-11-20 07:38:07+00'), +('9635b467-9814-474b-ab50-2218fcf7e405', '01KHKA3Y78JNNTGJCVJ9NN4MQ3', 'Projekt-Gamma', '2026-02-16 13:26:57+00', '2026-03-29 13:26:57+00'), +('617e5ba1-c08c-4e99-99ed-f2dbd95f0965', '01GV12GYFG6H545GCACBQMHT6N', 'Innovation-Lab', '2023-03-08 16:57:58+00', '2023-08-16 16:57:58+00'), +('38e6b4cf-a500-4e7b-8f21-39953af411c0', '01G9TVHHN0460PAMHRMS1ZYM0H', 'Vorstand', '2022-08-07 00:33:40+00', '2022-12-07 00:33:40+00'); + +-- ---------------------------------------------------------- +-- BENUTZER (200) +-- ---------------------------------------------------------- +INSERT INTO benutzer (benutzer_id, id, kennung, nachname, vorname, passwort, erstellt_am, geaendert_am) VALUES +('7cc46251-8b31-4243-8ee7-90cd945e0b81', '01J6H9E1B0ZYD9Y12AXNTN4CS7', 'simon.schulze', 'Schulze', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-30 09:21:32+00', '2024-09-03 09:21:32+00'), +('88f872c3-6576-4542-8347-4fd6adf4c719', '01H1ZQD99GXVN23T5CD11Y8B5F', 'max.weber', 'Weber', 'Max', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-06-03 04:14:22+00', '2024-02-17 04:14:22+00'), +('8ae78b23-7e44-4a7a-989f-4fa925617868', '01KFA3FFXGE0P2GRGRQ14F9VRJ', 'jan.winkler', 'Winkler', 'Jan', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-01-19 03:06:22+00', '2026-07-27 03:06:22+00'), +('9f62c9c8-8975-4bda-af66-40a34c94bc62', '01FNK79ZFRT4PTNY8N64101CFG', 'simon.peters', 'Peters', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-28 12:11:23+00', '2022-08-25 12:11:23+00'), +('17518dc0-53bd-44dc-a851-a8dc588bb3d5', '01GDACYTPR8ET24R771ZGCSVE5', 'simon.bock', 'Bock', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-19 08:13:43+00', '2024-01-12 08:13:43+00'), +('c494f7ad-cc24-4e0a-b3a6-d9a7d68367e8', '01K8XFEY00KBB4G89DVD2VH76S', 'niklas.winkler', 'Winkler', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-31 15:51:28+00', '2026-01-18 15:51:28+00'), +('eba0b54b-cdd6-417e-9a01-5be0fece784b', '01J23569XR8EADMP3YHAH5TTS9', 'julian.hahn', 'Hahn', 'Julian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-07-06 04:35:15+00', '2025-06-22 04:35:15+00'), +('cc5e7b6f-df67-4d44-a1c2-9934aadd3338', '01JH7V0KHGTH86RVVP6EH60XS3', 'philipp.koehler', 'Köhler', 'Philipp', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-01-10 10:09:02+00', '2025-02-26 10:09:02+00'), +('892544a6-ec59-48e7-ace3-6a7f494d6d51', '01KT076058ZBAA66EWPGGQTSD0', 'maja.schneider', 'Schneider', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-05-31 23:51:21+00', '2027-06-29 23:51:21+00'), +('22c30c3c-ee8d-46d3-8af4-47c17714d893', '01G0D32TT0HYBPTZ73S6TAD7SW', 'clara.schaefer', 'Schäfer', 'Clara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-04-11 19:54:48+00', '2023-01-18 19:54:48+00'), +('5fc092ce-3228-49e8-8fe3-174ee343e710', '01KE6DTBC0BT2DBA04XC4KJ8YY', 'mia.becker', 'Becker', 'Mia', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-01-05 06:34:24+00', '2026-10-11 06:34:24+00'), +('110bf263-82e6-444a-bcb1-c70db4d77015', '01K5KAPAZGXVFEC8X6H5ENKK9A', 'noah.lehmann', 'Lehmann', 'Noah', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-09-20 10:28:38+00', '2026-02-24 10:28:38+00'), +('52277de5-76f5-49ff-a749-a293fa0106c8', '01HZNWESV8398ANF15Z8ZY2BJ7', 'hannah.simon', 'Simon', 'Hannah', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-06-06 04:21:05+00', '2025-05-21 04:21:05+00'), +('cccdf673-1fad-459e-9b58-c60be8178abb', '01GYB3C1W04Y8BZQE3V6FE7B1A', 'marlene.keller', 'Keller', 'Marlene', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-04-18 21:12:16+00', '2024-08-28 21:12:16+00'), +('ad272b2c-d791-4009-9561-46398314cbe8', '01JZVZJDCG5QN0CP3679MRR83F', 'tobias.berger', 'Berger', 'Tobias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-11 05:33:14+00', '2026-10-05 05:33:14+00'), +('2edd95ac-a4ae-4a9d-b852-c2659d2d386d', '01HPQXJNV8PE3CK4B07WMC2C4H', 'moritz.bauer', 'Bauer', 'Moritz', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-16 02:57:53+00', '2024-07-01 02:57:53+00'), +('68574f98-e25c-4514-a0c9-ae91a3f30631', '01FAWJYNE86CBKHWBAG5W7Y915', 'marie.schmitt', 'Schmitt', 'Marie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-07-18 10:35:25+00', '2022-09-30 10:35:25+00'), +('0b4d305f-e2ef-4067-80e2-460218833173', '01J89ASMN865RAHXZFB830XQTV', 'hannes.lange', 'Lange', 'Hannes', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-09-21 03:42:49+00', '2025-01-13 03:42:49+00'), +('9e3169c4-bb32-43f1-8d36-bcf8ad16b019', '01JCQJDVR8B7J4EX5WB32ZHF0P', 'mila.hartmann', 'Hartmann', 'Mila', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-11-15 09:28:21+00', '2026-03-25 09:28:21+00'), +('a38da56a-654a-4176-9fe8-26a5ccb90526', '01GAKQRKQG3P3GE46M63R73P3S', 'luise.krause', 'Krause', 'Luise', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-08-16 16:28:38+00', '2023-02-01 16:28:38+00'), +('68f313c7-b05c-4b61-90e5-ff8802cbd0df', '01GTWXWS08DWZSHE74SGDW0H7W', 'clara.koch', 'Koch', 'Clara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-07 02:20:05+00', '2023-03-26 02:20:05+00'), +('f2266955-5cdf-44a5-a655-873efd343f94', '01FS0PHB3GGBPFQXQ1DYDK106N', 'jan.schubert', 'Schubert', 'Jan', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-10 00:34:46+00', '2022-08-21 00:34:46+00'), +('c57faaf8-c725-4fae-9ed4-3d4ba181557d', '01GVMCWSDGDYGVAWQKT05NSTKA', 'niklas.schmitt', 'Schmitt', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-16 05:04:46+00', '2023-07-24 05:04:46+00'), +('55f472d2-fe80-4057-9eed-0ad6c235115d', '01FNP84SK8QQRF1D8NDEW2S43M', 'lukas.koenig', 'König', 'Lukas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-29 16:23:45+00', '2022-11-15 16:23:45+00'), +('7f27a2b3-d83b-432c-9084-e4db4a209efb', '01HKHKYPE8AJ3YQDX3GPN0PYRM', 'lara.werner', 'Werner', 'Lara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-01-07 09:27:09+00', '2025-05-06 09:27:09+00'), +('f2547eb5-2c14-4fd3-b34b-d5a1b248be3f', '01FEX030AGG794SRFBJ3K6JY1K', 'fabian.moeller', 'Möller', 'Fabian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-09-06 07:27:46+00', '2022-09-09 07:27:46+00'), +('a2496efc-d83e-4170-aa53-47415521857a', '01HQ9MKMGRHQPMQC0F42S7RG16', 'zoe.moeller', 'Möller', 'Zoe', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-23 00:07:27+00', '2024-09-16 00:07:27+00'), +('91aeddda-134b-4400-ba30-73cc242c5622', '01HN921T785J6YE7J3MTZRBFRE', 'felix.klein', 'Klein', 'Felix', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-01-28 22:11:45+00', '2025-01-08 22:11:45+00'), +('f22888ac-5c91-4445-98ad-7dcbd160a3f2', '01H0AFN5QRDR6KBKM8854Q6BBC', 'simon.krause', 'Krause', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-05-13 11:59:07+00', '2023-10-15 11:59:07+00'), +('515589e7-6af1-442f-ad2d-e719b19ce1fd', '01HHT32VSGF4H85Q2CHRVBA8MT', 'helena.schulze', 'Schulze', 'Helena', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-12-16 19:54:06+00', '2024-11-25 19:54:06+00'), +('a0ef9796-4f68-418a-b2c7-6aa734da94ef', '01KCMZDR90KT3T4239EYMZ4MSP', 'lisa.moeller', 'Möller', 'Lisa', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-12-17 01:40:04+00', '2026-09-06 01:40:04+00'), +('f35119b8-ef20-49f7-966d-9bb9cebccb83', '01FKQ25500SSX3K0GCZX7QF9K5', 'moritz.meyer', 'Meyer', 'Moritz', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-05 03:26:56+00', '2022-10-15 03:26:56+00'), +('6031e774-62ce-4591-9d66-2ad9fdb07a05', '01KPJM0EERKHY7K8M90FXY6ES4', 'lara.hoffmann', 'Hoffmann', 'Lara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-04-19 10:19:03+00', '2026-08-22 10:19:03+00'), +('cdc02a7b-59d7-4f26-87bb-377916bcd5ad', '01HP9HWP40P92BFSC4G4RWD0FC', 'lena.schulze', 'Schulze', 'Lena', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-10 13:04:16+00', '2024-11-30 13:04:16+00'), +('2aff5ce9-9df5-42ca-92c8-048cc05bae13', '01HRRA1C0805NV0205SJKZ6TQ9', 'lina.koehler', 'Köhler', 'Lina', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-03-12 03:07:01+00', '2024-05-26 03:07:01+00'), +('cedbccfc-4328-4789-841a-04c2377235dc', '01HMJGGJR8P8KZAFA3636XM95T', 'marie.keller', 'Keller', 'Marie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-01-20 04:01:57+00', '2024-04-19 04:01:57+00'), +('1c8d9ce5-0f5d-4541-a1b5-9d8acb0374db', '01GYRK0C0GEKD1Y4AVEVCJS4H7', 'mathilda.fischer', 'Fischer', 'Mathilda', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-04-24 02:55:38+00', '2024-08-05 02:55:38+00'), +('4754e93c-d7d0-4495-bc46-b23dd859f334', '01HE0Q9640YCTN2EKGAAC6Z415', 'laura.lorenz', 'Lorenz', 'Laura', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-10-30 16:39:44+00', '2024-08-11 16:39:44+00'), +('32e7e550-9978-41c5-8d21-715cfe08f666', '01FM816H5GHH0YG9X1Q7AA0BJK', 'oskar.peters', 'Peters', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-11 17:37:18+00', '2022-06-17 17:37:18+00'), +('726a6c19-a2f1-476c-b849-3bcbd6ee06f9', '01K0CV4YP07X5W0X3HHS15MR4Z', 'alma.simon', 'Simon', 'Alma', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-17 18:43:04+00', '2026-03-04 18:43:04+00'), +('fb9a36f9-6abd-4e09-9073-b4cad9d6d5eb', '01FTE7QSX88S63TFSQK6G755F9', 'maja.keller', 'Keller', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-27 17:01:13+00', '2022-10-02 17:01:13+00'), +('0cd29c7e-b6e4-4539-81fe-72279ebf105d', '01G50F887GA7C5BYGTQ12RY7RS', 'oskar.weber', 'Weber', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-06-08 01:35:50+00', '2022-10-06 01:35:50+00'), +('b86321c1-74cd-4a38-8c90-1ca6e3d0976b', '01K1SJATX8PKBJE7HYWARTDCFH', 'tim.schulz', 'Schulz', 'Tim', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-08-04 03:34:49+00', '2026-02-16 03:34:49+00'), +('9ee77c79-7e3f-4180-8693-71945e3b888f', '01HP7V8MM0D9R7EHPGQA5EH42V', 'charlotte.weber', 'Weber', 'Charlotte', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-09 21:09:36+00', '2024-07-27 21:09:36+00'), +('a2bba453-9bdc-45ea-8b4f-5b3a8e2d06f4', '01FHBNF65RJP3CA4ANZZKT6ZM1', 'lea.wolf', 'Wolf', 'Lea', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-10-06 20:42:11+00', '2022-04-23 20:42:11+00'), +('f7374dc3-af6b-459e-82ae-1bbb73c7daf6', '01FWECW700Y5BG30K7RHX1PP06', 'jonas.ludwig', 'Ludwig', 'Jonas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-02-21 15:02:24+00', '2022-09-03 15:02:24+00'), +('cac6f2f5-25b1-4553-af9e-9c9c9e4efe41', '01FYCXM8H0TQSF8502P7J457NV', 'marlene.krueger', 'Krüger', 'Marlene', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-03-17 21:48:04+00', '2023-05-27 21:48:04+00'), +('f3d1cbad-6b7c-4684-889c-1e00be306734', '01FZDS916G71TYBNQPWTD6XGQN', 'amelie.walter', 'Walter', 'Amelie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-03-30 16:06:58+00', '2023-05-13 16:06:58+00'), +('3a33192c-135d-445f-90e7-bef7b6b392f8', '01JDN1CVBRAR6673159G3PWAXT', 'mats.schroeder', 'Schröder', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-11-26 20:07:55+00', '2025-08-01 20:07:55+00'), +('1aadba8e-cd1c-471a-904d-4a11eae51875', '01JZBCWR9RKX6FP44RFWGARDR3', 'mila.schubert', 'Schubert', 'Mila', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-04 18:58:59+00', '2026-10-17 18:58:59+00'), +('01b3b99d-ac8d-4768-92d1-bb79a5489f70', '01HSNVABS02NYGDW18ZYMVMPH7', 'emma.behrens', 'Behrens', 'Emma', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-03-23 14:27:00+00', '2025-01-05 14:27:00+00'), +('a82864ed-b2f5-4e44-9510-fd8372356753', '01FBQ8ENT8C46456CTMG6DYX1B', 'karl.schulz', 'Schulz', 'Karl', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-07-28 19:11:25+00', '2021-10-29 19:11:25+00'), +('ef94e213-0b8c-409f-970a-e2bbb914de25', '01HFN0RPJ0C47E2C0P2Z1DZWSN', 'helena.wolf', 'Wolf', 'Helena', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-11-20 00:06:00+00', '2024-05-10 00:06:00+00'), +('bdfc98c5-6e20-47ef-9262-4e08a6205c59', '01FHGT2YH8F1K19XYEHQAVSE6G', 'maja.friedrich', 'Friedrich', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-10-08 20:39:05+00', '2022-02-14 20:39:05+00'), +('e06e6995-be56-4df2-ae1b-5d0072e0d522', '01H1RMBDFGMSQKJSMZMXCSE023', 'jonas.vogel', 'Vogel', 'Jonas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-05-31 10:06:14+00', '2024-09-29 10:06:14+00'), +('c0b34480-313c-4983-9765-33c1df6afe04', '01GF8EDD507X6Z66E14M3Z357S', 'paul.keller', 'Keller', 'Paul', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-10-13 10:32:04+00', '2023-11-03 10:32:04+00'), +('168938fe-be9f-4e91-b6bf-d26016c284cd', '01KQ7HPE78F4XJ0M04JGYH2J02', 'lara.albrecht', 'Albrecht', 'Lara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-04-27 13:22:41+00', '2026-07-14 13:22:41+00'), +('e7e82fb1-ab3d-4cb4-95e0-29d03f201243', '01JPNA8J20BSQW8MVF3N0SJBYZ', 'niklas.huber', 'Huber', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-03-18 19:04:08+00', '2026-03-11 19:04:08+00'), +('36e72fdd-486c-4421-84ef-249c643a0c69', '01GPJF9PB0YVVJKV4E978VVE60', 'lisa.fuchs', 'Fuchs', 'Lisa', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-01-12 07:49:48+00', '2024-02-14 07:49:48+00'), +('628a1fd0-edbe-4dbe-b562-398a932084a6', '01GV85ETBRNNK96SVA097XRVGV', 'zoe.wagner', 'Wagner', 'Zoe', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-11 11:03:55+00', '2024-06-28 11:03:55+00'), +('4007747b-2629-4fff-9efd-41bbc80b0e91', '01G4S2ZNR8TJGB1K0V7EBS7EDM', 'erik.krause', 'Krause', 'Erik', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-06-05 04:46:45+00', '2022-07-13 04:46:45+00'), +('868ad6ad-25a2-47b3-b9c1-e3e12cffd2a0', '01G7QYS7YRSRVSKD4KA2QJQ6DM', 'johanna.wagner', 'Wagner', 'Johanna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-07-12 01:01:11+00', '2023-09-20 01:01:11+00'), +('f6f09013-3afc-4ec1-ab28-9c3a1a8eef19', '01GXB1VXN8N5CPVAHED2463ZGR', 'sophie.bauer', 'Bauer', 'Sophie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-04-06 10:30:17+00', '2023-09-30 10:30:17+00'), +('dcfdc876-bf7d-4857-ad9a-1d7efbd24312', '01H75CYEQGDE4DJZE9SM1KTAYE', 'mira.weber', 'Weber', 'Mira', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-08-06 12:25:26+00', '2024-01-27 12:25:26+00'), +('5d7fd0b8-a27b-494f-b2cf-2f3c2fea796d', '01HK65TZ40EPRX89H9GBJ3WGM8', 'mats.wagner', 'Wagner', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-01-02 22:48:48+00', '2024-11-22 22:48:48+00'), +('cfc56832-06c0-47a1-9792-29fed150762f', '01JXJHBG9GKPP4A90YMTK88R4S', 'nele.lehmann', 'Lehmann', 'Nele', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-06-12 17:00:14+00', '2026-10-19 17:00:14+00'), +('88ac5159-2ba5-4587-9ead-f195ba9f1c28', '01HJRD27J07VCDM2EZM19853C0', 'nora.schulze', 'Schulze', 'Nora', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-12-28 14:25:44+00', '2024-05-13 14:25:44+00'), +('4d7a2bda-ed37-4aa5-b011-471f1d8dc0e5', '01HG9YACM8KGZ93RDAJSVFE8JN', 'anna.zimmermann', 'Zimmermann', 'Anna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-11-28 03:07:17+00', '2024-12-16 03:07:17+00'), +('b4227841-5b26-4e7e-a944-d743b92520d3', '01KNW8TAZRFK82X38EGX9K8876', 'erik.hartmann', 'Hartmann', 'Erik', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-04-10 18:00:11+00', '2027-06-19 18:00:11+00'), +('fa77e04d-8a62-42ab-9132-df8bc83d0abe', '01FQ5PA44GK2EY2Q56CS3SFCP9', 'charlotte.lange', 'Lange', 'Charlotte', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-12-18 02:35:38+00', '2022-06-10 02:35:38+00'), +('1e995d56-b033-4fdc-b2b2-ebc4e5623586', '01KRY14BJ87Q4HBTNV4WREJ4QJ', 'maja.mayer', 'Mayer', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-05-18 17:11:25+00', '2027-09-15 17:11:25+00'), +('98d75ef1-3704-4643-9004-718286758910', '01GZ2XPQR8PRXTAPF4CDWY2F7A', 'anton.koehler', 'Köhler', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-04-28 03:15:01+00', '2024-04-15 03:15:01+00'), +('0d2c65f5-0c07-4962-836d-f7a84efdd2ed', '01FR0CDQF0CY33HEMAQH5N61F5', 'mats.schmid', 'Schmid', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-12-28 11:22:20+00', '2022-02-13 11:22:20+00'), +('df004f8e-c93b-4233-8fb8-400f04abfdb7', '01GD5YT80RGZN8VC378SWJF6BK', 'johanna.krueger', 'Krüger', 'Johanna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-17 14:49:35+00', '2023-03-24 14:49:35+00'), +('5d51aba9-de0b-4a50-bed8-fb494c08c0a0', '01FZNFY590EGMB7VJD7DD10G99', 'jan.lehmann', 'Lehmann', 'Jan', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-04-02 15:57:40+00', '2022-09-18 15:57:40+00'), +('cdae42c3-181f-458b-8c19-2ef89afb38a2', '01JH74HMPRA33K2K9M86WAC5RZ', 'sebastian.krueger', 'Krüger', 'Sebastian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-01-10 03:36:23+00', '2025-03-12 03:36:23+00'), +('96c9af38-7348-435e-a52a-cd03105accc0', '01H2A4G688FFTBT59HS0VP9YYT', 'sophie.vogel', 'Vogel', 'Sophie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-06-07 05:15:33+00', '2023-09-13 05:15:33+00'), +('d67c43a7-ec9e-4314-8aaf-4c16a9878dba', '01GSDJB55R36YFP0NYQD4756JD', 'maja.schubert', 'Schubert', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-02-16 16:53:55+00', '2023-12-18 16:53:55+00'), +('55790b64-8629-430a-88a5-3d372acb0bc5', '01JN4SQG3RPN0077ST4N6P2T5X', 'luis.braun', 'Braun', 'Luis', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-02-27 22:51:39+00', '2025-05-29 22:51:39+00'), +('1c5d68c8-8298-4c4b-8b11-c378a0de6c59', '01KK3VW9ZGY6QV52FJ4H5CJXWD', 'felix.zimmermann', 'Zimmermann', 'Felix', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-03-07 10:00:54+00', '2026-12-15 10:00:54+00'), +('d0414b5e-542e-4b84-ab5b-0fc3d154f66f', '01FBFDKSF0JBTG68YK8BFPN3WK', 'felix.lang', 'Lang', 'Felix', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-07-25 18:07:40+00', '2021-09-15 18:07:40+00'), +('cd16804e-9d1d-403d-8c77-ae51068468fa', '01HBPD2ZKR1MKZEAPTKCQK4X8Y', 'daniel.maier', 'Maier', 'Daniel', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-10-01 19:57:47+00', '2024-03-23 19:57:47+00'), +('d9307dda-2c15-412b-9c28-443525046976', '01FCKGTF20CTA11EJRWF97CAYW', 'david.heinrich', 'Heinrich', 'David', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-08-08 18:36:24+00', '2021-10-05 18:36:24+00'), +('86495ca3-7b76-4f1c-8d0b-ddbbeeff7712', '01GVG3JM4G4RRJDNWMTC6VJMR1', 'mats.weber', 'Weber', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-14 13:04:58+00', '2024-02-28 13:04:58+00'), +('371ea09f-f746-4a25-919a-c4349d31309a', '01JHQ0YABRKCVPN2K1DZ1V546G', 'simon.meyer', 'Meyer', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-01-16 07:41:15+00', '2025-10-28 07:41:15+00'), +('7903d2f8-af09-4ab5-a490-8f7af21248b3', '01H4EWTP009GFQ2NH9XVM97FHX', 'aaron.keller', 'Keller', 'Aaron', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-07-03 22:09:04+00', '2024-02-18 22:09:04+00'), +('47214b2c-8fc7-4c47-90d6-d504945eb435', '01GWVXCG98QNVFBJDG8YE11HBJ', 'karl.krueger', 'Krüger', 'Karl', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-31 13:23:21+00', '2023-04-30 13:23:21+00'), +('68a35fd7-3e82-498a-8d8c-575d69bc9c0d', '01FWWPVCT8N48M7FYS64V0BFTM', 'max.heinrich', 'Heinrich', 'Max', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-02-27 04:26:05+00', '2023-01-13 04:26:05+00'), +('2a8d2268-cc1b-48c9-b778-ee9b79c21020', '01JK2JS2EG02QJG4M5K89KEWWY', 'tim.schaefer', 'Schäfer', 'Tim', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-02-02 05:40:18+00', '2025-11-11 05:40:18+00'), +('cc2e3ae8-b4a7-45dc-9ddf-b402981f2d05', '01G900KTP07D10GPRNZD58ZY0G', 'anton.schmid', 'Schmid', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-07-27 14:22:48+00', '2023-03-24 14:22:48+00'), +('32b71aec-ce41-47e2-99f8-060e825eb675', '01JBYWRZ8GXJ2KQGD9GYQZGXAD', 'daniel.hahn', 'Hahn', 'Daniel', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-11-05 19:28:10+00', '2024-12-11 19:28:10+00'), +('4a282138-c082-4c18-90a5-a51d0b0a70da', '01FR5QMMN8XW2CVK637AMM6JN0', 'clara.bauer', 'Bauer', 'Clara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-12-30 13:14:33+00', '2022-10-27 13:14:33+00'), +('f0229c95-01a4-4223-983b-11a65d333d0b', '01K7MA63C0X26JC91B82JWPRX2', 'lara.lehmann', 'Lehmann', 'Lara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-15 16:10:24+00', '2026-02-07 16:10:24+00'), +('ffbacc8e-a409-473e-b1f3-ffb7c3fb59ac', '01K35Z2EV89TZWNTDMMWN7KTK8', 'sebastian.frank', 'Frank', 'Sebastian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-08-21 09:24:01+00', '2025-09-20 09:24:01+00'), +('776aed63-d4d0-47bd-9466-51093c0117fd', '01K63P3WARCW5B68DZ456XHTW5', 'daniel.schmid', 'Schmid', 'Daniel', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-09-26 18:56:07+00', '2026-09-13 18:56:07+00'), +('5962cb6d-9688-4302-89a3-704c093341b8', '01H1MAQVDG18T9J67E8RA9FNJR', 'sebastian.herrmann', 'Herrmann', 'Sebastian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-05-29 18:01:18+00', '2024-01-08 18:01:18+00'), +('e4e38ab1-1bff-43d7-856a-e5b9f81996cb', '01J5DQW12R7AD1ER9JXM39Y57H', 'ida.vogel', 'Vogel', 'Ida', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-16 14:01:11+00', '2024-12-22 14:01:11+00'), +('d3bb8d11-e033-4fe7-999e-3fa1c5c2561d', '01GBVD26DRR6DC6PRWHG54S7VZ', 'jonas.friedrich', 'Friedrich', 'Jonas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-01 02:11:15+00', '2023-06-23 02:11:15+00'), +('18e81d11-3363-4bfe-9ef2-bd6600e9b449', '01H52E3WXG5SV4EDA4Z7N87FR0', 'elias.maier', 'Maier', 'Elias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-07-11 12:16:46+00', '2024-02-22 12:16:46+00'), +('653c52d2-4399-421e-b5f4-506be8573534', '01FMD7M628B49QGMMSYGBNQACD', 'ida.lang', 'Lang', 'Ida', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-13 18:05:49+00', '2023-03-24 18:05:49+00'), +('ee722fd7-999b-4800-b33c-f2e91590d4a5', '01J5QDEKTGD5GN8VG3B8MJQMAP', 'anton.hartmann', 'Hartmann', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-20 08:11:30+00', '2025-11-02 08:11:30+00'), +('d7926a46-0660-4705-a0ba-87c382b5c73d', '01GDECMSP015J8SMS1P31B077X', 'anni.braun', 'Braun', 'Anni', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-20 21:25:12+00', '2023-11-10 21:25:12+00'), +('93713c0f-433b-4a59-b0bc-1684e2a0bcff', '01J6RA4RVGRQ2ZGQG6M4ETT2DJ', 'hannes.meyer', 'Meyer', 'Hannes', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-09-02 02:48:38+00', '2025-02-14 02:48:38+00'), +('27ad2715-9b9b-4368-afcd-89bc9c2eebe2', '01H5W4ZT0GES28NSV9XQF8XQGB', 'mila.berger', 'Berger', 'Mila', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-07-21 11:57:30+00', '2024-06-21 11:57:30+00'), +('5b338bc0-e2a8-46c1-a4f2-8fbdf914495e', '01JVMR7G40FYEW39J27EFP9VQD', 'anton.fischer', 'Fischer', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-05-19 17:07:28+00', '2025-11-20 17:07:28+00'), +('195edd2e-73e9-4ce7-a4f2-dc0bcddbc190', '01KJ4CFHT0XNXJ32GN6T69KA4M', 'oskar.friedrich', 'Friedrich', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-02-23 04:35:20+00', '2026-07-09 04:35:20+00'), +('fc907286-e002-4a50-bcc2-9c015abae32b', '01G7FGPJH0M54ZJ8169G3P7Z6G', 'daniel.schmid2', 'Schmid', 'Daniel', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-07-08 18:21:08+00', '2022-09-08 18:21:08+00'), +('929fb2ff-ac5a-4d06-8efc-01a2af20b253', '01K0G21C3GD1S8TR2S6R1R0AVG', 'tobias.hahn', 'Hahn', 'Tobias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-19 00:41:10+00', '2026-04-27 00:41:10+00'), +('15ffb882-2673-430b-9b6b-206922e0f957', '01FFYGN018MQ81W4J2WFS754NP', 'anna.schroeder', 'Schröder', 'Anna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-09-19 07:52:09+00', '2022-05-13 07:52:09+00'), +('27bb2014-a22a-425f-b53e-d1bf1beadb8c', '01G4H03D2GD9EMBZSCGET9BPTE', 'nele.koehler', 'Köhler', 'Nele', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-06-02 01:22:26+00', '2023-02-17 01:22:26+00'), +('94e5ba50-d2b9-4ebb-84bd-247545dfbb47', '01JJCW7EQ8635P4CNHF8JGEGC1', 'nora.maier', 'Maier', 'Nora', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-01-24 19:22:09+00', '2025-11-02 19:22:09+00'), +('95a0bbde-86a9-4522-93de-d0ec68d48806', '01F9R55EV0RQ74DE16B48XY4PQ', 'luise.vogel', 'Vogel', 'Luise', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-07-04 07:01:48+00', '2022-09-19 07:01:48+00'), +('7ad58273-5bf1-4548-84b0-fa269f10f968', '01FRR72Y8G91M01A0XX790Z1YG', 'amelie.hartmann', 'Hartmann', 'Amelie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-06 17:30:50+00', '2022-05-22 17:30:50+00'), +('87eb4971-c89e-48ab-b07b-87cfb5f857d8', '01GST7DM084R5DV0DQYNYNJ4E6', 'simon.albrecht', 'Albrecht', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-02-21 14:53:09+00', '2024-01-24 14:53:09+00'), +('5b955957-7d90-4797-9537-85c9726b4a52', '01HATEMEQ0HCFC6JWZQE6MMXDR', 'alma.walter', 'Walter', 'Alma', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-09-20 23:26:04+00', '2024-03-08 23:26:04+00'), +('0f7aea57-474b-417c-99c6-d078167b9e89', '01J5HY4Z18C8594RAMKMYJ4Q1G', 'erik.schulze', 'Schulze', 'Erik', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-18 05:07:53+00', '2025-08-10 05:07:53+00'), +('d5101708-40ac-4490-9c26-9f4a25e35c1f', '01FTRZ4RCRF4ABX97Z658Q807R', 'emily.ludwig', 'Ludwig', 'Emily', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-31 21:02:39+00', '2022-02-22 21:02:39+00'), +('e0bb3a79-3de6-48e0-b93d-9ffc42a75a85', '01GD5P0CFR15XFDZNW1SZCVPXF', 'erik.schmitt', 'Schmitt', 'Erik', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-17 12:15:39+00', '2022-12-03 12:15:39+00'), +('ddca1645-e8ee-4b13-bfec-872a64f68c52', '01GSBR10C8V1ADZJQGPWCV2ZM0', 'felix.herrmann', 'Herrmann', 'Felix', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-02-15 23:54:45+00', '2024-05-05 23:54:45+00'), +('f6c6292b-c474-4c59-b6fa-576447be4ac5', '01H3WJFE5GD3T29STYHTWF4513', 'oskar.wagner', 'Wagner', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-06-26 19:21:50+00', '2023-07-03 19:21:50+00'), +('4a940c3d-0baa-4e21-a694-3f0c0a46bfd1', '01HD80JDMRCQ0V2N8PQJFRVVCQ', 'nele.weber', 'Weber', 'Nele', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-10-21 02:21:03+00', '2024-04-11 02:21:03+00'), +('7a60a67f-98e3-44e0-a856-2fce8af642db', '01J4F3VRRGM1TN245MJBT44ZGB', 'tim.ludwig', 'Ludwig', 'Tim', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-04 16:34:18+00', '2025-02-14 16:34:18+00'), +('3b2075df-f5fb-46eb-aed2-6c9a746c3aa9', '01H1ECS8RRM69KR6F73M8R81DD', 'mats.berger', 'Berger', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-05-27 10:41:35+00', '2024-04-07 10:41:35+00'), +('628e82d3-2b7c-4a8f-ad77-1b78d8ae2aa9', '01FZJ4MR4GRAKHJCWHHKX78NV1', 'daniel.schroeder', 'Schröder', 'Daniel', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-04-01 08:42:34+00', '2022-11-09 08:42:34+00'), +('adf341a2-960d-42a1-ae8a-dba8874d8940', '01JZ6X30E8AC50QHGGCR3PJ5JZ', 'max.schmid', 'Schmid', 'Max', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-03 01:05:49+00', '2026-10-08 01:05:49+00'), +('48deb95f-e97a-4f60-9b30-c164334a0534', '01HZG32A08GZX3X0XS3WJM83Z0', 'lea.braun', 'Braun', 'Lea', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-06-03 22:21:09+00', '2025-01-09 22:21:09+00'), +('497907c9-7ad1-4f02-a8e4-553f5211b0b4', '01GA889MM0KG3H8DT514PD2P3A', 'anton.huber', 'Huber', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-08-12 05:26:40+00', '2022-11-07 05:26:40+00'), +('23caa036-c345-470a-afaa-1d260800adbf', '01GA09GCAG4JHSAJE967MTYACX', 'erik.peters', 'Peters', 'Erik', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-08-09 03:13:54+00', '2023-04-20 03:13:54+00'), +('af7b9252-3e38-4345-85e8-cad636db440c', '01GHFPTMPR09KTNDGJS50NT5TA', 'emily.schulze', 'Schulze', 'Emily', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-11-10 02:45:11+00', '2023-07-03 02:45:11+00'), +('0a0ce766-c02c-4ba0-a6bf-27ef7d56ba0b', '01JB4S7GM8Y7X7259KYC9EH78G', 'mathilda.simon', 'Simon', 'Mathilda', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-10-26 16:05:57+00', '2025-01-14 16:05:57+00'), +('c8b9da3f-35f6-466d-935c-f4aebac154f2', '01J996HM9G803B1E32XXP9Z0NS', 'jan.kaiser', 'Kaiser', 'Jan', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-10-03 12:44:14+00', '2026-02-07 12:44:14+00'), +('0b068bac-a3ad-42eb-b691-2f7232339f6e', '01J8VF46F83D6QQCW60QD78CAJ', 'hannes.ludwig', 'Ludwig', 'Hannes', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-09-28 04:44:49+00', '2025-04-12 04:44:49+00'), +('abfa8b22-0c6c-446d-9794-ccdb63290f3e', '01GWAXBR6RPC1ZW88GT15VWJQZ', 'tobias.schmitt', 'Schmitt', 'Tobias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-24 22:55:51+00', '2024-01-12 22:55:51+00'), +('2978cf15-3fd6-4ac5-ba34-783286daaec5', '01FHT635J8J3G044NNAH348P5M', 'greta.schmidt', 'Schmidt', 'Greta', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-10-12 12:02:05+00', '2022-05-02 12:02:05+00'), +('7765426d-c451-42a5-ac14-eb0ee939b37d', '01GPP4ABE8952EE9NY4FKQDE46', 'finn.behrens', 'Behrens', 'Finn', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-01-13 17:54:53+00', '2024-03-14 17:54:53+00'), +('399ddaf7-e742-40bf-b9ee-6bccc1cedfdb', '01FPE4ZRT8KVS31B3XFEHFJRX3', 'emily.fuchs', 'Fuchs', 'Emily', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-12-08 23:10:21+00', '2022-03-30 23:10:21+00'), +('80986ecd-c205-4ef9-b117-bc2a8a9c2ad6', '01FY1JCKG0M3A260ZPRVB9TGQH', 'david.weiss', 'Weiß', 'David', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-03-13 12:00:00+00', '2023-02-24 12:00:00+00'), +('96105b22-aa82-44ef-9552-70a1704b7414', '01GK48491RE3CWKRK0EH7HCED0', 'max.simon', 'Simon', 'Max', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-11-30 12:28:03+00', '2022-12-20 12:28:03+00'), +('53ecd982-4d88-426f-a168-fa8e5af0860d', '01HYFJAP60AEHMQ32VVKMDTQJT', 'leon.kaiser', 'Kaiser', 'Leon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-05-22 07:12:56+00', '2024-07-07 07:12:56+00'), +('1dd2a5c9-470c-4739-be0b-8cb3293ec866', '01JSGQS6FGZ2SY0QXRQJ51D83C', 'amelie.koch', 'Koch', 'Amelie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-04-23 07:11:18+00', '2026-05-30 07:11:18+00'), +('37ff83df-2dc8-48d3-8e1e-e7120693bd34', '01H7Y1CZP0X7ZM3J6AHGN1Z5AT', 'florian.koenig', 'König', 'Florian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-08-16 02:04:40+00', '2024-10-14 02:04:40+00'), +('08b51079-6553-4de8-8cc2-66f4384518a0', '01FNQ6J150SQH5DDGAZKFD4NEG', 'nora.stein', 'Stein', 'Nora', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-11-30 01:15:16+00', '2022-12-17 01:15:16+00'), +('ba604264-7ca2-47e5-9964-81d16412b49d', '01KE6EVGWRVGS3KGF2CBVPS3PY', 'niklas.schulze', 'Schulze', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-01-05 06:52:31+00', '2027-01-26 06:52:31+00'), +('50f9631c-3f76-4060-afd3-b8813981998c', '01FF5KK3J0CM1CMTH24GBHW5PC', 'theo.stein', 'Stein', 'Theo', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-09-09 15:42:32+00', '2022-03-15 15:42:32+00'), +('e8778caa-c47b-4119-889d-9586a75bccf4', '01H27SSP58QYZTRFKV1NF5Q89X', 'mia.schwarz', 'Schwarz', 'Mia', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-06-06 07:30:01+00', '2024-01-24 07:30:01+00'), +('2ec758cd-d452-4b9c-976a-ab2524b0a692', '01HVRKTE38NK11QF4HYXFHHSC3', 'clara.kaiser', 'Kaiser', 'Clara', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-04-18 12:45:05+00', '2025-08-12 12:45:05+00'), +('489ba428-b355-4fae-966e-c567201af148', '01KPDSYCQRAFW8ZE34WKRQ722P', 'emily.maier', 'Maier', 'Emily', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-04-17 13:26:35+00', '2027-07-13 13:26:35+00'), +('ecfcc5cb-fffb-471f-9498-bd56fb733b04', '01KG4WYXE8PDWYHKD0SHVDMF50', 'aaron.scholz', 'Scholz', 'Aaron', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2026-01-29 12:51:57+00', '2027-03-26 12:51:57+00'), +('fcc7c33b-a56c-4e63-91e9-f8e6be59b650', '01HQAESNX0163F4FHJ7M5SQP9M', 'simon.scholz', 'Scholz', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-23 07:45:08+00', '2024-05-04 07:45:08+00'), +('03ee355d-c583-405e-8de8-cfe8c7c3a229', '01K7GXA4284AX8K757GBHJ6V8T', 'simon.koehler', 'Köhler', 'Simon', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-14 08:27:41+00', '2026-02-11 08:27:41+00'), +('f8dc55b0-f72b-404d-81fc-916345d3de13', '01HXF2EXZ0Q81BW1AQGYB5QVYZ', 'lina.schulze', 'Schulze', 'Lina', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-05-09 16:19:56+00', '2024-12-09 16:19:56+00'), +('01b5fb82-cebc-4105-9096-2470fb8c382b', '01HP6WBBCRKPDQTHERXZAPST7A', 'nele.winkler', 'Winkler', 'Nele', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-02-09 12:09:19+00', '2024-03-30 12:09:19+00'), +('d25dc5cd-6695-44a7-9738-1081352d99f3', '01JCJJ7800E60KF7QWDSFDP39W', 'anton.heinrich', 'Heinrich', 'Anton', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-11-13 10:48:32+00', '2025-11-01 10:48:32+00'), +('21c9b917-7df3-42d8-9641-5f7aa1e54af1', '01JKPEBBMRBR4TZ25XXKXHW51V', 'oskar.heinrich', 'Heinrich', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-02-09 22:47:43+00', '2025-03-31 22:47:43+00'), +('33b05f63-9602-4937-8efb-ce9d32873a4e', '01HRZX7Y00YBS1YHEVZQVXRSZ0', 'marlene.fischer', 'Fischer', 'Marlene', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-03-15 01:57:20+00', '2024-06-20 01:57:20+00'), +('9b7a8197-e6ea-4b60-bead-efea184e4e3e', '01GDCHSF2RZ2CSHQMEQEHVBKPE', 'hannes.meyer2', 'Meyer', 'Hannes', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-20 04:16:39+00', '2023-08-14 04:16:39+00'), +('da405196-8676-4d09-947d-946214a870c6', '01FRY1NA0RS5VJ0F4C4QYJ6QFF', 'jonas.fischer', 'Fischer', 'Jonas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-08 23:51:27+00', '2022-05-12 23:51:27+00'), +('2ae6d92e-34c4-42af-aabb-545c7841d4c0', '01FHTK380RT0J3EJ4PFYB1TCXT', 'julian.weber', 'Weber', 'Julian', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-10-12 15:49:19+00', '2022-01-26 15:49:19+00'), +('7ab3c06e-c47f-495c-8ef5-091772a44188', '01FV1Q7SS002WSH4J0NKK8JCX9', 'emily.hartmann', 'Hartmann', 'Emily', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-02-04 06:37:40+00', '2023-03-14 06:37:40+00'), +('185d4612-9db2-47e6-8b76-1017282450c6', '01K2RVRGTG5JNWRTV6WN02NQWW', 'maja.ludwig', 'Ludwig', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-08-16 07:16:02+00', '2026-05-19 07:16:02+00'), +('df8200e4-3a01-4ab6-9ceb-6a969ea12861', '01FBVHB1P8S8Y5QDE41G1WVRQ3', 'niklas.moeller', 'Möller', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2021-07-30 11:03:41+00', '2021-10-05 11:03:41+00'), +('51ccf808-bef8-4cd1-a20b-97134e3f31c6', '01J58A5JZ041SGTTG5PD1YY80P', 'tobias.kaiser', 'Kaiser', 'Tobias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-14 11:25:32+00', '2024-11-11 11:25:32+00'), +('845bc757-f7d5-406e-8906-2046a9b16286', '01K7XXG8QGBJQCEB0ZWDSC4AGP', 'amelie.koenig', 'König', 'Amelie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-19 09:41:10+00', '2026-06-19 09:41:10+00'), +('4ac7ccbc-0c20-433e-b9af-b2402229dcac', '01K8KJGY1RKNVZ41P2D4WBEZ07', 'luise.kaiser', 'Kaiser', 'Luise', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-27 19:32:35+00', '2026-07-11 19:32:35+00'), +('90fd1601-dcde-478f-b92c-b96f2b76cda1', '01FSESRRM8MJRQAGJ68S6KF99S', 'hannah.schubert', 'Schubert', 'Hannah', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-01-15 12:00:37+00', '2022-10-08 12:00:37+00'), +('b946b705-d088-44c5-931c-b209f5b82e0b', '01HBPHYD80FP11Q8V2WYQT85F5', 'emma.fischer', 'Fischer', 'Emma', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-10-01 21:22:40+00', '2024-05-06 21:22:40+00'), +('e3ae342a-c77e-4d6b-92a0-fb4d10aa46f4', '01KD9DT70841711M4D24JZJD5Z', 'oskar.weber2', 'Weber', 'Oskar', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-12-25 00:16:21+00', '2026-11-01 00:16:21+00'), +('141e46a7-6774-42dc-b388-d112c8600e87', '01GJ85C9Q0C6156FTTEAV4Z9AA', 'maja.peters', 'Peters', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-11-19 14:41:16+00', '2023-08-26 14:41:16+00'), +('e1ab15ac-82da-460b-a5d6-fe45c3f94eb3', '01H784KMBGPEKWP22RFMCP7GKD', 'greta.schulze', 'Schulze', 'Greta', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-08-07 13:57:26+00', '2024-03-14 13:57:26+00'), +('2949d283-512c-44c5-a1fb-7649ef92140f', '01GEPKPF30Q248T92E7V2DNFEV', 'niklas.ludwig', 'Ludwig', 'Niklas', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-10-06 12:18:04+00', '2023-12-29 12:18:04+00'), +('ee2d328d-c72d-49ea-b885-56f67a0bdab2', '01HG7DV4DREGCD7MDZ1XBC8E74', 'charlotte.lehmann', 'Lehmann', 'Charlotte', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-11-27 03:40:51+00', '2024-06-25 03:40:51+00'), +('26d294b0-b97c-480d-a1eb-8fb713fe2022', '01G2C7Z2K8N92500CBFDPM0SZM', 'mila.meier', 'Meier', 'Mila', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-05-06 08:32:17+00', '2022-10-13 08:32:17+00'), +('1cb6fbb3-a1f2-41a5-b434-ef21993c0287', '01K1EABXE82QDD9VR0N8BNN0FC', 'david.werner', 'Werner', 'David', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-07-30 18:43:57+00', '2025-09-02 18:43:57+00'), +('5b4cf034-4136-4dd2-b5c4-86db14aaa0b5', '01KAPTS2881XD8WVJG0CGMYFRJ', 'anna.lehmann', 'Lehmann', 'Anna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-11-22 22:25:57+00', '2027-01-11 22:25:57+00'), +('52d7be38-07c7-48fc-835e-b018ba265990', '01K6E6YAFRY3PTMMY1KKFT9EWZ', 'moritz.moeller', 'Möller', 'Moritz', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-09-30 21:02:35+00', '2026-03-30 21:02:35+00'), +('d4911ed7-ee66-43f9-8801-141097bf36e7', '01G3TRJJH89ZY9KD3STH4T455E', 'karl.berger', 'Berger', 'Karl', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-05-24 10:07:37+00', '2023-10-01 10:07:37+00'), +('ac2f22ec-ee3d-4e0d-9349-2ac683d023ee', '01GVBE1A88FDRAG7YYRCKSRSCA', 'marlene.wagner', 'Wagner', 'Marlene', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-03-12 17:31:33+00', '2023-06-28 17:31:33+00'), +('6529bb7e-7a04-4987-8109-0d9081244503', '01K8S41Y1G3NMNW63V4J76ETG1', 'aaron.ludwig', 'Ludwig', 'Aaron', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-29 23:15:10+00', '2027-01-04 23:15:10+00'), +('2cf95471-eb76-4316-adce-a0893da71073', '01JN9P00Q0RHVFJYZ2VP7SPWNE', 'maja.huber', 'Huber', 'Maja', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-03-01 20:22:36+00', '2026-05-07 20:22:36+00'), +('eb05f4f6-688f-422f-a08d-fcf0f5f658bb', '01GE62VA2GPFJ4BX8CA8Q2ZFVQ', 'emma.fuchs', 'Fuchs', 'Emma', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-30 02:15:46+00', '2022-10-14 02:15:46+00'), +('f4555e97-2514-4bb0-af21-0b16eaf8510c', '01J2MKHKTR4JPDXBTJHMQ7161R', 'zoe.behrens', 'Behrens', 'Zoe', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-07-12 23:13:11+00', '2024-07-15 23:13:11+00'), +('cdb81109-a9ae-40be-9f2c-2f9e7a80bd95', '01K36B83K8QW0HEZBEFR3XJ96E', 'mila.weber', 'Weber', 'Mila', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-08-21 12:56:49+00', '2026-12-31 12:56:49+00'), +('e8a01b7f-d4f9-45d5-98ff-27cd3e09acb2', '01HNDXH8309Z3NXEYCMMM4QYB2', 'charlotte.schmitt', 'Schmitt', 'Charlotte', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-01-30 19:29:00+00', '2024-07-22 19:29:00+00'), +('c198020c-41f4-454b-996f-a75bbc44b394', '01GX1595304ZA0TXY5M3H25DN6', 'helena.keller', 'Keller', 'Helena', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-04-02 14:17:32+00', '2023-05-15 14:17:32+00'), +('71474c78-31c2-402a-88ad-219eb6d611ec', '01GMT2MZBGE5QMBA4854AE51Q5', 'ben.friedrich', 'Friedrich', 'Ben', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-12-21 10:11:18+00', '2023-12-01 10:11:18+00'), +('ca5b8997-72cd-4f7b-aeed-d4a094168d91', '01GPH6BNE8R51KEBW7392YWGSD', 'karl.koehler', 'Köhler', 'Karl', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-01-11 19:54:21+00', '2023-08-11 19:54:21+00'), +('aba86d1f-7b93-45b4-9255-d9967b25565e', '01J1QZA55RNPRTV7XG1N485NSW', 'luise.becker', 'Becker', 'Luise', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-07-01 20:20:51+00', '2024-08-26 20:20:51+00'), +('bd529924-02d2-4dba-bb1b-6b7b86fa9847', '01GCN05QYRZG26ABZV94W77SBZ', 'mats.koenig', 'König', 'Mats', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-09-11 00:46:15+00', '2022-10-04 00:46:15+00'), +('9a82df38-1c73-4a8e-81f3-bed834eff1d6', '01JRY1V4E84CGW8W84R0V16VGN', 'lea.mueller', 'Müller', 'Lea', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-04-16 01:01:33+00', '2026-08-13 01:01:33+00'), +('1c4bd281-02c9-48c4-a9ac-82ae01738eb9', '01J4K9Z12GDRZVYF2H81ZN998H', 'david.braun', 'Braun', 'David', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-08-06 07:37:54+00', '2024-08-09 07:37:54+00'), +('9b2d6d86-30d8-4ee1-8f35-d91c7339d64a', '01HVY5VQJGHW48049HDCXEH296', 'elias.schulz', 'Schulz', 'Elias', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-04-20 16:36:34+00', '2025-04-15 16:36:34+00'), +('fedab681-3295-4728-b3f4-190fc35e6087', '01HS5Z7PE0XF8QBCKMAM2CRFPY', 'marlene.weber', 'Weber', 'Marlene', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-03-17 10:27:36+00', '2024-10-26 10:27:36+00'), +('de164cb5-4800-43f8-b74e-7e80c192a31d', '01J6YRXG6RPPGPF222169CMMJT', 'lena.berger', 'Berger', 'Lena', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-09-04 15:02:15+00', '2025-04-11 15:02:15+00'), +('3badc2f7-31e9-41e9-969d-5b9f5ab904af', '01K7MVM6R05FZN6901ZKVNHQ72', 'amelie.braun', 'Braun', 'Amelie', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-15 21:15:12+00', '2025-10-25 21:15:12+00'), +('7cd7162d-bc13-4466-8bb1-ce7e9b6fa12d', '01G8YB6Z303CCXGC10G5QWRNYX', 'hannes.albrecht', 'Albrecht', 'Hannes', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-07-26 22:49:32+00', '2022-09-09 22:49:32+00'), +('0850b11a-2354-4b52-80b6-0323b5614171', '01GSGM8MN8VVD6AM7Q98A24DSZ', 'johanna.lehmann', 'Lehmann', 'Johanna', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2023-02-17 21:25:13+00', '2023-11-12 21:25:13+00'), +('4ee00e98-40be-47c6-9ef4-17914e9ef0ee', '01J2N3QE4R2E6JP2NYVQ3Q8H6B', 'zoe.vogel', 'Vogel', 'Zoe', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2024-07-13 03:55:59+00', '2024-12-30 03:55:59+00'), +('7c464ee2-246d-4fbf-a70b-128aa551c605', '01K7SGQBG8RTVEFTMDB8RT7B2D', 'luise.lang', 'Lang', 'Luise', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-10-17 16:40:53+00', '2026-07-05 16:40:53+00'), +('3c6ec8f6-5d42-45de-876b-882317d97170', '01G2PZ5898398KRZ0XGMJWY021', 'jan.lange', 'Lange', 'Jan', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2022-05-10 12:30:01+00', '2023-07-01 12:30:01+00'), +('8871b30e-e056-4967-a473-8c66168096a1', '01JT2KCWF0R9BW57BR5CKJ4YBE', 'noah.schwarz', 'Schwarz', 'Noah', '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', '2025-04-30 05:41:00+00', '2026-03-04 05:41:00+00'); diff --git a/src/domain.rs b/src/domain.rs index 5474880..51f5645 100644 --- a/src/domain.rs +++ b/src/domain.rs @@ -1,4 +1,4 @@ -// pub mod benutzer; +pub mod benutzer; pub mod gruppe; pub mod liegenschaft; pub mod rolle; diff --git a/src/domain/benutzer.rs b/src/domain/benutzer.rs index 758c8f6..f40bcec 100644 --- a/src/domain/benutzer.rs +++ b/src/domain/benutzer.rs @@ -1,6 +1,7 @@ pub mod dataloader; pub mod entity; pub mod model; -pub mod queries; +pub mod mutation; +pub mod query; pub mod repository; pub mod service; diff --git a/src/domain/benutzer/dataloader.rs b/src/domain/benutzer/dataloader.rs index 4523da9..ce0cb5d 100644 --- a/src/domain/benutzer/dataloader.rs +++ b/src/domain/benutzer/dataloader.rs @@ -1,2 +1,2 @@ -pub mod benutzer_gruppen_kumulativ; -pub mod benutzer_rollen; +// pub mod benutzer_gruppen_kumulativ; +// pub mod benutzer_rollen; diff --git a/src/domain/benutzer/entity.rs b/src/domain/benutzer/entity.rs index 7191943..b3a10d8 100644 --- a/src/domain/benutzer/entity.rs +++ b/src/domain/benutzer/entity.rs @@ -1,3 +1,5 @@ pub mod benutzer; -pub use benutzer::Benutzer; +pub use benutzer::BenutzerErstellen; +pub use benutzer::BenutzerLoeschen; +pub use benutzer::BenutzerUpdate; diff --git a/src/domain/benutzer/entity/benutzer.rs b/src/domain/benutzer/entity/benutzer.rs index 2cb8b00..7fd8e06 100644 --- a/src/domain/benutzer/entity/benutzer.rs +++ b/src/domain/benutzer/entity/benutzer.rs @@ -1,8 +1,30 @@ -use crate::scalar::Id; +use crate::scalar::{Id, Time, Ulid}; -pub struct Benutzer { - pub id: Id, +// pub struct Benutzer { +// pub id: Id, +// pub kennung: String, +// pub nachname: String, +// pub vorname: String, +// } + +pub struct BenutzerErstellen { + pub benutzer_id: Id, + pub id: Ulid, pub kennung: String, pub nachname: String, pub vorname: String, + pub erstellt_am: Time, + pub geaendert_am: Time, +} + +pub struct BenutzerLoeschen { + pub id: Ulid, +} + +pub struct BenutzerUpdate { + pub id: Ulid, + pub kennung: Option, + pub nachname: Option, + pub vorname: Option, + pub geaendert_am: Time, } diff --git a/src/domain/benutzer/model.rs b/src/domain/benutzer/model.rs index 208c43e..4a484e0 100644 --- a/src/domain/benutzer/model.rs +++ b/src/domain/benutzer/model.rs @@ -1,8 +1,8 @@ pub mod benutzer; -pub mod benutzer_create_input; +pub mod benutzer_erstellen_input; pub mod benutzer_gruppen_ansicht; pub use benutzer::Benutzer; -pub use benutzer_create_input::BenutzerCreateInput; -pub use benutzer_gruppen_ansicht::GruppeAnsicht; -pub use benutzer_gruppen_ansicht::Herkunft; +pub use benutzer_erstellen_input::BenutzerErstellenInput; +// pub use benutzer_gruppen_ansicht::GruppeAnsicht; +// pub use benutzer_gruppen_ansicht::Herkunft; diff --git a/src/domain/benutzer/model/benutzer.rs b/src/domain/benutzer/model/benutzer.rs index de67d55..dccec3e 100644 --- a/src/domain/benutzer/model/benutzer.rs +++ b/src/domain/benutzer/model/benutzer.rs @@ -3,7 +3,7 @@ use async_graphql::{ComplexObject, Context, FieldResult, SimpleObject}; use crate::{ dataloader::LoaderContext, domain::{gruppe::model::Gruppe, rolle::model::Rolle}, - scalar::Ulid, + scalar::{Time, Ulid}, }; #[derive(sqlx::FromRow, SimpleObject)] @@ -20,6 +20,12 @@ pub struct Benutzer { /// Der Nachname des Benutzers pub nachname: String, + + /// Wann der Benutzer erstellt wurde + pub erstellt_am: Time, + + /// Wann der Benutzer geaendert wurde + pub geaendert_am: Time, } #[ComplexObject] diff --git a/src/domain/benutzer/model/benutzer_create_input.rs b/src/domain/benutzer/model/benutzer_erstellen_input.rs similarity index 89% rename from src/domain/benutzer/model/benutzer_create_input.rs rename to src/domain/benutzer/model/benutzer_erstellen_input.rs index 44c9f01..a956f9e 100644 --- a/src/domain/benutzer/model/benutzer_create_input.rs +++ b/src/domain/benutzer/model/benutzer_erstellen_input.rs @@ -3,7 +3,7 @@ use async_graphql::InputObject; use crate::scalar::Ulid; #[derive(InputObject)] -pub struct BenutzerCreateInput { +pub struct BenutzerErstellenInput { // #[graphql(validator(min_length = 6, max_length = 8))] pub kennung: String, pub vorname: String, diff --git a/src/domain/benutzer/mutation.rs b/src/domain/benutzer/mutation.rs new file mode 100644 index 0000000..5199ee3 --- /dev/null +++ b/src/domain/benutzer/mutation.rs @@ -0,0 +1,3 @@ +pub mod benutzer; + +pub use benutzer::BenutzerMutation; diff --git a/src/domain/benutzer/mutation/benutzer.rs b/src/domain/benutzer/mutation/benutzer.rs new file mode 100644 index 0000000..2c37ee1 --- /dev/null +++ b/src/domain/benutzer/mutation/benutzer.rs @@ -0,0 +1,49 @@ +use crate::domain::benutzer::{ + model::{Benutzer, BenutzerErstellenInput}, + service::Service, +}; + +use async_graphql::{Context, FieldResult}; +use sqlx::postgres::PgPool; + +#[derive(Default)] +pub struct BenutzerMutation; + +#[async_graphql::Object] +impl BenutzerMutation { + async fn erstelle_benutzer( + &self, + ctx: &Context<'_>, + input: BenutzerErstellenInput, + ) -> FieldResult { + let pool = ctx.data::()?.clone(); + + let benutzer = Service::new(pool).benutzer_erstellen(input).await?; + Ok(benutzer) + } + + // async fn erstelle_viele_benutzer( + // &self, + // ctx: &Context<'_>, + // input: Vec, + // ) -> FieldResult> { + // let pool = ctx.data::()?.clone(); + // + // let benutzer = Service::new(pool).benutzer_erstellen_viele(&input).await?; + // Ok(benutzer) + // } + // + // async fn update_benutzer(&self, ctx: &Context<'_>, input: BenutzerUpdateInput) -> FieldResult { + // let pool = ctx.data::()?; + // + // let benutzer = Service::new(pool.clone()).benutzer_update(input).await?; + // Ok(benutzer) + // } + // + // async fn loesche_benutzer(&self, ctx: &Context<'_>, input: BenutzerLoeschenInput) -> FieldResult { + // let pool = ctx.data::()?.clone(); + // + // let benutzer = Service::new(pool).benutzer_loeschen(input).await?; + // Ok(benutzer) + // } +} diff --git a/src/domain/benutzer/repository.rs b/src/domain/benutzer/repository.rs index f919d6b..c8408dd 100644 --- a/src/domain/benutzer/repository.rs +++ b/src/domain/benutzer/repository.rs @@ -1,5 +1,7 @@ -mod alle_benutzer; -pub mod create_benutzer; +pub mod benutzer_alle; +pub mod benutzer_erstellen; +pub mod benutzer_loeschen; +pub mod benutzer_update; pub mod find_gruppen; #[derive(Debug, Clone)] diff --git a/src/domain/benutzer/repository/alle_benutzer.rs b/src/domain/benutzer/repository/benutzer_alle.rs similarity index 90% rename from src/domain/benutzer/repository/alle_benutzer.rs rename to src/domain/benutzer/repository/benutzer_alle.rs index 665c961..2a13bb7 100644 --- a/src/domain/benutzer/repository/alle_benutzer.rs +++ b/src/domain/benutzer/repository/benutzer_alle.rs @@ -10,8 +10,7 @@ impl Repository { db: C, ) -> Result, Error> { const QUERY: &str = r#" - SELECT * - FROM benutzer + SELECT * FROM benutzer "#; let benutzer = sqlx::query_as::<_, model::Benutzer>(QUERY) diff --git a/src/domain/benutzer/repository/benutzer_erstellen.rs b/src/domain/benutzer/repository/benutzer_erstellen.rs new file mode 100644 index 0000000..059a0fb --- /dev/null +++ b/src/domain/benutzer/repository/benutzer_erstellen.rs @@ -0,0 +1,34 @@ +use anyhow::Error; + +use super::Repository; +use crate::{ + database::Queryer, + domain::benutzer::{entity, model}, +}; + +impl Repository { + pub async fn benutzer_erstellen<'c, C: Queryer<'c>>( + &self, + db: C, + benutzer: &entity::BenutzerErstellen, + ) -> Result { + const QUERY: &str = r#" + INSERT INTO benutzer (benutzer_id, id, kennung, nachname, vorname, erstellt_am, geaendert_am) + VALUES ($1, $2, $3, $4, $5, $6, $7) + RETURNING id, kennung, nachname, vorname, erstellt_am, geaendert_am; + "#; + + let benutzer = sqlx::query_as::<_, model::Benutzer>(QUERY) + .bind(benutzer.benutzer_id) + .bind(benutzer.id) + .bind(&benutzer.kennung) + .bind(&benutzer.nachname) + .bind(&benutzer.vorname) + .bind(benutzer.erstellt_am) + .bind(benutzer.geaendert_am) + .fetch_one(db) + .await?; + + Ok(benutzer) + } +} diff --git a/src/domain/benutzer/repository/benutzer_loeschen.rs b/src/domain/benutzer/repository/benutzer_loeschen.rs new file mode 100644 index 0000000..96ec76a --- /dev/null +++ b/src/domain/benutzer/repository/benutzer_loeschen.rs @@ -0,0 +1,27 @@ +use anyhow::Error; + +use super::Repository; +use crate::{ + database::Queryer, + domain::benutzer::{entity, model}, +}; + +impl Repository { + pub async fn benutzer_loeschen<'c, C: Queryer<'c>>( + &self, + db: C, + benutzer: &entity::BenutzerLoeschen, + ) -> Result { + const QUERY: &str = r#" + DELETE FROM benutzer WHERE id=$1 + RETURNING id, kennung, nachname, vorname, erstellt_am, geaendert_am; + "#; + + let benutzer = sqlx::query_as::<_, model::Benutzer>(QUERY) + .bind(benutzer.id) + .fetch_one(db) + .await?; + + Ok(benutzer) + } +} diff --git a/src/domain/benutzer/repository/benutzer_update.rs b/src/domain/benutzer/repository/benutzer_update.rs new file mode 100644 index 0000000..330186b --- /dev/null +++ b/src/domain/benutzer/repository/benutzer_update.rs @@ -0,0 +1,30 @@ +use anyhow::Error; + +use super::Repository; +use crate::{ + database::Queryer, + domain::benutzer::{entity, model}, +}; + +impl Repository { + pub async fn benutzer_update<'c, C: Queryer<'c>>( + &self, + db: C, + benutzer: &entity::BenutzerUpdate, + ) -> Result { + const QUERY: &str = r#" + UPDATE benutzer + SET kennung = $2, geaendert_am = $3 WHERE id = $1 + RETURNING id, typname, erstellt_am, geaendert_am; + "#; + + let benutzer = sqlx::query_as::<_, model::Benutzer>(QUERY) + .bind(benutzer.id) + .bind(&benutzer.kennung) + .bind(benutzer.geaendert_am) + .fetch_one(db) + .await?; + + Ok(benutzer) + } +} diff --git a/src/domain/benutzer/repository/create_benutzer.rs b/src/domain/benutzer/repository/create_benutzer.rs deleted file mode 100644 index de9e911..0000000 --- a/src/domain/benutzer/repository/create_benutzer.rs +++ /dev/null @@ -1,31 +0,0 @@ -use anyhow::Error; - -use super::Repository; -use crate::database::Queryer; -use crate::domain::benutzer::entity; -use crate::domain::benutzer::model; -use crate::scalar::Id; - -impl Repository { - pub async fn create_benutzer<'c, C: Queryer<'c>>( - &self, - db: C, - benutzer: &entity::Benutzer, - ) -> Result { - const QUERY: &str = r#" - INSERT INTO benutzer (id, kennung, nachname, vorname) - VALUES ($1, $2, $3, $4) - RETURNING id, kennung, nachname, vorname; - "#; - - let benutzer = sqlx::query_as::<_, model::Benutzer>(QUERY) - .bind::(benutzer.id) - .bind(&benutzer.kennung) - .bind(&benutzer.nachname) - .bind(&benutzer.vorname) - .fetch_one(db) - .await?; - - Ok(benutzer) - } -} diff --git a/src/domain/benutzer/service.rs b/src/domain/benutzer/service.rs index a16b7f7..9938f83 100644 --- a/src/domain/benutzer/service.rs +++ b/src/domain/benutzer/service.rs @@ -1,5 +1,5 @@ -mod alle_benutzer; -pub mod create_benutzer; +mod benutzer_alle; +mod benutzer_erstellen; use super::repository::Repository; use crate::database::DB; diff --git a/src/domain/benutzer/service/alle_benutzer.rs b/src/domain/benutzer/service/alle_benutzer.rs deleted file mode 100644 index c375674..0000000 --- a/src/domain/benutzer/service/alle_benutzer.rs +++ /dev/null @@ -1,11 +0,0 @@ -use async_graphql::FieldResult; - -use crate::domain::benutzer::model::Benutzer; - -use super::Service; - -impl Service { - pub async fn alle_benutzer(&self) -> FieldResult> { - Ok(self.repo.alle_benutzer(&self.db).await?) - } -} diff --git a/src/domain/benutzer/service/benutzer_alle.rs b/src/domain/benutzer/service/benutzer_alle.rs new file mode 100644 index 0000000..e1d29c1 --- /dev/null +++ b/src/domain/benutzer/service/benutzer_alle.rs @@ -0,0 +1,12 @@ +use anyhow::Error; + +use crate::domain::benutzer::model::Benutzer; + +use super::Service; + +impl Service { + pub async fn alle_benutzer(&self) -> Result, Error> { + let benutzer = self.repo.alle_benutzer(&self.db).await?; + Ok(benutzer) + } +} diff --git a/src/domain/benutzer/service/benutzer_erstellen.rs b/src/domain/benutzer/service/benutzer_erstellen.rs new file mode 100644 index 0000000..cc337e2 --- /dev/null +++ b/src/domain/benutzer/service/benutzer_erstellen.rs @@ -0,0 +1,36 @@ +use anyhow::Error; +use chrono::Utc; + +use crate::{ + domain::benutzer::{ + entity, + model::{self, BenutzerErstellenInput}, + }, + scalar::Ulid, +}; + +use super::Service; + +impl Service { + pub async fn benutzer_erstellen( + &self, + input: BenutzerErstellenInput, + ) -> Result { + let benutzer_entity = entity::BenutzerErstellen { + benutzer_id: ulid::Ulid::new().into(), + id: Ulid(ulid::Ulid::new()), + kennung: input.kennung, + nachname: input.nachname, + vorname: input.vorname, + erstellt_am: Utc::now(), + geaendert_am: Utc::now(), + }; + + let benutzer = self + .repo + .benutzer_erstellen(&self.db, &benutzer_entity) + .await?; + + Ok(benutzer) + } +} diff --git a/src/domain/benutzer/service/create_benutzer.rs b/src/domain/benutzer/service/create_benutzer.rs deleted file mode 100644 index a5b233e..0000000 --- a/src/domain/benutzer/service/create_benutzer.rs +++ /dev/null @@ -1,25 +0,0 @@ -use async_graphql::FieldResult; -use ulid::Ulid; - -use crate::domain::benutzer::{ - entity, - model::{Benutzer, BenutzerCreateInput}, -}; - -use super::Service; - -impl Service { - pub async fn create_benutzer(&self, input: BenutzerCreateInput) -> FieldResult { - let benutzer_entity = entity::Benutzer { - id: Ulid::new().into(), - kennung: input.kennung, - nachname: input.nachname, - vorname: input.vorname, - }; - - Ok(self - .repo - .create_benutzer(&self.db, &benutzer_entity) - .await?) - } -} diff --git a/src/domain/gruppe/repository.rs b/src/domain/gruppe/repository.rs index cf121e2..e229b90 100644 --- a/src/domain/gruppe/repository.rs +++ b/src/domain/gruppe/repository.rs @@ -4,6 +4,7 @@ mod gruppe_erstellen; mod gruppe_loeschen; mod gruppe_update; +/// Die Dokumentation für das Gruppen Repository #[derive(Debug, Clone)] pub struct Repository {} diff --git a/src/domain/gruppe/repository/gruppe_alle.rs b/src/domain/gruppe/repository/gruppe_alle.rs index bf425f7..14e8f5e 100644 --- a/src/domain/gruppe/repository/gruppe_alle.rs +++ b/src/domain/gruppe/repository/gruppe_alle.rs @@ -4,6 +4,9 @@ use super::Repository; use crate::{database::Queryer, domain::gruppe::model}; impl Repository { + /// Das ist ein Test + /// Blub + /// Hui pub async fn gruppe_alle<'c, C: Queryer<'c>>( &self, db: C, diff --git a/src/domain/gruppe/service.rs b/src/domain/gruppe/service.rs index e3fe2b4..5bc3e76 100644 --- a/src/domain/gruppe/service.rs +++ b/src/domain/gruppe/service.rs @@ -9,6 +9,7 @@ use crate::database::DB; #[derive(Debug)] pub struct Service { + /// das ist die Dokumentation für das Gruppen Repository repo: Repository, pub db: DB, } diff --git a/src/mutations/benutzer.rs b/src/mutations/benutzer.rs index 6e594ee..feff165 100644 --- a/src/mutations/benutzer.rs +++ b/src/mutations/benutzer.rs @@ -1,36 +1,38 @@ -use crate::domain::benutzer::{model::Benutzer, model::BenutzerCreateInput, service::Service}; -use async_graphql::{Context, FieldResult}; -use sqlx::postgres::PgPool; - -#[derive(Default)] -pub struct BenutzerMutation; - -#[async_graphql::Object] -impl BenutzerMutation { - async fn create_benutzer( - &self, - ctx: &Context<'_>, - input: BenutzerCreateInput, - ) -> FieldResult { - let pool = ctx.data::()?; - - let row = Service::new(pool.clone()).create_benutzer(input).await?; - - Ok(row) - } - - // async fn update_hersteller( - // &self, - // ctx: &Context<'_>, - // input: HerstellerUpdateInput, - // ) -> FieldResult { - // let pool = ctx.data::()?; - // let row = Hersteller::update(pool, &input).await?; - // Ok(row) - // } - - // async fn delete_hersteller(&self, ctx: &Context<'_>, id: Id) -> FieldResult { - // let pool = ctx.data::()?; - // Ok(Hersteller::delete(pool, &id).await?) - // } -} +// use crate::domain::benutzer::{model::Benutzer, model::BenutzerCreateInput, service::Service}; +// use async_graphql::{Context, FieldResult}; +// use sqlx::postgres::PgPool; +// +// #[derive(Default)] +// pub struct BenutzerMutation; +// +// #[async_graphql::Object] +// impl BenutzerMutation { +// async fn create_benutzer( +// &self, +// ctx: &Context<'_>, +// input: BenutzerCreateInput, +// ) -> FieldResult { +// let pool = ctx.data::()?; +// +// let r1 = cts.date::(); +// +// let row = Service::new(pool.clone()).create_benutzer(input).await?; +// +// Ok(row) +// } +// +// // async fn update_hersteller( +// // &self, +// // ctx: &Context<'_>, +// // input: HerstellerUpdateInput, +// // ) -> FieldResult { +// // let pool = ctx.data::()?; +// // let row = Hersteller::update(pool, &input).await?; +// // Ok(row) +// // } +// +// // async fn delete_hersteller(&self, ctx: &Context<'_>, id: Id) -> FieldResult { +// // let pool = ctx.data::()?; +// // Ok(Hersteller::delete(pool, &id).await?) +// // } +// } diff --git a/src/mutations/mod.rs b/src/mutations/mod.rs index 07a935a..9434904 100644 --- a/src/mutations/mod.rs +++ b/src/mutations/mod.rs @@ -1,4 +1,3 @@ -// pub mod benutzer; // pub mod hersteller; // pub mod modell; pub mod liegenschaft; @@ -6,16 +5,17 @@ pub mod liegenschaft; use async_graphql::MergedObject; use crate::domain::{ - gruppe::mutation::GruppeMutation, rolle::mutation::RolleMutation, typ::mutation::TypMutation, + benutzer::mutation::BenutzerMutation, gruppe::mutation::GruppeMutation, + rolle::mutation::RolleMutation, typ::mutation::TypMutation, }; #[derive(MergedObject, Default)] pub struct Mutation( + BenutzerMutation, + GruppeMutation, + RolleMutation, TypMutation, // hersteller::HerstellerMutation, // modell::ModellMutation, - // benutzer::BenutzerMutation, - GruppeMutation, - RolleMutation, liegenschaft::LiegenschaftMutation, ); diff --git a/src/queries/mod.rs b/src/queries/mod.rs index 38dab58..71b6f39 100644 --- a/src/queries/mod.rs +++ b/src/queries/mod.rs @@ -1,12 +1,15 @@ use crate::domain::{ - // benutzer::queries::benutzer, - gruppe::query::GruppeQuery, - liegenschaft::query::LiegenschaftQuery, - rolle::query::RolleQuery, - typ::query::TypQuery, + benutzer::query::BenutzerQuery, gruppe::query::GruppeQuery, + liegenschaft::query::LiegenschaftQuery, rolle::query::RolleQuery, typ::query::TypQuery, }; use async_graphql::MergedObject; #[derive(MergedObject, Default)] -pub struct Query(TypQuery, RolleQuery, GruppeQuery, LiegenschaftQuery); +pub struct Query( + BenutzerQuery, + GruppeQuery, + LiegenschaftQuery, + RolleQuery, + TypQuery, +);