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¶
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¶
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¶
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