import type { Prisma } from '@prisma/client'; import type { Actor } from './record-scope'; export type PriorLens = 'off' | 'current' | 'archive'; export function actorPriorLens(actor: Pick | undefined): PriorLens { return actor?.priorLens ?? 'off'; } function hasCutoff(cutoff?: Date | null): cutoff is Date { return cutoff instanceof Date && !Number.isNaN(cutoff.getTime()); } /** شخص/شرکت دیگر با این لنز فیلتر نمی‌شوند. */ export function personPriorWhere(_lens?: PriorLens): Prisma.PersonWhereInput { return {}; } export function companyPriorWhere(_lens?: PriorLens): Prisma.CompanyWhereInput { return {}; } export function dealPriorWhere( lens: PriorLens | undefined, cutoff?: Date | null, ): Prisma.DealWhereInput { if (lens !== 'current' && lens !== 'archive') return {}; if (!hasCutoff(cutoff)) return {}; if (lens === 'current') { return { OR: [ { createdAt: { gte: cutoff } }, { promotedFromPriorAt: { not: null } }, ], }; } return { createdAt: { lt: cutoff }, promotedFromPriorAt: null }; } export function activityPriorWhere( lens: PriorLens | undefined, cutoff?: Date | null, ): Prisma.ActivityWhereInput { if (lens !== 'current' && lens !== 'archive') return {}; if (!hasCutoff(cutoff)) return {}; if (lens === 'current') { return { OR: [ { createdAt: { gte: cutoff } }, { promotedFromPriorAt: { not: null } }, ], }; } return { createdAt: { lt: cutoff }, promotedFromPriorAt: null }; } /** فهرست شخص/شرکت: همیشه بدون فیلتر لنز (سازگاری با call-siteهای قدیمی). */ export function listPriorLens( _lens: PriorLens | undefined, _q: string | undefined, _explicitSource: boolean, ): PriorLens { return 'off'; }