import { Prisma, Link } from '@prisma/client'; import prisma from '@/lib/prisma'; import { PageResult, QueryFilters } from '@/lib/types'; async function findLink(criteria: Prisma.LinkFindUniqueArgs): Promise { return prisma.client.link.findUnique(criteria); } export async function getLink(linkId: string): Promise { return findLink({ where: { id: linkId, }, }); } export async function getLinks( criteria: Prisma.LinkFindManyArgs, filters: QueryFilters = {}, ): Promise> { const { search } = filters; const where: Prisma.LinkWhereInput = { ...criteria.where, ...prisma.getSearchParameters(search, [{ name: 'contains' }]), }; return prisma.pagedQuery('link', { ...criteria, where }, filters); } export async function getUserLinks( userId: string, filters?: QueryFilters, ): Promise> { return getLinks( { where: { userId, deletedAt: null, }, }, filters, ); } export async function getTeamLinks( teamId: string, filters?: QueryFilters, ): Promise> { return getLinks( { where: { teamId, deletedAt: null, }, }, filters, ); } export async function createLink(data: Prisma.LinkUncheckedCreateInput): Promise { return prisma.client.link.create({ data }); } export async function updateLink(linkId: string, data: any): Promise { return prisma.client.link.update({ where: { id: linkId }, data }); } export async function deleteLink(linkId: string): Promise { return prisma.client.link.delete({ where: { id: linkId } }); }