Przejdź do treści

Konfiguracja Backend (masaku-api)

Wymagania

Przed konfiguracją upewnij się że masz: - .NET 6 SDK (lub nowszy) - Docker Desktop - DBeaver (opcjonalnie, do zarządzania bazą danych) - Azure Storage Explorer (opcjonalnie, do zarządzania blob storage)

Restore packages

cd masaku-api

# Restore wszystkich zależności NuGet
dotnet restore

# Weryfikacja
dotnet build

Struktura projektu

masaku-api/
├── Masaku.API/              # Web API, controllers
├── Masaku.Domain/           # Domain models
├── Masaku.Services/         # Business logic
├── Masaku.Repository/       # Data access
├── Masaku.MessageReceiver/  # Background jobs
├── Masaku.EmailQueue/       # Email processing
├── Masaku.Tests.Unit/       # Unit tests
├── Masaku.Tests.Integration/# Integration tests
└── docker/                  # Docker Compose

Konfiguracja appsettings

1. appsettings.Development.json

Utwórz lub edytuj Masaku.API/appsettings.Development.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost,1433;Database=Masaku;User=sa;Password=Masaku123;TrustServerCertificate=True"
  },
  "AzureStorage": {
    "ConnectionString": "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1"
  },
  "Email": {
    "SmtpHost": "localhost",
    "SmtpPort": 1025,
    "From": "noreply@masaku-local.com"
  },
  "Azure": {
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id"
  }
}

2. User Secrets (opcjonalnie)

Dla wrażliwych danych użyj User Secrets:

cd Masaku.API

# Inicjalizuj secrets
dotnet user-secrets init

# Dodaj secret
dotnet user-secrets set "Azure:ClientSecret" "your-secret"

# Lista secrets
dotnet user-secrets list

Uruchomienie lokalnych usług

Backend wymaga trzech lokalnych usług: SQL Server, Azurite (emulator Azure Storage), MailHog (SMTP).

cd masaku-api/docker

# Uruchom wszystkie usługi
docker-compose up -d

# Sprawdź status
docker-compose ps

# Logi
docker-compose logs -f

Sprawdź czy usługi działają: - SQL Server: localhost:1433 (sa/Masaku123) - Azurite: localhost:7777, 8888, 9999 - MailHog UI: http://localhost:8025

Migracja bazy danych

Projekt używa Liquibase do migracji:

cd Sql/Liquibase

# Sprawdź status
liquibase status

# Uruchom migracje
liquibase update

# Rollback (jeśli potrzeba)
liquibase rollback-count 1

Alternatywnie - uruchom API, które automatycznie wykona migracje przy starcie.

Uruchomienie API

cd Masaku.API

# Uruchom API
dotnet run

# Lub w trybie watch (auto-reload)
dotnet watch run

API będzie dostępne na: - HTTP: http://localhost:5000 - HTTPS: https://localhost:5001 - Swagger UI: http://localhost:5000/swagger

Sprawdzanie połączeń

SQL Server

# Użyj DBeaver lub sqlcmd
sqlcmd -S localhost,1433 -U sa -P Masaku123
> SELECT @@VERSION;
> GO

Azurite (Azure Storage)

Użyj Azure Storage Explorer: 1. Otwórz Azure Storage Explorer 2. Kliknij "Connect to Azure Storage" 3. Wybierz "Local storage emulator" 4. Połącz się z localhost:10000

MailHog

Otwórz przeglądarkę: http://localhost:8025

Testy

# Wszystkie testy
dotnet test

# Tylko unit testy
dotnet test Masaku.Tests.Unit

# Tylko integration testy
dotnet test Masaku.Tests.Integration

# Z coverage
dotnet test --collect:"XPlat Code Coverage"

Troubleshooting

Błąd: Port 5000 is already in use

# Zmień port w Properties/launchSettings.json
# Lub zabij proces na porcie 5000
lsof -ti:5000 | xargs kill -9

Błąd: Cannot connect to SQL Server

# Sprawdź czy SQL Server działa
docker ps | grep sql

# Restart kontenera
cd docker
docker-compose restart sql

Błąd: Cannot connect to Azurite

# Sprawdź czy Azurite działa
docker ps | grep azurite

# Restart
cd docker
docker-compose restart azurite

Błąd podczas migracji Liquibase

# Sprawdź status
liquibase status

# Wymuszony rollback
liquibase rollback-to-date 2024-01-01

# Ponowna migracja
liquibase update

Build dla różnych środowisk

# Build Debug
dotnet build -c Debug

# Build Release
dotnet build -c Release

# Publish
dotnet publish -c Release -o ./publish

Dalsze kroki

Dalsze zasoby