Sub-layout sets product in Zustand store; NavBar reads it. getAccessibleProduct wrapped with React cache to avoid double DB call. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
478 B
TypeScript
19 lines
478 B
TypeScript
import { cache } from 'react'
|
|
import { prisma } from '@/lib/prisma'
|
|
|
|
const accessFilter = (userId: string) => ({
|
|
OR: [
|
|
{ user_id: userId },
|
|
{ members: { some: { user_id: userId } } },
|
|
],
|
|
})
|
|
|
|
export const getAccessibleProduct = cache(async (productId: string, userId: string) => {
|
|
return prisma.product.findFirst({
|
|
where: { id: productId, ...accessFilter(userId) },
|
|
})
|
|
})
|
|
|
|
export function productAccessFilter(userId: string) {
|
|
return accessFilter(userId)
|
|
}
|