mirror of
https://github.com/umami-software/umami.git
synced 2026-02-06 13:47:15 +01:00
Pixel/links development. New validations folder. More refactoring.
This commit is contained in:
parent
88639dfe83
commit
247e14646b
136 changed files with 1395 additions and 516 deletions
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue