mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-03-10 04:51:47 +00:00
refactor: migrate from ESLint to Biome and extract SQL queries to data.ts
- Replace ESLint with Biome for linting and formatting - Configure Biome with tabs, double quotes, and organized imports - Move all SQL/Drizzle queries from page.tsx files to data.ts files - Create new data.ts files for: ajustes, dashboard, relatorios/categorias - Update existing data.ts files: extrato, fatura (add lancamentos queries) - Remove all drizzle-orm imports from page.tsx files - Update README.md with new tooling info Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,56 +5,56 @@
|
||||
* - /lib/category-defaults.ts
|
||||
*/
|
||||
|
||||
import { eq } from "drizzle-orm";
|
||||
import { categorias } from "@/db/schema";
|
||||
import type { CategoryType } from "@/lib/categorias/constants";
|
||||
import { db } from "@/lib/db";
|
||||
import { eq } from "drizzle-orm";
|
||||
|
||||
export type DefaultCategory = {
|
||||
name: string;
|
||||
type: CategoryType;
|
||||
icon: string | null;
|
||||
name: string;
|
||||
type: CategoryType;
|
||||
icon: string | null;
|
||||
};
|
||||
|
||||
export const DEFAULT_CATEGORIES: DefaultCategory[] = [
|
||||
// Despesas
|
||||
{ name: "Alimentação", type: "despesa", icon: "RiRestaurant2Line" },
|
||||
{ name: "Transporte", type: "despesa", icon: "RiBusLine" },
|
||||
{ name: "Moradia", type: "despesa", icon: "RiHomeLine" },
|
||||
{ name: "Saúde", type: "despesa", icon: "RiStethoscopeLine" },
|
||||
{ name: "Educação", type: "despesa", icon: "RiBook2Line" },
|
||||
{ name: "Lazer", type: "despesa", icon: "RiGamepadLine" },
|
||||
{ name: "Compras", type: "despesa", icon: "RiShoppingBagLine" },
|
||||
{ name: "Assinaturas", type: "despesa", icon: "RiServiceLine" },
|
||||
{ name: "Pets", type: "despesa", icon: "RiBearSmileLine" },
|
||||
{ name: "Mercado", type: "despesa", icon: "RiShoppingBasketLine" },
|
||||
{ name: "Restaurantes", type: "despesa", icon: "RiRestaurantLine" },
|
||||
{ name: "Delivery", type: "despesa", icon: "RiMotorbikeLine" },
|
||||
{ name: "Energia e água", type: "despesa", icon: "RiFlashlightLine" },
|
||||
{ name: "Internet", type: "despesa", icon: "RiWifiLine" },
|
||||
{ name: "Vestuário", type: "despesa", icon: "RiTShirtLine" },
|
||||
{ name: "Viagem", type: "despesa", icon: "RiFlightTakeoffLine" },
|
||||
{ name: "Presentes", type: "despesa", icon: "RiGiftLine" },
|
||||
{ name: "Pagamentos", type: "despesa", icon: "RiBillLine" },
|
||||
{ name: "Outras despesas", type: "despesa", icon: "RiMore2Line" },
|
||||
// Despesas
|
||||
{ name: "Alimentação", type: "despesa", icon: "RiRestaurant2Line" },
|
||||
{ name: "Transporte", type: "despesa", icon: "RiBusLine" },
|
||||
{ name: "Moradia", type: "despesa", icon: "RiHomeLine" },
|
||||
{ name: "Saúde", type: "despesa", icon: "RiStethoscopeLine" },
|
||||
{ name: "Educação", type: "despesa", icon: "RiBook2Line" },
|
||||
{ name: "Lazer", type: "despesa", icon: "RiGamepadLine" },
|
||||
{ name: "Compras", type: "despesa", icon: "RiShoppingBagLine" },
|
||||
{ name: "Assinaturas", type: "despesa", icon: "RiServiceLine" },
|
||||
{ name: "Pets", type: "despesa", icon: "RiBearSmileLine" },
|
||||
{ name: "Mercado", type: "despesa", icon: "RiShoppingBasketLine" },
|
||||
{ name: "Restaurantes", type: "despesa", icon: "RiRestaurantLine" },
|
||||
{ name: "Delivery", type: "despesa", icon: "RiMotorbikeLine" },
|
||||
{ name: "Energia e água", type: "despesa", icon: "RiFlashlightLine" },
|
||||
{ name: "Internet", type: "despesa", icon: "RiWifiLine" },
|
||||
{ name: "Vestuário", type: "despesa", icon: "RiTShirtLine" },
|
||||
{ name: "Viagem", type: "despesa", icon: "RiFlightTakeoffLine" },
|
||||
{ name: "Presentes", type: "despesa", icon: "RiGiftLine" },
|
||||
{ name: "Pagamentos", type: "despesa", icon: "RiBillLine" },
|
||||
{ name: "Outras despesas", type: "despesa", icon: "RiMore2Line" },
|
||||
|
||||
// Receitas
|
||||
{ name: "Salário", type: "receita", icon: "RiWallet3Line" },
|
||||
{ name: "Freelance", type: "receita", icon: "RiUserStarLine" },
|
||||
{ name: "Investimentos", type: "receita", icon: "RiStockLine" },
|
||||
{ name: "Vendas", type: "receita", icon: "RiShoppingCartLine" },
|
||||
{ name: "Prêmios", type: "receita", icon: "RiMedalLine" },
|
||||
{ name: "Reembolso", type: "receita", icon: "RiRefundLine" },
|
||||
{ name: "Aluguel recebido", type: "receita", icon: "RiBuilding2Line" },
|
||||
{ name: "Outras receitas", type: "receita", icon: "RiMore2Line" },
|
||||
{ name: "Saldo inicial", type: "receita", icon: "RiWallet2Line" },
|
||||
// Receitas
|
||||
{ name: "Salário", type: "receita", icon: "RiWallet3Line" },
|
||||
{ name: "Freelance", type: "receita", icon: "RiUserStarLine" },
|
||||
{ name: "Investimentos", type: "receita", icon: "RiStockLine" },
|
||||
{ name: "Vendas", type: "receita", icon: "RiShoppingCartLine" },
|
||||
{ name: "Prêmios", type: "receita", icon: "RiMedalLine" },
|
||||
{ name: "Reembolso", type: "receita", icon: "RiRefundLine" },
|
||||
{ name: "Aluguel recebido", type: "receita", icon: "RiBuilding2Line" },
|
||||
{ name: "Outras receitas", type: "receita", icon: "RiMore2Line" },
|
||||
{ name: "Saldo inicial", type: "receita", icon: "RiWallet2Line" },
|
||||
|
||||
// Categoria especial para transferências entre contas
|
||||
{
|
||||
name: "Transferência interna",
|
||||
type: "receita",
|
||||
icon: "RiArrowLeftRightLine",
|
||||
},
|
||||
// Categoria especial para transferências entre contas
|
||||
{
|
||||
name: "Transferência interna",
|
||||
type: "receita",
|
||||
icon: "RiArrowLeftRightLine",
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -62,29 +62,29 @@ export const DEFAULT_CATEGORIES: DefaultCategory[] = [
|
||||
* @param userId - User ID to seed categories for
|
||||
*/
|
||||
export async function seedDefaultCategoriesForUser(userId: string | undefined) {
|
||||
if (!userId) {
|
||||
return;
|
||||
}
|
||||
if (!userId) {
|
||||
return;
|
||||
}
|
||||
|
||||
const existing = await db.query.categorias.findFirst({
|
||||
columns: { id: true },
|
||||
where: eq(categorias.userId, userId),
|
||||
});
|
||||
const existing = await db.query.categorias.findFirst({
|
||||
columns: { id: true },
|
||||
where: eq(categorias.userId, userId),
|
||||
});
|
||||
|
||||
if (existing) {
|
||||
return;
|
||||
}
|
||||
if (existing) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (DEFAULT_CATEGORIES.length === 0) {
|
||||
return;
|
||||
}
|
||||
if (DEFAULT_CATEGORIES.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
await db.insert(categorias).values(
|
||||
DEFAULT_CATEGORIES.map((category) => ({
|
||||
name: category.name,
|
||||
type: category.type,
|
||||
icon: category.icon,
|
||||
userId,
|
||||
}))
|
||||
);
|
||||
await db.insert(categorias).values(
|
||||
DEFAULT_CATEGORIES.map((category) => ({
|
||||
name: category.name,
|
||||
type: category.type,
|
||||
icon: category.icon,
|
||||
userId,
|
||||
})),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user