Refactor filter handling for queries.

This commit is contained in:
Mike Cao 2025-07-02 01:44:12 -07:00
parent 5b300f1ff5
commit ee6c68d27c
107 changed files with 731 additions and 835 deletions

View file

@ -1,6 +1,6 @@
import { Prisma, Report } from '@/generated/prisma/client';
import prisma from '@/lib/prisma';
import { PageResult, PageParams } from '@/lib/types';
import { PageResult, QueryFilters } from '@/lib/types';
import ReportFindManyArgs = Prisma.ReportFindManyArgs;
async function findReport(criteria: Prisma.ReportFindUniqueArgs): Promise<Report> {
@ -17,9 +17,9 @@ export async function getReport(reportId: string): Promise<Report> {
export async function getReports(
criteria: ReportFindManyArgs,
pageParams: PageParams = {},
filters: QueryFilters = {},
): Promise<PageResult<Report[]>> {
const { search } = pageParams;
const { search } = filters;
const where: Prisma.ReportWhereInput = {
...criteria.where,
@ -45,12 +45,12 @@ export async function getReports(
]),
};
return prisma.pagedQuery('report', { ...criteria, where }, pageParams);
return prisma.pagedQuery('report', { ...criteria, where }, filters);
}
export async function getUserReports(
userId: string,
filters?: PageParams,
filters?: QueryFilters,
): Promise<PageResult<Report[]>> {
return getReports(
{
@ -72,7 +72,7 @@ export async function getUserReports(
export async function getWebsiteReports(
websiteId: string,
filters: PageParams = {},
filters: QueryFilters = {},
): Promise<PageResult<Report[]>> {
return getReports(
{

View file

@ -2,7 +2,7 @@ import { Prisma, Team } from '@/generated/prisma/client';
import { ROLES } from '@/lib/constants';
import { uuid } from '@/lib/crypto';
import prisma from '@/lib/prisma';
import { PageResult, PageParams } from '@/lib/types';
import { PageResult, QueryFilters } from '@/lib/types';
import TeamFindManyArgs = Prisma.TeamFindManyArgs;
export async function findTeam(criteria: Prisma.TeamFindUniqueArgs): Promise<Team> {
@ -22,7 +22,7 @@ export async function getTeam(teamId: string, options: { includeMembers?: boolea
export async function getTeams(
criteria: TeamFindManyArgs,
filters: PageParams = {},
filters: QueryFilters,
): Promise<PageResult<Team[]>> {
const { getSearchParameters } = prisma;
const { search } = filters;
@ -42,7 +42,7 @@ export async function getTeams(
);
}
export async function getUserTeams(userId: string, filters: PageParams = {}) {
export async function getUserTeams(userId: string, filters: QueryFilters) {
return getTeams(
{
where: {

View file

@ -1,7 +1,7 @@
import { Prisma, TeamUser } from '@/generated/prisma/client';
import { uuid } from '@/lib/crypto';
import prisma from '@/lib/prisma';
import { PageResult, PageParams } from '@/lib/types';
import { PageResult, QueryFilters } from '@/lib/types';
import TeamUserFindManyArgs = Prisma.TeamUserFindManyArgs;
export async function findTeamUser(criteria: Prisma.TeamUserFindUniqueArgs): Promise<TeamUser> {
@ -19,7 +19,7 @@ export async function getTeamUser(teamId: string, userId: string): Promise<TeamU
export async function getTeamUsers(
criteria: TeamUserFindManyArgs,
filters?: PageParams,
filters?: QueryFilters,
): Promise<PageResult<TeamUser[]>> {
const { search } = filters;

View file

@ -1,7 +1,7 @@
import { Prisma, User } from '@/generated/prisma/client';
import { ROLES } from '@/lib/constants';
import prisma from '@/lib/prisma';
import { PageResult, Role, PageParams } from '@/lib/types';
import { PageResult, Role, QueryFilters } from '@/lib/types';
import { getRandomChars } from '@/lib/crypto';
import UserFindManyArgs = Prisma.UserFindManyArgs;
@ -49,9 +49,9 @@ export async function getUserByUsername(username: string, options: GetUserOption
export async function getUsers(
criteria: UserFindManyArgs,
pageParams?: PageParams,
filters: QueryFilters = {},
): Promise<PageResult<User[]>> {
const { search } = pageParams;
const { search } = filters;
const where: Prisma.UserWhereInput = {
...criteria.where,
@ -68,7 +68,7 @@ export async function getUsers(
{
orderBy: 'createdAt',
sortDescending: true,
...pageParams,
...filters,
},
);
}

View file

@ -1,7 +1,7 @@
import { Prisma, Website } from '@/generated/prisma/client';
import redis from '@/lib/redis';
import prisma from '@/lib/prisma';
import { PageResult, PageParams } from '@/lib/types';
import { PageResult, QueryFilters } from '@/lib/types';
import WebsiteFindManyArgs = Prisma.WebsiteFindManyArgs;
import { ROLES } from '@/lib/constants';
@ -28,9 +28,9 @@ export async function getSharedWebsite(shareId: string) {
export async function getWebsites(
criteria: WebsiteFindManyArgs,
pageParams: PageParams,
filters: QueryFilters,
): Promise<PageResult<Website[]>> {
const { search } = pageParams;
const { search } = filters;
const where: Prisma.WebsiteWhereInput = {
...criteria.where,
@ -43,7 +43,7 @@ export async function getWebsites(
deletedAt: null,
};
return prisma.pagedQuery('website', { ...criteria, where }, pageParams);
return prisma.pagedQuery('website', { ...criteria, where }, filters);
}
export async function getAllWebsites(userId: string) {
@ -90,7 +90,7 @@ export async function getAllUserWebsitesIncludingTeamOwner(userId: string) {
export async function getUserWebsites(
userId: string,
filters?: PageParams,
filters?: QueryFilters,
): Promise<PageResult<Website[]>> {
return getWebsites(
{
@ -115,7 +115,7 @@ export async function getUserWebsites(
export async function getTeamWebsites(
teamId: string,
filters?: PageParams,
filters?: QueryFilters,
): Promise<PageResult<Website[]>> {
return getWebsites(
{