Add duplicate pattern check when adding budget rules
Client side catches it immediately (case-insensitive match against existing rules) and shows an inline error. API also rejects with 409 as the authoritative guard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,11 @@ export async function POST(req: Request) {
|
||||
const budget = await prisma.budget.findFirst({ where: { id: budgetId, userId: session.user.id } })
|
||||
if (!budget) return NextResponse.json({ error: 'Budget not found' }, { status: 404 })
|
||||
|
||||
const existing = await prisma.budgetRule.findFirst({
|
||||
where: { budgetId, pattern: { equals: pattern, mode: 'insensitive' } },
|
||||
})
|
||||
if (existing) return NextResponse.json({ error: 'Duplicate rule pattern' }, { status: 409 })
|
||||
|
||||
const rule = await prisma.budgetRule.create({
|
||||
data: { userId: session.user.id, budgetId, pattern },
|
||||
select: { id: true, budgetId: true, pattern: true },
|
||||
|
||||
Reference in New Issue
Block a user