- Architecture: overview, 7 ADR, tech stack - Principles: code-style, git-workflow, security - API contracts: auth, profile, tests, admin endpoints - Database schema: tables, relationships, indexes - LLM strategy: prompts, fallback, validation, Qwen 2.5 14B - Onboarding: setup, Docker, .env template - Progress: roadmap, changelog - Agents: context, backend instructions Made-with: Cursor
1.6 KiB
1.6 KiB
ADR-003: Drizzle ORM
Статус
Принято
Контекст
Нужен типизированный доступ к PostgreSQL из TypeScript-кода.
Варианты
- Prisma — популярная, удобная генерация типов из schema.prisma, миграции. Минусы: тяжёлый бинарный engine, ограничения на сложные запросы, собственный query language.
- Drizzle ORM — легковесный, SQL-first подход, схема описывается в TypeScript, отличная типизация, близость к чистому SQL.
- Kysely — типизированный query builder, ещё ближе к SQL, но нет встроенных миграций.
Решение
Drizzle ORM.
- Схема в TypeScript — типы выводятся автоматически, не нужна кодогенерация
- SQL-first: сложные запросы (JOIN, подзапросы, агрегации) пишутся естественно
- Лёгкий — нет бинарного engine как у Prisma
- Встроенные миграции через
drizzle-kit - Хорошо сочетается с Fastify (без магии, без декораторов)
Последствия
- Нужно знать SQL (в отличие от Prisma, которая его прячет)
- Экосистема меньше, чем у Prisma
- VS Code расширение: используем общие SQL/TS расширения вместо Prisma-специфичного