diff --git a/bin/main/db/migration/V4__lock_game_session_nullable.sql b/bin/main/db/migration/V4__lock_game_session_nullable.sql new file mode 100644 index 0000000..ef843f1 --- /dev/null +++ b/bin/main/db/migration/V4__lock_game_session_nullable.sql @@ -0,0 +1,5 @@ +-- session_id war fälschlicherweise PRIMARY KEY der lock_game-Tabelle. +-- Korrekter PK ist game_id (gemäß JPA-Entity @Id). +ALTER TABLE lock_game DROP PRIMARY KEY; +ALTER TABLE lock_game MODIFY COLUMN session_id VARCHAR(255) NULL; +ALTER TABLE lock_game ADD PRIMARY KEY (game_id); diff --git a/bin/main/db/migration/V5__lock_game_text_columns.sql b/bin/main/db/migration/V5__lock_game_text_columns.sql new file mode 100644 index 0000000..fbdee57 --- /dev/null +++ b/bin/main/db/migration/V5__lock_game_text_columns.sql @@ -0,0 +1,5 @@ +-- task_in_queue und lock_in_queue können serialisierte JSON-Objekte speichern, +-- die länger als 255 Zeichen sind – auf TEXT erweitern. +ALTER TABLE lock_game + MODIFY COLUMN task_in_queue TEXT NULL, + MODIFY COLUMN lock_in_queue TEXT NULL; diff --git a/bin/main/db/migration/V6__game_active_default.sql b/bin/main/db/migration/V6__game_active_default.sql new file mode 100644 index 0000000..40b8ee4 --- /dev/null +++ b/bin/main/db/migration/V6__game_active_default.sql @@ -0,0 +1,5 @@ +-- game_active wurde ohne DEFAULT angelegt; bestehende Zeilen haben NULL – +-- auf false setzen und NOT NULL + DEFAULT ergänzen. +UPDATE active_lock SET game_active = 0 WHERE game_active IS NULL; +ALTER TABLE active_lock + MODIFY COLUMN game_active TINYINT(1) NOT NULL DEFAULT 0; diff --git a/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class b/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class index 8aa7476..20363d3 100644 Binary files a/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class and b/bin/main/de/oaa/xxx/games/bdsm/controller/AufgabenGruppeController.class differ diff --git a/bin/main/de/oaa/xxx/games/bdsm/controller/SperreController.class b/bin/main/de/oaa/xxx/games/bdsm/controller/SperreController.class index b81ca8a..5007d0d 100644 Binary files a/bin/main/de/oaa/xxx/games/bdsm/controller/SperreController.class and b/bin/main/de/oaa/xxx/games/bdsm/controller/SperreController.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class index 6f4b32e..796a7e0 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$AssignTaskRequest.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class index b3a8052..2e38a51 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$CreateCardLockRequest.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class index e678ff8..e3b467a 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$FreezeRequest.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class index c6feb72..ee9f477 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$ModifyCardsRequest.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class index fc6a0dd..4a66943 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController$SpeedConfirmRequest.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class index b0fbcc2..bbea64d 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockController.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.class index ee5d5b4..c2e2603 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockEntity.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class index 98ac737..8cbf06f 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class and b/bin/main/de/oaa/xxx/games/chastity/cardlock/CardLockService.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/common/BaseLockTemplateController.class b/bin/main/de/oaa/xxx/games/chastity/common/BaseLockTemplateController.class index f7f3752..3de4a46 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/common/BaseLockTemplateController.class and b/bin/main/de/oaa/xxx/games/chastity/common/BaseLockTemplateController.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class index 85bfb11..83eb45e 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameController.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class index 56bf323..4e0c38a 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameEntity.class differ diff --git a/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class b/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class index 841c367..149dab3 100644 Binary files a/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class and b/bin/main/de/oaa/xxx/games/chastity/common/LockGameService.class differ diff --git a/bin/main/de/oaa/xxx/games/common/repository/AufgabenGruppeRepository.class b/bin/main/de/oaa/xxx/games/common/repository/AufgabenGruppeRepository.class index 87961e7..4a7fb21 100644 Binary files a/bin/main/de/oaa/xxx/games/common/repository/AufgabenGruppeRepository.class and b/bin/main/de/oaa/xxx/games/common/repository/AufgabenGruppeRepository.class differ diff --git a/bin/main/static/css/time-picker.css b/bin/main/static/css/time-picker.css new file mode 100644 index 0000000..6a9491d --- /dev/null +++ b/bin/main/static/css/time-picker.css @@ -0,0 +1,18 @@ +.time-picker { display:flex; align-items:center; gap:0.35rem; flex-wrap:wrap; } +.tp-seg { display:flex; flex-direction:column; align-items:center; gap:0; } +.tp-seg-row { display:flex; align-items:center; gap:0.2rem; } +.tp-seg button { + width:24px !important; height:24px !important; + background:var(--color-card); border:1px solid var(--color-muted); + border-radius:4px; cursor:pointer; font-size:0.9rem; font-weight:700; color:var(--color-text); + display:flex; align-items:center; justify-content:center; padding:0; flex-shrink:0; +} +.tp-seg button:hover { background:var(--color-primary); color:#fff; border-color:var(--color-primary); } +.tp-seg .tp-seg-row input { + width:28px !important; padding:0.15rem 0 !important; + text-align:center; background:var(--color-card); + border:1px solid var(--color-muted); border-radius:4px; + color:var(--color-text); font-size:0.9rem; font-weight:600; + font-family:monospace; box-sizing:border-box; +} +.tp-seg .tp-label { font-size:0.58rem; color:var(--color-muted); text-transform:uppercase; letter-spacing:0.03em; line-height:1.2; } diff --git a/bin/main/static/games/aufgaben/aufgaben.html b/bin/main/static/games/aufgaben/aufgaben.html index d7e7641..5c4251e 100644 --- a/bin/main/static/games/aufgaben/aufgaben.html +++ b/bin/main/static/games/aufgaben/aufgaben.html @@ -532,6 +532,19 @@ +