api and lib fixes (#1643)

This commit is contained in:
Brian Cao 2022-11-08 11:55:02 -08:00 committed by GitHub
parent 168283bf11
commit 13fd3ccd16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 30 additions and 29 deletions

View File

@ -52,7 +52,7 @@ export function isValidToken(token, validation) {
export async function allowQuery(req, type) { export async function allowQuery(req, type) {
const { id } = req.query; const { id } = req.query;
const { id: userId, isAdmin, shareToken } = req.auth ?? {}; const { userId, isAdmin, shareToken } = req.auth ?? {};
if (isAdmin) { if (isAdmin) {
return true; return true;

View File

@ -10,7 +10,7 @@ export default async (req, res) => {
if (req.method === 'GET') { if (req.method === 'GET') {
const { userId } = req.auth; const { userId } = req.auth;
const websites = await getUserWebsites({ userId }); const websites = await getUserWebsites(userId);
const ids = websites.map(({ id }) => id); const ids = websites.map(({ id }) => id);
const token = createToken({ websites: ids }, secret()); const token = createToken({ websites: ids }, secret());
const data = await getRealtimeData(ids, subMinutes(new Date(), 30)); const data = await getRealtimeData(ids, subMinutes(new Date(), 30));

View File

@ -7,12 +7,13 @@ export default async (req, res) => {
await useCors(req, res); await useCors(req, res);
await useAuth(req, res); await useAuth(req, res);
const { id, isAdmin } = req.auth; const { userId, isAdmin } = req.auth;
if (req.method === 'GET') { if (req.method === 'GET') {
const { include_all } = req.query; const { include_all } = req.query;
const websites = isAdmin && include_all ? await getAllWebsites() : await getUserWebsites(id); const websites =
isAdmin && include_all ? await getAllWebsites() : await getUserWebsites(userId);
return ok(res, websites); return ok(res, websites);
} }
@ -21,7 +22,7 @@ export default async (req, res) => {
const { name, domain, enableShareUrl } = req.body; const { name, domain, enableShareUrl } = req.body;
const shareId = enableShareUrl ? getRandomChars(8) : null; const shareId = enableShareUrl ? getRandomChars(8) : null;
const website = await createWebsite(id, { id: uuid(), name, domain, shareId }); const website = await createWebsite(userId, { id: uuid(), name, domain, shareId });
return ok(res, website); return ok(res, website);
} }

View File

@ -8,19 +8,25 @@ export async function deleteUser(userId) {
where: { userId }, where: { userId },
}); });
let websiteIds = [];
if (websites.length > 0) {
websiteIds = websites.map(a => a.id);
}
return client return client
.$transaction([ .$transaction([
client.pageview.deleteMany({ client.pageview.deleteMany({
where: { session: { website: { userId } } }, where: { websiteId: { in: websiteIds } },
}), }),
client.eventData.deleteMany({ client.eventData.deleteMany({
where: { event: { session: { website: { userId } } } }, where: { event: { websiteId: { in: websiteIds } } },
}), }),
client.event.deleteMany({ client.event.deleteMany({
where: { session: { website: { userId } } }, where: { websiteId: { in: websiteIds } },
}), }),
client.session.deleteMany({ client.session.deleteMany({
where: { website: { userId } }, where: { websiteId: { in: websiteIds } },
}), }),
client.website.deleteMany({ client.website.deleteMany({
where: { userId }, where: { userId },

View File

@ -6,16 +6,16 @@ export async function deleteWebsite(id) {
return transaction([ return transaction([
client.pageview.deleteMany({ client.pageview.deleteMany({
where: { session: { website: { id } } }, where: { websiteId: id },
}), }),
client.eventData.deleteMany({ client.eventData.deleteMany({
where: { event: { session: { website: { id } } } }, where: { event: { websiteId: id } },
}), }),
client.event.deleteMany({ client.event.deleteMany({
where: { session: { website: { id } } }, where: { websiteId: id },
}), }),
client.session.deleteMany({ client.session.deleteMany({
where: { website: { id } }, where: { websiteId: id },
}), }),
client.website.delete({ client.website.delete({
where: { id }, where: { id },

View File

@ -5,16 +5,16 @@ export async function resetWebsite(id) {
return transaction([ return transaction([
client.pageview.deleteMany({ client.pageview.deleteMany({
where: { session: { website: { id } } }, where: { websiteId: id },
}), }),
client.eventData.deleteMany({ client.eventData.deleteMany({
where: { event: { session: { website: { id } } } }, where: { event: { websiteId: id } },
}), }),
client.event.deleteMany({ client.event.deleteMany({
where: { session: { website: { id } } }, where: { websiteId: id },
}), }),
client.session.deleteMany({ client.session.deleteMany({
where: { website: { id } }, where: { websiteId: id },
}), }),
]); ]);
} }

View File

@ -12,11 +12,9 @@ export function getEvents(...args) {
function relationalQuery(websites, start_at) { function relationalQuery(websites, start_at) {
return prisma.client.event.findMany({ return prisma.client.event.findMany({
where: { where: {
website: { websiteId: {
id: {
in: websites, in: websites,
}, },
},
createdAt: { createdAt: {
gte: start_at, gte: start_at,
}, },

View File

@ -12,11 +12,9 @@ export async function getPageviews(...args) {
async function relationalQuery(websites, start_at) { async function relationalQuery(websites, start_at) {
return prisma.client.pageview.findMany({ return prisma.client.pageview.findMany({
where: { where: {
website: { websiteId: {
id: {
in: websites, in: websites,
}, },
},
createdAt: { createdAt: {
gte: start_at, gte: start_at,
}, },

View File

@ -14,11 +14,9 @@ async function relationalQuery(websites, start_at) {
where: { where: {
...(websites && websites.length > 0 ...(websites && websites.length > 0
? { ? {
website: { websiteId: {
id: {
in: websites, in: websites,
}, },
},
} }
: {}), : {}),
createdAt: { createdAt: {