Replace didar/live-deal filters with createdAt cutoff and promotedFromPriorAt; add unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
import type { Prisma } from '@prisma/client';
|
|
import type { Actor } from './record-scope';
|
|
|
|
export type PriorLens = 'off' | 'current' | 'archive';
|
|
|
|
export function actorPriorLens(actor: Pick<Actor, 'priorLens'> | 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';
|
|
}
|