Adiciona sistema completo de preferências de usuário: - Cria tabela userPreferences no schema com campos disableMagnetlines, periodMonthsBefore e periodMonthsAfter - Implementa página de Ajustes com abas (Preferências, Alterar nome, Senha, E-mail, Deletar conta) - Adiciona componente PreferencesForm para configuração de magnetlines e períodos de exibição - Propaga periodPreferences para todos os componentes de lançamentos e calendário Refatora sistema de changelog: - Remove implementação anterior baseada em JSON estático - Adiciona nova página de changelog dinâmica em app/(dashboard)/changelog - Adiciona componente changelog-list.tsx - Remove arquivos obsoletos (changelog-notification, actions, data, utils, scripts) Adiciona controle de saldo inicial em contas: - Novo campo excludeInitialBalanceFromIncome em contas - Permite excluir saldo inicial do cálculo de receitas - Atualiza queries de lançamentos para respeitar esta configuração Melhorias adicionais: - Adiciona componente ui/accordion.tsx do shadcn/ui - Refatora formatPeriodLabel para displayPeriod centralizado - Propaga estabelecimentos para componentes de lançamentos - Remove variável DB_PROVIDER obsoleta do .env.example e documentação - Adiciona 6 migrações de banco de dados (0003-0008)
33 lines
841 B
TypeScript
33 lines
841 B
TypeScript
import { db, schema } from "@/lib/db";
|
|
import { eq } from "drizzle-orm";
|
|
|
|
export type PeriodPreferences = {
|
|
monthsBefore: number;
|
|
monthsAfter: number;
|
|
};
|
|
|
|
/**
|
|
* Fetches period preferences for a user
|
|
* @param userId - User ID
|
|
* @returns Period preferences with defaults if not found
|
|
*/
|
|
export async function fetchUserPeriodPreferences(
|
|
userId: string
|
|
): Promise<PeriodPreferences> {
|
|
const result = await db
|
|
.select({
|
|
periodMonthsBefore: schema.userPreferences.periodMonthsBefore,
|
|
periodMonthsAfter: schema.userPreferences.periodMonthsAfter,
|
|
})
|
|
.from(schema.userPreferences)
|
|
.where(eq(schema.userPreferences.userId, userId))
|
|
.limit(1);
|
|
|
|
const preferences = result[0];
|
|
|
|
return {
|
|
monthsBefore: preferences?.periodMonthsBefore ?? 3,
|
|
monthsAfter: preferences?.periodMonthsAfter ?? 3,
|
|
};
|
|
}
|