1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 08:29:36 +01:00
effigenix/justfile
Sebastian Frick 72979c9537 feat: Paginierung für alle GET-List-Endpoints (#61)
Einheitliches Paginierungs-Pattern mit page, size und Multi-Field sort
für alle 14 List-Endpoints. Response-Format ändert sich von [...] zu
{ content: [...], page: { number, size, totalElements, totalPages } }.

Backend:
- Shared Kernel: Page<T>, PageRequest, SortField, SortDirection
- PaginationHelper (SQL ORDER BY mit Whitelist), PageResponse DTO
- Paginated Methoden in allen 14 Domain-Repos + JDBC-Implementierungen
- Safety-Limit (500) für findAllBelowMinimumLevel/ExpiryRelevantBatches
- Alle List-Use-Cases akzeptieren PageRequest, liefern Page<T>
- Alle Controller mit page/size/sort Query-Params + PageResponse

Frontend:
- PagedResponse<T> Type auf nested page-Format aktualisiert
- Alle 14 API-Client-Resourcen liefern PagedResponse mit PaginationParams
- Alle Hooks mit Pagination-State (currentPage, totalPages, pageSize)
- Alle List-Screens mit Seiten-Navigation (Pfeiltasten) und Footer

Loadtest:
- Podman-Support im justfile (DOCKER_HOST auto-detect)
- Verschärfte Performance-Schwellwerte basierend auf Ist-Werten
2026-03-20 16:33:20 +01:00

107 lines
3.7 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Effigenix ERP Development Commands
# Default: alle Recipes auflisten
default:
@just --list
# ─── Dev Modi ─────────────────────────────────────────────
# Backend starten (Spring Boot)
dev-backend:
cd backend && SENTRY_DSN=$(grep '^SENTRY_DSN=' ../.env 2>/dev/null | cut -d= -f2-) mvn spring-boot:run
# CLI/TUI starten
dev-cli:
cd frontend/apps/cli && node --env-file=../../../.env --import tsx src/index.tsx
# Web-UI starten (Vite :3000)
dev-web:
cd frontend && pnpm run --filter @effigenix/web dev
# Scanner-App starten (Tauri + Vite :1420)
dev-scanner:
cd frontend/apps/scanner && pnpm tauri dev
# UI-Library im Watch-Modus bauen
dev-ui:
cd frontend && pnpm run --filter @effigenix/ui dev
# ─── Build ────────────────────────────────────────────────
# Frontend komplett bauen
build-frontend:
cd frontend && pnpm build
# Backend bauen
build-backend:
cd backend && mvn package -DskipTests
# ─── Checks ──────────────────────────────────────────────
# Frontend Typecheck
typecheck:
cd frontend && pnpm typecheck
# Frontend Tests
test-frontend:
cd frontend && pnpm test
# Backend Tests
test-backend:
cd backend && mvn test
# ─── Code Generation ─────────────────────────────────────
# OpenAPI Spec + TypeScript Types generieren
generate-openapi:
./scripts/generate-openapi.sh
# ─── Datenbank ────────────────────────────────────────────
# Testdaten einspielen
seed-testdata:
PGPASSWORD=effigenix nix shell nixpkgs#postgresql --command psql -f backend/src/main/resources/db/changelog/changes/099-seed-testdata.sql -h localhost -p 5432 -U effigenix -d effigenix
# ─── Fuzz Testing ─────────────────────────────────────────
# Alle Fuzz-Tests
fuzz:
cd backend && mvn test -Pfuzz
# Fuzz-Regressionstests
fuzz-regression:
cd backend && mvn test -Pfuzz-regression
# Einzelnen Fuzz-Test ausführen (z.B. just fuzz-single BatchFuzzTest)
fuzz-single TEST:
cd backend && mvn test -Pfuzz -Dtest={{ TEST }}
# ─── Load Testing ────────────────────────────────────────
# Gatling Load Test ausführen (startet Backend + DB via Testcontainers)
loadtest:
#!/usr/bin/env bash
set -euo pipefail
# Podman-Socket für Testcontainers bereitstellen (falls kein Docker)
if [ -z "${DOCKER_HOST:-}" ] && [ ! -S /var/run/docker.sock ]; then
PODMAN_SOCK="/run/user/$(id -u)/podman/podman.sock"
if [ -S "$PODMAN_SOCK" ]; then
export DOCKER_HOST="unix://$PODMAN_SOCK"
export TESTCONTAINERS_RYUK_DISABLED=true
fi
fi
cd loadtest && mvn gatling:test
# ─── Services ─────────────────────────────────────────────
# Bugsink starten (Error Tracking)
bugsink:
@. ./.env 2>/dev/null || true; \
docker start bugsink 2>/dev/null || \
docker run \
--name bugsink \
-p 8000:8000 \
-e SECRET_KEY=${BUGSINK_SECRET_KEY:?BUGSINK_SECRET_KEY muss gesetzt sein} \
-e CREATE_SUPERUSER=admin:admin \
bugsink/bugsink:latest
@echo "Bugsink: http://localhost:8000 (admin/admin)"