Pixel/links development. New validations folder. More refactoring.

This commit is contained in:
Mike Cao 2025-08-14 23:48:11 -07:00
parent 88639dfe83
commit 247e14646b
136 changed files with 1395 additions and 516 deletions

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { pagingParams, searchParams } from '@/lib/schema';
import { canViewAllTeams } from '@/lib/auth';
import { canViewAllTeams } from '@/validations';
import { getTeams } from '@/queries/prisma/team';
export async function GET(request: Request) {
@ -26,11 +26,11 @@ export async function GET(request: Request) {
include: {
_count: {
select: {
teamUser: true,
website: true,
members: true,
websites: true,
},
},
teamUser: {
members: {
select: {
user: {
omit: {

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { pagingParams, searchParams } from '@/lib/schema';
import { canViewUsers } from '@/lib/auth';
import { canViewUsers } from '@/validations';
import { getUsers } from '@/queries/prisma/user';
export async function GET(request: Request) {
@ -26,7 +26,7 @@ export async function GET(request: Request) {
include: {
_count: {
select: {
websiteUser: {
websites: {
where: { deletedAt: null },
},
},

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { pagingParams, searchParams } from '@/lib/schema';
import { canViewAllWebsites } from '@/lib/auth';
import { canViewAllWebsites } from '@/validations';
import { getWebsites } from '@/queries/prisma/website';
import { ROLES } from '@/lib/constants';
@ -39,7 +39,7 @@ export async function GET(request: Request) {
deletedAt: null,
},
include: {
teamUser: {
members: {
where: {
role: ROLES.teamOwner,
},

View file

@ -1,11 +1,10 @@
import { z } from 'zod';
import { checkPassword } from '@/lib/auth';
import { createSecureToken } from '@/lib/jwt';
import redis from '@/lib/redis';
import { getUserByUsername } from '@/queries';
import { json, unauthorized } from '@/lib/response';
import { parseRequest } from '@/lib/request';
import { saveAuth } from '@/lib/auth';
import { saveAuth, checkPassword } from '@/lib/auth';
import { secret } from '@/lib/crypto';
import { ROLES } from '@/lib/constants';

View file

@ -1,9 +1,9 @@
import { z } from 'zod';
import { canUpdateWebsite, canDeleteWebsite, canViewWebsite } from '@/lib/auth';
import { canUpdateLink, canDeleteLink, canViewLink } from '@/validations';
import { SHARE_ID_REGEX } from '@/lib/constants';
import { parseRequest } from '@/lib/request';
import { ok, json, unauthorized, serverError } from '@/lib/response';
import { deleteWebsite, getWebsite, updateWebsite } from '@/queries';
import { deleteLink, getLink, updateLink } from '@/queries';
export async function GET(
request: Request,
@ -17,11 +17,11 @@ export async function GET(
const { websiteId } = await params;
if (!(await canViewWebsite(auth, websiteId))) {
if (!(await canViewLink(auth, websiteId))) {
return unauthorized();
}
const website = await getWebsite(websiteId);
const website = await getLink(websiteId);
return json(website);
}
@ -45,12 +45,12 @@ export async function POST(
const { websiteId } = await params;
const { name, domain, shareId } = body;
if (!(await canUpdateWebsite(auth, websiteId))) {
if (!(await canUpdateLink(auth, websiteId))) {
return unauthorized();
}
try {
const website = await updateWebsite(websiteId, { name, domain, shareId });
const website = await updateLink(websiteId, { name, domain, shareId });
return Response.json(website);
} catch (e: any) {
@ -74,11 +74,11 @@ export async function DELETE(
const { websiteId } = await params;
if (!(await canDeleteWebsite(auth, websiteId))) {
if (!(await canDeleteLink(auth, websiteId))) {
return unauthorized();
}
await deleteWebsite(websiteId);
await deleteLink(websiteId);
return ok();
}

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canCreateTeamWebsite, canCreateWebsite } from '@/lib/auth';
import { canCreateTeamWebsite, canCreateWebsite } from '@/validations';
import { json, unauthorized } from '@/lib/response';
import { uuid } from '@/lib/crypto';
import { getQueryFilters, parseRequest } from '@/lib/request';
@ -20,9 +20,9 @@ export async function GET(request: Request) {
const filters = await getQueryFilters(query);
const result = await getUserLinks(auth.user.id, filters);
const links = await getUserLinks(auth.user.id, filters);
return json(result);
return json(links);
}
export async function POST(request: Request) {

View file

@ -0,0 +1,84 @@
import { z } from 'zod';
import { canUpdateWebsite, canDeleteWebsite, canViewWebsite } from '@/validations';
import { SHARE_ID_REGEX } from '@/lib/constants';
import { parseRequest } from '@/lib/request';
import { ok, json, unauthorized, serverError } from '@/lib/response';
import { deleteWebsite, getWebsite, updateWebsite } from '@/queries';
export async function GET(
request: Request,
{ params }: { params: Promise<{ websiteId: string }> },
) {
const { auth, error } = await parseRequest(request);
if (error) {
return error();
}
const { websiteId } = await params;
if (!(await canViewWebsite(auth, websiteId))) {
return unauthorized();
}
const website = await getWebsite(websiteId);
return json(website);
}
export async function POST(
request: Request,
{ params }: { params: Promise<{ websiteId: string }> },
) {
const schema = z.object({
name: z.string().optional(),
domain: z.string().optional(),
shareId: z.string().regex(SHARE_ID_REGEX).nullable().optional(),
});
const { auth, body, error } = await parseRequest(request, schema);
if (error) {
return error();
}
const { websiteId } = await params;
const { name, domain, shareId } = body;
if (!(await canUpdateWebsite(auth, websiteId))) {
return unauthorized();
}
try {
const website = await updateWebsite(websiteId, { name, domain, shareId });
return Response.json(website);
} catch (e: any) {
if (e.message.includes('Unique constraint') && e.message.includes('share_id')) {
return serverError(new Error('That share ID is already taken.'));
}
return serverError(e);
}
}
export async function DELETE(
request: Request,
{ params }: { params: Promise<{ websiteId: string }> },
) {
const { auth, error } = await parseRequest(request);
if (error) {
return error();
}
const { websiteId } = await params;
if (!(await canDeleteWebsite(auth, websiteId))) {
return unauthorized();
}
await deleteWebsite(websiteId);
return ok();
}

View file

@ -0,0 +1,62 @@
import { z } from 'zod';
import { canCreateTeamWebsite, canCreateWebsite } from '@/validations';
import { json, unauthorized } from '@/lib/response';
import { uuid } from '@/lib/crypto';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { pagingParams, searchParams } from '@/lib/schema';
import { createPixel, getUserLinks } from '@/queries';
export async function GET(request: Request) {
const schema = z.object({
...pagingParams,
...searchParams,
});
const { auth, query, error } = await parseRequest(request, schema);
if (error) {
return error();
}
const filters = await getQueryFilters(query);
const inks = await getUserLinks(auth.user.id, filters);
return json(inks);
}
export async function POST(request: Request) {
const schema = z.object({
name: z.string().max(100),
slug: z.string().max(100),
teamId: z.string().nullable().optional(),
id: z.string().uuid().nullable().optional(),
});
const { auth, body, error } = await parseRequest(request, schema);
if (error) {
return error();
}
const { id, name, slug, teamId } = body;
if ((teamId && !(await canCreateTeamWebsite(auth, teamId))) || !(await canCreateWebsite(auth))) {
return unauthorized();
}
const data: any = {
id: id ?? uuid(),
name,
slug,
teamId,
};
if (!teamId) {
data.userId = auth.user.id;
}
const result = await createPixel(data);
return json(result);
}

View file

@ -1,6 +1,6 @@
import { json, unauthorized } from '@/lib/response';
import { getRealtimeData } from '@/queries';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { startOfMinute, subMinutes } from 'date-fns';
import { REALTIME_RANGE } from '@/lib/constants';
import { parseRequest, getQueryFilters } from '@/lib/request';

View file

@ -1,6 +1,6 @@
import { parseRequest } from '@/lib/request';
import { deleteReport, getReport, updateReport } from '@/queries';
import { canDeleteReport, canUpdateReport, canViewReport } from '@/lib/auth';
import { canDeleteReport, canUpdateReport, canViewReport } from '@/validations';
import { unauthorized, json, notFound, ok } from '@/lib/response';
import { reportSchema } from '@/lib/schema';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getQueryFilters, parseRequest, setWebsiteDate } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { reportResultSchema } from '@/lib/schema';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { getQueryFilters, parseRequest, setWebsiteDate } from '@/lib/request';
import { BreakdownParameters, getBreakdown } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { parseRequest, getQueryFilters, setWebsiteDate } from '@/lib/request';
import { FunnelParameters, getFunnel } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { getQueryFilters, parseRequest, setWebsiteDate } from '@/lib/request';
import { getGoal, GoalParameters } from '@/queries/sql/reports/getGoal';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { getJourney } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { parseRequest, getQueryFilters, setWebsiteDate } from '@/lib/request';
import { getRetention, RetentionParameters } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { parseRequest, getQueryFilters, setWebsiteDate } from '@/lib/request';
import { reportResultSchema } from '@/lib/schema';

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { uuid } from '@/lib/crypto';
import { pagingParams, reportSchema } from '@/lib/schema';
import { parseRequest } from '@/lib/request';
import { canViewWebsite, canUpdateWebsite } from '@/lib/auth';
import { canViewWebsite, canUpdateWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { getReports, createReport } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { unauthorized, json } from '@/lib/response';
import { getQueryFilters, parseRequest, setWebsiteDate } from '@/lib/request';
import { getUTM, UTMParameters } from '@/queries';

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json } from '@/lib/response';
import { canViewTeam } from '@/lib/auth';
import { canViewTeam } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { pagingParams, searchParams } from '@/lib/schema';
import { getTeamLinks } from '@/queries';
@ -23,7 +23,7 @@ export async function GET(request: Request, { params }: { params: Promise<{ team
const filters = await getQueryFilters(query);
const websites = await getTeamLinks(teamId, filters);
const links = await getTeamLinks(teamId, filters);
return json(websites);
return json(links);
}

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json } from '@/lib/response';
import { canViewTeam } from '@/lib/auth';
import { canViewTeam } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { pagingParams, searchParams } from '@/lib/schema';
import { getTeamPixels } from '@/queries';

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json, notFound, ok } from '@/lib/response';
import { canDeleteTeam, canUpdateTeam, canViewTeam } from '@/lib/auth';
import { canDeleteTeam, canUpdateTeam, canViewTeam } from '@/validations';
import { parseRequest } from '@/lib/request';
import { deleteTeam, getTeam, updateTeam } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canDeleteTeamUser, canUpdateTeam } from '@/lib/auth';
import { canDeleteTeamUser, canUpdateTeam } from '@/validations';
import { parseRequest } from '@/lib/request';
import { badRequest, json, ok, unauthorized } from '@/lib/response';
import { deleteTeamUser, getTeamUser, updateTeamUser } from '@/queries';

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json, badRequest } from '@/lib/response';
import { canAddUserToTeam, canViewTeam } from '@/lib/auth';
import { canAddUserToTeam, canViewTeam } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { pagingParams, teamRoleParam, searchParams } from '@/lib/schema';
import { createTeamUser, getTeamUser, getTeamUsers } from '@/queries';

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json } from '@/lib/response';
import { canViewTeam } from '@/lib/auth';
import { canViewTeam } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { pagingParams, searchParams } from '@/lib/schema';
import { getTeamWebsites } from '@/queries';

View file

@ -1,6 +1,6 @@
import { z } from 'zod';
import { unauthorized, json, badRequest, notFound } from '@/lib/response';
import { canCreateTeam } from '@/lib/auth';
import { canCreateTeam } from '@/validations';
import { parseRequest } from '@/lib/request';
import { ROLES } from '@/lib/constants';
import { createTeamUser, findTeam, getTeamUser } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getRandomChars } from '@/lib/crypto';
import { unauthorized, json } from '@/lib/response';
import { canCreateTeam } from '@/lib/auth';
import { canCreateTeam } from '@/validations';
import { uuid } from '@/lib/crypto';
import { parseRequest } from '@/lib/request';
import { createTeam } from '@/queries';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canUpdateUser, canViewUser, canDeleteUser } from '@/lib/auth';
import { canUpdateUser, canViewUser, canDeleteUser } from '@/validations';
import { getUser, getUserByUsername, updateUser, deleteUser } from '@/queries';
import { json, unauthorized, badRequest, ok } from '@/lib/response';
import { hashPassword } from '@/lib/auth';

View file

@ -1,5 +1,6 @@
import { z } from 'zod';
import { hashPassword, canCreateUser } from '@/lib/auth';
import { hashPassword } from '@/lib/auth';
import { canCreateUser } from '@/validations';
import { ROLES } from '@/lib/constants';
import { uuid } from '@/lib/crypto';
import { parseRequest } from '@/lib/request';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { json, unauthorized } from '@/lib/response';
import { getActiveVisitors } from '@/queries';
import { parseRequest } from '@/lib/request';
@ -19,7 +19,7 @@ export async function GET(
return unauthorized();
}
const result = await getActiveVisitors(websiteId);
const visitors = await getActiveVisitors(websiteId);
return json(result);
return json(visitors);
}

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getWebsiteDateRange } from '@/queries';
import { json, unauthorized } from '@/lib/response';
import { parseRequest } from '@/lib/request';
@ -19,7 +19,7 @@ export async function GET(
return unauthorized();
}
const result = await getWebsiteDateRange(websiteId);
const dateRange = await getWebsiteDateRange(websiteId);
return json(result);
return json(dateRange);
}

View file

@ -1,6 +1,6 @@
import { parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventData } from '@/queries/sql/events/getEventData';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventDataEvents } from '@/queries/sql/events/getEventDataEvents';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventDataFields } from '@/queries';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventDataProperties } from '@/queries';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventDataStats } from '@/queries';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getEventDataValues } from '@/queries';
export async function GET(

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { dateRangeParams, pagingParams, filterParams, searchParams } from '@/lib/schema';
import { getWebsiteEvents } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { parseRequest, getQueryFilters } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { filterParams, timezoneParam, unitParam } from '@/lib/schema';
import { getEventStats } from '@/queries';

View file

@ -3,7 +3,7 @@ import JSZip from 'jszip';
import Papa from 'papaparse';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { pagingParams, dateRangeParams } from '@/lib/schema';
import { getEventMetrics, getPageviewMetrics, getSessionMetrics } from '@/queries';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { EVENT_COLUMNS, SESSION_COLUMNS } from '@/lib/constants';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { badRequest, json, unauthorized } from '@/lib/response';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { EVENT_COLUMNS, SESSION_COLUMNS } from '@/lib/constants';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { badRequest, json, unauthorized } from '@/lib/response';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { dateRangeParams, filterParams } from '@/lib/schema';
import { getCompareDate } from '@/lib/date';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getReports } from '@/queries';
import { filterParams, pagingParams } from '@/lib/schema';
import { parseRequest } from '@/lib/request';

View file

@ -1,4 +1,4 @@
import { canUpdateWebsite } from '@/lib/auth';
import { canUpdateWebsite } from '@/validations';
import { resetWebsite } from '@/queries';
import { unauthorized, ok } from '@/lib/response';
import { parseRequest } from '@/lib/request';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canUpdateWebsite, canDeleteWebsite, canViewWebsite } from '@/lib/auth';
import { canUpdateWebsite, canDeleteWebsite, canViewWebsite } from '@/validations';
import { SHARE_ID_REGEX } from '@/lib/constants';
import { parseRequest } from '@/lib/request';
import { ok, json, unauthorized, serverError } from '@/lib/response';

View file

@ -1,4 +1,4 @@
import { canDeleteWebsite, canUpdateWebsite, canViewWebsite } from '@/lib/auth';
import { canDeleteWebsite, canUpdateWebsite, canViewWebsite } from '@/validations';
import { parseRequest } from '@/lib/request';
import { json, notFound, ok, unauthorized } from '@/lib/response';
import { segmentTypeParam } from '@/lib/schema';

View file

@ -1,4 +1,4 @@
import { canUpdateWebsite, canViewWebsite } from '@/lib/auth';
import { canUpdateWebsite, canViewWebsite } from '@/validations';
import { uuid } from '@/lib/crypto';
import { parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getSessionDataProperties } from '@/queries';
export async function GET(

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { json, unauthorized } from '@/lib/response';
import { getSessionDataValues } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { parseRequest, getQueryFilters } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getSessionActivity } from '@/queries';
export async function GET(

View file

@ -1,5 +1,5 @@
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getSessionData } from '@/queries';
import { parseRequest } from '@/lib/request';

View file

@ -1,5 +1,5 @@
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { getWebsiteSession } from '@/queries';
import { parseRequest } from '@/lib/request';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { dateRangeParams, filterParams, pagingParams, searchParams } from '@/lib/schema';
import { getWebsiteSessions } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { parseRequest, getQueryFilters } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { filterParams } from '@/lib/schema';
import { getWebsiteSessionStats } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { pagingParams, timezoneParam } from '@/lib/schema';
import { getWebsiteSessionsWeekly } from '@/queries';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { parseRequest, getQueryFilters } from '@/lib/request';
import { unauthorized, json } from '@/lib/response';
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { dateRangeParams, filterParams } from '@/lib/schema';
import { getWebsiteStats } from '@/queries';
import { getCompareDate } from '@/lib/date';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canTransferWebsiteToTeam, canTransferWebsiteToUser } from '@/lib/auth';
import { canTransferWebsiteToTeam, canTransferWebsiteToUser } from '@/validations';
import { updateWebsite } from '@/queries';
import { parseRequest } from '@/lib/request';
import { badRequest, unauthorized, json } from '@/lib/response';

View file

@ -1,4 +1,4 @@
import { canViewWebsite } from '@/lib/auth';
import { canViewWebsite } from '@/validations';
import { EVENT_COLUMNS, FILTER_COLUMNS, FILTER_GROUPS, SESSION_COLUMNS } from '@/lib/constants';
import { getQueryFilters, parseRequest } from '@/lib/request';
import { badRequest, json, unauthorized } from '@/lib/response';

View file

@ -1,5 +1,5 @@
import { z } from 'zod';
import { canCreateTeamWebsite, canCreateWebsite } from '@/lib/auth';
import { canCreateTeamWebsite, canCreateWebsite } from '@/validations';
import { json, unauthorized } from '@/lib/response';
import { uuid } from '@/lib/crypto';
import { parseRequest } from '@/lib/request';