Warstwa dostępu do danych (DAL)
DAL jest jedynym punktem kontaktu między aplikacją a bazą danych. Wszystkie zapytania do bazy danych są tutaj hermetyzowane.
Lokalizacja
src/lib/dal/
Zasady projektowe
- Brak bezpośrednich importów Drizzle w trasach ani komponentach — zawsze korzystaj z funkcji DAL
- Funkcje zwracają zwykłe obiekty — konstruktory zapytań Drizzle nie wyciekają do kodu aplikacji
- Walidacja danych wejściowych odbywa się na poziomie trasy API (poprzez schematy Zod), a nie w DAL
- Transakcje są obsługiwane wewnątrz funkcji DAL, gdy wiele zapisów musi być atomowych
Przykład użycia
// ✅ Poprawnie — import z DAL
import { getOrderById, updateOrderStatus } from '@/lib/dal/orders';
// ❌ Źle — nigdy tego nie rób w trasach/komponentach
import { db } from '@/lib/db';
import { orders } from '@/lib/db/schema';
Dostępne moduły
| Moduł | Odpowiedzialności |
|---|---|
organisations.ts | CRUD dla organizacji, wyszukiwanie, ustawienia, portfolio, członkowie |
orders.ts | Cykl życia zamówienia, zmiany statusu, śledzenie płatności |
offers.ts | Tworzenie ofert, wycofywanie, akceptacja |
requests.ts | Tworzenie zapytań o torty, dopasowywanie, wygaszanie |
users.ts | Profile użytkowników, rekordy uwierzytelniania |
payments.ts | Rekordy płatności, obliczanie zarobków, integracja ze Stripe |
messages.ts | Wątki wiadomości, śledzenie odczytów |
reviews.ts | Tworzenie i pobieranie opinii |