docs: add full project documentation
- 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
This commit is contained in:
31
architecture/decisions/003-drizzle-orm.md
Normal file
31
architecture/decisions/003-drizzle-orm.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# ADR-003: Drizzle ORM
|
||||
|
||||
## Статус
|
||||
|
||||
Принято
|
||||
|
||||
## Контекст
|
||||
|
||||
Нужен типизированный доступ к PostgreSQL из TypeScript-кода.
|
||||
|
||||
## Варианты
|
||||
|
||||
1. **Prisma** — популярная, удобная генерация типов из schema.prisma, миграции. Минусы: тяжёлый бинарный engine, ограничения на сложные запросы, собственный query language.
|
||||
2. **Drizzle ORM** — легковесный, SQL-first подход, схема описывается в TypeScript, отличная типизация, близость к чистому SQL.
|
||||
3. **Kysely** — типизированный query builder, ещё ближе к SQL, но нет встроенных миграций.
|
||||
|
||||
## Решение
|
||||
|
||||
Drizzle ORM.
|
||||
|
||||
- Схема в TypeScript — типы выводятся автоматически, не нужна кодогенерация
|
||||
- SQL-first: сложные запросы (JOIN, подзапросы, агрегации) пишутся естественно
|
||||
- Лёгкий — нет бинарного engine как у Prisma
|
||||
- Встроенные миграции через `drizzle-kit`
|
||||
- Хорошо сочетается с Fastify (без магии, без декораторов)
|
||||
|
||||
## Последствия
|
||||
|
||||
- Нужно знать SQL (в отличие от Prisma, которая его прячет)
|
||||
- Экосистема меньше, чем у Prisma
|
||||
- VS Code расширение: используем общие SQL/TS расширения вместо Prisma-специфичного
|
||||
Reference in New Issue
Block a user