intermediate
Schema definitions
Представляйте tables, columns, constraints, indexes и relations в TypeScript рядом с database semantics.
Определения схемы Drizzle описывают таблицы, столбцы, constraints, индексы и relations в TypeScript. Они должны отражать семантику БД — а не становиться отдельной доменной моделью.
export const orders = pgTable('orders', {
id: uuid('id').primaryKey().defaultRandom(),
customerId: uuid('customer_id').notNull().references(() => customers.id),
status: text('status').notNull().default('pending'),
}, (t) => [index('orders_customer_status').on(t.customerId, t.status)]);
На интервью: типы столбцов, `$inferSelect` / `$inferInsert`, relations helper, составные индексы и зачем нужны constraints.
Типовые ошибки: drift между schema-кодом и развёрнутой БД при пропуске или хаотичном редактировании миграций.
Компромисс — схема в TypeScript против дисциплины migration workflow.
Чеклист:
- Constraints в схеме.
- Полезные типы insert/select.
- Согласованность с миграциями.
- Типы столбцов под провайдера.