'use server' import { prisma } from './db' import { revalidatePath } from 'next/cache' export async function getLists() { return await prisma.list.findMany({ include: { items: true, }, orderBy: { updatedAt: 'desc', }, }) } export async function createList(title: string, color: string = '#3B82F6') { const list = await prisma.list.create({ data: { title, color, }, }) revalidatePath('/') return list } export async function getListWithItems(listId: string) { return await prisma.list.findUnique({ where: { id: listId }, include: { items: { orderBy: { createdAt: 'desc', }, }, }, }) } export async function createItem(listId: string, title: string, description?: string) { const item = await prisma.item.create({ data: { title, description, listId, }, }) revalidatePath(`/list/${listId}`) return item } export async function toggleItem(itemId: string) { const item = await prisma.item.findUnique({ where: { id: itemId } }) if (!item) return null const updated = await prisma.item.update({ where: { id: itemId }, data: { completed: !item.completed }, }) revalidatePath(`/list/${item.listId}`) return updated } export async function updateItem( itemId: string, data: { title?: string description?: string | null completed?: boolean priority?: 'low' | 'medium' | 'high' dueDate?: Date | null tags?: string[] notes?: string | null } ) { const item = await prisma.item.findUnique({ where: { id: itemId } }) if (!item) return null const updated = await prisma.item.update({ where: { id: itemId }, data, }) revalidatePath(`/list/${item.listId}`) return updated } export async function deleteItem(itemId: string) { const item = await prisma.item.findUnique({ where: { id: itemId } }) if (!item) return null await prisma.item.delete({ where: { id: itemId }, }) revalidatePath(`/list/${item.listId}`) return { success: true } } export async function deleteList(listId: string) { await prisma.list.delete({ where: { id: listId }, }) revalidatePath('/') return { success: true } } export async function updateList( listId: string, data: { title?: string color?: string } ) { const updated = await prisma.list.update({ where: { id: listId }, data, }) revalidatePath('/') revalidatePath(`/list/${listId}`) return updated }