From 375482e654a01615683867e732ac9e458c7cbe74 Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Sun, 16 Aug 2026 20:17:42 -0300 Subject: feat: upload yaba src Signed-off-by: Lucas Faria Mendes --- api/src/db/schema/incomes.ts | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 api/src/db/schema/incomes.ts (limited to 'api/src/db/schema/incomes.ts') diff --git a/api/src/db/schema/incomes.ts b/api/src/db/schema/incomes.ts new file mode 100644 index 0000000..f502cb9 --- /dev/null +++ b/api/src/db/schema/incomes.ts @@ -0,0 +1,51 @@ +import { sql } from 'drizzle-orm'; +import { integer, real, sqliteTable, text } from 'drizzle-orm/sqlite-core'; +import { users } from './users'; + +/** + * Tabela de rendas/salários. + * Armazena o histórico de salários por mês/ano, permitindo que o usuário + * tenha registros diferentes para cada período (ex: aumento de salário em julho). + */ +export const incomes = sqliteTable('incomes', { + id: integer('id').primaryKey({ autoIncrement: true }), + + user_id: integer('user_id') + .notNull() + .references(() => users.id, { onDelete: 'cascade' }), + + /** Salário bruto do período (em R$) */ + gross_salary: real('gross_salary').notNull(), + + /** + * Salário líquido calculado automaticamente pelo app (INSS + IRRF). + * Armazenado para fins de histórico e auditoria. + */ + calculated_net_salary: real('calculated_net_salary').notNull(), + + /** + * Salário líquido efetivo usado no cálculo do saldo. + * Pode diferir do calculado caso o usuário tenha feito um override manual. + */ + effective_net_salary: real('effective_net_salary').notNull(), + + /** Mês de referência (1-12) */ + reference_month: integer('reference_month').notNull(), + + /** Ano de referência (ex: 2025) */ + reference_year: integer('reference_year').notNull(), + + /** Observações opcionais (ex: "13º salário", "PLR") */ + description: text('description'), + + 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 Income = typeof incomes.$inferSelect; +export type NewIncome = typeof incomes.$inferInsert; -- cgit v1.2.3