import { sql } from 'drizzle-orm'; import { integer, real, sqliteTable, text } from 'drizzle-orm/sqlite-core'; /** * Tabela de usuários. * Por ora, suporta um único usuário local (single-user app). * O campo `net_salary_override` permite que o usuário edite manualmente * o salário líquido calculado, para cobrir descontos extras (plano de saúde, VT, etc.). */ export const users = sqliteTable('users', { id: integer('id').primaryKey({ autoIncrement: true }), name: text('name').notNull(), email: text('email').unique().notNull(), password_hash: text('password_hash').notNull(), /** Salário bruto informado pelo usuário (em R$) */ gross_salary: real('gross_salary').notNull().default(0), /** * Override manual do salário líquido. * Quando NULL, o app usa o valor calculado automaticamente (INSS + IRRF). * Quando preenchido, este valor é usado como base para o saldo disponível. */ net_salary_override: real('net_salary_override'), created_at: text('created_at') .notNull() .default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`), updated_at: text('updated_at') .notNull() .default(sql`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`), }); export type User = typeof users.$inferSelect; export type NewUser = typeof users.$inferInsert;