diff --git a/queries/admin/user/deleteUser.js b/queries/admin/user/deleteUser.js index ed4cf51b..5970d2a5 100644 --- a/queries/admin/user/deleteUser.js +++ b/queries/admin/user/deleteUser.js @@ -16,13 +16,7 @@ export async function deleteUser(userId) { return client .$transaction([ - client.pageview.deleteMany({ - where: { websiteId: { in: websiteIds } }, - }), - client.eventData.deleteMany({ - where: { event: { websiteId: { in: websiteIds } } }, - }), - client.event.deleteMany({ + client.websiteEvent.deleteMany({ where: { websiteId: { in: websiteIds } }, }), client.session.deleteMany({ diff --git a/queries/admin/website/deleteWebsite.js b/queries/admin/website/deleteWebsite.js index 8ab4f2bc..685cee8a 100644 --- a/queries/admin/website/deleteWebsite.js +++ b/queries/admin/website/deleteWebsite.js @@ -5,13 +5,7 @@ export async function deleteWebsite(id) { const { client, transaction } = prisma; return transaction([ - client.pageview.deleteMany({ - where: { websiteId: id }, - }), - client.eventData.deleteMany({ - where: { event: { websiteId: id } }, - }), - client.event.deleteMany({ + client.websiteEvent.deleteMany({ where: { websiteId: id }, }), client.session.deleteMany({ diff --git a/queries/admin/website/resetWebsite.js b/queries/admin/website/resetWebsite.js index 7da3183a..f4d685cb 100644 --- a/queries/admin/website/resetWebsite.js +++ b/queries/admin/website/resetWebsite.js @@ -1,20 +1,25 @@ import prisma from 'lib/prisma'; +import { getWebsite } from 'queries'; +import cache from 'lib/cache'; export async function resetWebsite(id) { const { client, transaction } = prisma; + const { revId } = await getWebsite({ id }); + return transaction([ - client.pageview.deleteMany({ - where: { websiteId: id }, - }), - client.eventData.deleteMany({ - where: { event: { websiteId: id } }, - }), - client.event.deleteMany({ + client.websiteEvent.deleteMany({ where: { websiteId: id }, }), client.session.deleteMany({ where: { websiteId: id }, }), - ]); + client.website.update({ where: { id }, data: { revId: revId + 1 } }), + ]).then(async data => { + if (cache.enabled) { + await cache.storeWebsite(data[2]); + } + + return data; + }); } diff --git a/queries/analytics/pageview/getPageviewStats.js b/queries/analytics/pageview/getPageviewStats.js index bfc5d403..c711d448 100644 --- a/queries/analytics/pageview/getPageviewStats.js +++ b/queries/analytics/pageview/getPageviewStats.js @@ -66,7 +66,8 @@ async function clickhouseQuery( count(${count !== '*' ? 'distinct session_id' : count}) y from event where event_name = '' - and website_id= $1 + and website_id = $1 + and rev_id = $2 and ${getBetweenDates('created_at', start_at, end_at)} ${pageviewQuery} ${sessionQuery} diff --git a/queries/analytics/pageview/getPageviews.js b/queries/analytics/pageview/getPageviews.js index 6dbb4b30..2bf41b0b 100644 --- a/queries/analytics/pageview/getPageviews.js +++ b/queries/analytics/pageview/getPageviews.js @@ -33,11 +33,11 @@ async function clickhouseQuery(websites, start_at) { url from event where event_name = '' - and ${ - websites && websites.length > 0 - ? `website_id in (${getCommaSeparatedStringFormat(websites)})` - : '0 = 0' - } + and ${ + websites && websites.length > 0 + ? `website_id in (${getCommaSeparatedStringFormat(websites)})` + : '0 = 0' + } and created_at >= ${clickhouse.getDateFormat(start_at)}`, ); } diff --git a/queries/analytics/stats/getWebsiteStats.js b/queries/analytics/stats/getWebsiteStats.js index c6e37cd4..002d8a9c 100644 --- a/queries/analytics/stats/getWebsiteStats.js +++ b/queries/analytics/stats/getWebsiteStats.js @@ -1,6 +1,7 @@ import prisma from 'lib/prisma'; import clickhouse from 'lib/clickhouse'; import { runQuery, CLICKHOUSE, PRISMA } from 'lib/db'; +import cache from 'lib/cache'; export async function getWebsiteStats(...args) { return runQuery({ @@ -45,7 +46,8 @@ async function relationalQuery(websiteId, { start_at, end_at, filters = {} }) { async function clickhouseQuery(websiteId, { start_at, end_at, filters = {} }) { const { rawQuery, getDateQuery, getBetweenDates, parseFilters } = clickhouse; - const params = [websiteId]; + const website = await cache.fetchWebsite(websiteId); + const params = [websiteId, website?.revId || 0]; const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params); return rawQuery( @@ -63,6 +65,7 @@ async function clickhouseQuery(websiteId, { start_at, end_at, filters = {} }) { from event where event_name = '' and website_id = $1 + and rev_id = $2 and ${getBetweenDates('created_at', start_at, end_at)} ${pageviewQuery} ${sessionQuery}