n.websiteUuid === websiteUuid);
return {
- pageviews: filterWebsite(pageviews, websiteId),
- sessions: filterWebsite(sessions, websiteId),
- events: filterWebsite(events, websiteId),
+ pageviews: filterWebsite(pageviews, id),
+ sessions: filterWebsite(sessions, id),
+ events: filterWebsite(events, id),
};
}
}
return data;
- }, [data, websiteId]);
+ }, [data, websiteUuid]);
const countries = useMemo(() => {
if (realtimeData?.sessions) {
@@ -117,25 +118,20 @@ export default function RealtimeDashboard() {
-
+
-
+
-
+
diff --git a/components/settings/AccountSettings.js b/components/settings/AccountSettings.js
index 2ec378f1ce..eebdae4044 100644
--- a/components/settings/AccountSettings.js
+++ b/components/settings/AccountSettings.js
@@ -29,13 +29,15 @@ export default function AccountSettings() {
const Checkmark = ({ isAdmin }) => (isAdmin ? } size="medium" /> : null);
- const DashboardLink = row => (
-
-
- } />
-
-
- );
+ const DashboardLink = row => {
+ return (
+
+
+ } />
+
+
+ );
+ };
const Buttons = row => (
diff --git a/db/postgresql/migrations/04_add_uuid/migration.sql b/db/postgresql/migrations/04_add_uuid/migration.sql
index 21d4cf07f8..749cef6b28 100644
--- a/db/postgresql/migrations/04_add_uuid/migration.sql
+++ b/db/postgresql/migrations/04_add_uuid/migration.sql
@@ -1,3 +1,5 @@
+-- CreateExtension
+CREATE EXTENSION IF NOT EXISTS pgcrypto;
-- AlterTable
ALTER TABLE "account" ADD COLUMN "account_uuid" UUID NULL;
diff --git a/lib/auth.js b/lib/auth.js
index 446d5169a8..93027544fa 100644
--- a/lib/auth.js
+++ b/lib/auth.js
@@ -1,6 +1,6 @@
import { parseSecureToken, parseToken } from 'next-basics';
-import { getWebsite } from 'queries';
-import { SHARE_TOKEN_HEADER } from 'lib/constants';
+import { getAccount, getWebsite } from 'queries';
+import { SHARE_TOKEN_HEADER, TYPE_ACCOUNT, TYPE_WEBSITE } from 'lib/constants';
import { secret } from 'lib/crypto';
export function getAuthToken(req) {
@@ -35,7 +35,7 @@ export function isValidToken(token, validation) {
return false;
}
-export async function allowQuery(req) {
+export async function allowQuery(req, type) {
const { id } = req.query;
const { userId, isAdmin, shareToken } = req.auth ?? {};
@@ -49,9 +49,15 @@ export async function allowQuery(req) {
}
if (userId) {
- const website = await getWebsite({ id });
+ if (type === TYPE_WEBSITE) {
+ const website = await getWebsite({ websiteUuid: id });
- return website && website.userId === userId;
+ return website && website.userId === userId;
+ } else if (type === TYPE_ACCOUNT) {
+ const account = await getAccount({ accountUuid: id });
+
+ return account && account.accountUuid === id;
+ }
}
return false;
diff --git a/lib/constants.js b/lib/constants.js
index feef540df7..8b3ee8d0e3 100644
--- a/lib/constants.js
+++ b/lib/constants.js
@@ -21,6 +21,9 @@ export const DEFAULT_WEBSITE_LIMIT = 10;
export const REALTIME_RANGE = 30;
export const REALTIME_INTERVAL = 3000;
+export const TYPE_WEBSITE = 'website';
+export const TYPE_ACCOUNT = 'account';
+
export const THEME_COLORS = {
light: {
primary: '#2680eb',
diff --git a/lib/session.js b/lib/session.js
index acd5b6b0b4..d1a887685b 100644
--- a/lib/session.js
+++ b/lib/session.js
@@ -4,7 +4,7 @@ import { secret, uuid } from 'lib/crypto';
import redis, { DELETED } from 'lib/redis';
import clickhouse from 'lib/clickhouse';
import { getClientInfo, getJsonBody } from 'lib/request';
-import { createSession, getSessionByUuid, getWebsiteByUuid } from 'queries';
+import { createSession, getSessionByUuid, getWebsite } from 'queries';
export async function getSession(req) {
const { payload } = getJsonBody(req);
@@ -38,7 +38,7 @@ export async function getSession(req) {
// Check database if does not exists in Redis
if (!websiteId) {
- const website = await getWebsiteByUuid(websiteUuid);
+ const website = await getWebsite({ websiteUuid });
websiteId = website ? website.id : null;
}
diff --git a/package.json b/package.json
index facf913ab3..e586774f0d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "umami",
- "version": "1.39.1",
+ "version": "1.39.2",
"description": "A simple, fast, privacy-focused alternative to Google Analytics.",
"author": "Mike Cao ",
"license": "MIT",
diff --git a/pages/api/accounts/[id]/password.js b/pages/api/accounts/[id]/password.js
index 3a46c56aaf..89649c201f 100644
--- a/pages/api/accounts/[id]/password.js
+++ b/pages/api/accounts/[id]/password.js
@@ -1,4 +1,4 @@
-import { getAccountById, updateAccount } from 'queries';
+import { getAccount, updateAccount } from 'queries';
import { useAuth } from 'lib/middleware';
import {
badRequest,
@@ -8,21 +8,21 @@ import {
checkPassword,
hashPassword,
} from 'next-basics';
+import { allowQuery } from 'lib/auth';
+import { TYPE_ACCOUNT } from 'lib/constants';
export default async (req, res) => {
await useAuth(req, res);
- const { userId: currentUserId, isAdmin: currentUserIsAdmin } = req.auth;
const { current_password, new_password } = req.body;
- const { id } = req.query;
- const userId = +id;
+ const { id: accountUuid } = req.query;
- if (!currentUserIsAdmin && userId !== currentUserId) {
+ if (!(await allowQuery(req, TYPE_ACCOUNT))) {
return unauthorized(res);
}
if (req.method === 'POST') {
- const account = await getAccountById(userId);
+ const account = await getAccount({ accountUuid });
if (!checkPassword(current_password, account.password)) {
return badRequest(res, 'Current password is incorrect');
@@ -30,7 +30,7 @@ export default async (req, res) => {
const password = hashPassword(new_password);
- const updated = await updateAccount(userId, { password });
+ const updated = await updateAccount({ password }, { accountUuid });
return ok(res, updated);
}
diff --git a/pages/api/accounts/index.js b/pages/api/accounts/index.js
index aa52ca55e7..22248ed4c9 100644
--- a/pages/api/accounts/index.js
+++ b/pages/api/accounts/index.js
@@ -1,7 +1,7 @@
import { ok, unauthorized, methodNotAllowed, badRequest, hashPassword } from 'next-basics';
import { useAuth } from 'lib/middleware';
import { uuid } from 'lib/crypto';
-import { createAccount, getAccountByUsername, getAccounts } from 'queries';
+import { createAccount, getAccount, getAccounts } from 'queries';
export default async (req, res) => {
await useAuth(req, res);
@@ -21,9 +21,9 @@ export default async (req, res) => {
if (req.method === 'POST') {
const { username, password, account_uuid } = req.body;
- const accountByUsername = await getAccountByUsername(username);
+ const account = await getAccount({ username });
- if (accountByUsername) {
+ if (account) {
return badRequest(res, 'Account already exists');
}
diff --git a/pages/api/auth/login.js b/pages/api/auth/login.js
index d5379a2211..aa4803d885 100644
--- a/pages/api/auth/login.js
+++ b/pages/api/auth/login.js
@@ -1,5 +1,5 @@
import { ok, unauthorized, badRequest, checkPassword, createSecureToken } from 'next-basics';
-import { getAccountByUsername } from 'queries/admin/account/getAccountByUsername';
+import { getAccount } from 'queries';
import { secret } from 'lib/crypto';
export default async (req, res) => {
@@ -9,7 +9,7 @@ export default async (req, res) => {
return badRequest(res);
}
- const account = await getAccountByUsername(username);
+ const account = await getAccount({ username });
if (account && checkPassword(password, account.password)) {
const { id, username, isAdmin, accountUuid } = account;
diff --git a/pages/api/realtime/init.js b/pages/api/realtime/init.js
index a7e175a54b..9a9a429733 100644
--- a/pages/api/realtime/init.js
+++ b/pages/api/realtime/init.js
@@ -10,7 +10,7 @@ export default async (req, res) => {
if (req.method === 'GET') {
const { userId } = req.auth;
- const websites = await getUserWebsites(userId);
+ const websites = await getUserWebsites({ userId });
const ids = websites.map(({ websiteUuid }) => websiteUuid);
const token = createToken({ websites: ids }, secret());
const data = await getRealtimeData(ids, subMinutes(new Date(), 30));
diff --git a/pages/api/share/[id].js b/pages/api/share/[id].js
index a89829faf3..4ff6b81cf0 100644
--- a/pages/api/share/[id].js
+++ b/pages/api/share/[id].js
@@ -1,4 +1,4 @@
-import { getWebsiteByShareId } from 'queries';
+import { getWebsite } from 'queries';
import { ok, notFound, methodNotAllowed, createToken } from 'next-basics';
import { secret } from 'lib/crypto';
@@ -6,7 +6,7 @@ export default async (req, res) => {
const { id } = req.query;
if (req.method === 'GET') {
- const website = await getWebsiteByShareId(id);
+ const website = await getWebsite({ shareId: id });
if (website) {
const { websiteUuid } = website;
diff --git a/pages/api/websites/[id]/active.js b/pages/api/websites/[id]/active.js
index 10e73ea853..59af938ed0 100644
--- a/pages/api/websites/[id]/active.js
+++ b/pages/api/websites/[id]/active.js
@@ -2,13 +2,14 @@ import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
import { getActiveVisitors } from 'queries';
+import { TYPE_WEBSITE } from 'lib/constants';
export default async (req, res) => {
await useCors(req, res);
await useAuth(req, res);
if (req.method === 'GET') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/[id]/eventdata.js b/pages/api/websites/[id]/eventdata.js
index 86a17b77c3..0e6ad2e9db 100644
--- a/pages/api/websites/[id]/eventdata.js
+++ b/pages/api/websites/[id]/eventdata.js
@@ -3,13 +3,14 @@ import { getEventData } from 'queries';
import { ok, badRequest, methodNotAllowed, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
+import { TYPE_WEBSITE } from 'lib/constants';
export default async (req, res) => {
await useCors(req, res);
await useAuth(req, res);
if (req.method === 'POST') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/[id]/events.js b/pages/api/websites/[id]/events.js
index 192e284a5e..da88794e2b 100644
--- a/pages/api/websites/[id]/events.js
+++ b/pages/api/websites/[id]/events.js
@@ -3,6 +3,7 @@ import { getEventMetrics } from 'queries';
import { ok, badRequest, methodNotAllowed, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
+import { TYPE_WEBSITE } from 'lib/constants';
const unitTypes = ['year', 'month', 'hour', 'day'];
@@ -11,7 +12,7 @@ export default async (req, res) => {
await useAuth(req, res);
if (req.method === 'GET') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/[id]/index.js b/pages/api/websites/[id]/index.js
index d802982aaf..539a328893 100644
--- a/pages/api/websites/[id]/index.js
+++ b/pages/api/websites/[id]/index.js
@@ -2,19 +2,20 @@ import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
import { getRandomChars, methodNotAllowed, ok, serverError, unauthorized } from 'next-basics';
import { deleteWebsite, getAccount, getWebsite, updateWebsite } from 'queries';
+import { TYPE_WEBSITE } from 'lib/constants';
export default async (req, res) => {
await useCors(req, res);
await useAuth(req, res);
- const { id: websiteId } = req.query;
+ const { id: websiteUuid } = req.query;
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
if (req.method === 'GET') {
- const website = await getWebsite({ websiteUuid: websiteId });
+ const website = await getWebsite({ websiteUuid });
return ok(res, website);
}
@@ -32,7 +33,7 @@ export default async (req, res) => {
}
}
- const website = await getWebsite({ websiteUuid: websiteId });
+ const website = await getWebsite({ websiteUuid });
const newShareId = enableShareUrl ? website.shareId || getRandomChars(8) : null;
@@ -44,7 +45,7 @@ export default async (req, res) => {
shareId: shareId ? shareId : newShareId,
userId: account ? account.id : +owner || undefined,
},
- { websiteUuid: websiteId },
+ { websiteUuid },
);
} catch (e) {
if (e.message.includes('Unique constraint') && e.message.includes('share_id')) {
@@ -56,11 +57,11 @@ export default async (req, res) => {
}
if (req.method === 'DELETE') {
- if (!(await allowQuery(req, true))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
- await deleteWebsite(websiteId);
+ await deleteWebsite(websiteUuid);
return ok(res);
}
diff --git a/pages/api/websites/[id]/metrics.js b/pages/api/websites/[id]/metrics.js
index e0eab028d0..0aafe7d333 100644
--- a/pages/api/websites/[id]/metrics.js
+++ b/pages/api/websites/[id]/metrics.js
@@ -1,8 +1,8 @@
import { allowQuery } from 'lib/auth';
-import { FILTER_IGNORED } from 'lib/constants';
+import { FILTER_IGNORED, TYPE_WEBSITE } from 'lib/constants';
import { useAuth, useCors } from 'lib/middleware';
import { badRequest, methodNotAllowed, ok, unauthorized } from 'next-basics';
-import { getPageviewMetrics, getSessionMetrics, getWebsiteByUuid } from 'queries';
+import { getPageviewMetrics, getSessionMetrics, getWebsite } from 'queries';
const sessionColumns = ['browser', 'os', 'device', 'screen', 'country', 'language'];
const pageviewColumns = ['url', 'referrer', 'query'];
@@ -38,7 +38,7 @@ export default async (req, res) => {
await useAuth(req, res);
if (req.method === 'GET') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
@@ -94,7 +94,7 @@ export default async (req, res) => {
let domain;
if (type === 'referrer') {
- const website = await getWebsiteByUuid(websiteId);
+ const website = await getWebsite({ websiteUuid: websiteId });
if (!website) {
return badRequest(res);
diff --git a/pages/api/websites/[id]/pageviews.js b/pages/api/websites/[id]/pageviews.js
index 9e05417b8b..5b628e3a81 100644
--- a/pages/api/websites/[id]/pageviews.js
+++ b/pages/api/websites/[id]/pageviews.js
@@ -3,6 +3,7 @@ import { getPageviewStats } from 'queries';
import { ok, badRequest, methodNotAllowed, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
+import { TYPE_WEBSITE } from 'lib/constants';
const unitTypes = ['year', 'month', 'hour', 'day'];
@@ -11,7 +12,7 @@ export default async (req, res) => {
await useAuth(req, res);
if (req.method === 'GET') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/[id]/reset.js b/pages/api/websites/[id]/reset.js
index fe527ad41a..0dde02dfb1 100644
--- a/pages/api/websites/[id]/reset.js
+++ b/pages/api/websites/[id]/reset.js
@@ -2,6 +2,7 @@ import { resetWebsite } from 'queries';
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
+import { TYPE_WEBSITE } from 'lib/constants';
export default async (req, res) => {
await useCors(req, res);
@@ -10,7 +11,7 @@ export default async (req, res) => {
const { id: websiteId } = req.query;
if (req.method === 'POST') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/[id]/stats.js b/pages/api/websites/[id]/stats.js
index 596ebc90f6..2c5b015680 100644
--- a/pages/api/websites/[id]/stats.js
+++ b/pages/api/websites/[id]/stats.js
@@ -2,13 +2,14 @@ import { getWebsiteStats } from 'queries';
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
+import { TYPE_WEBSITE } from 'lib/constants';
export default async (req, res) => {
await useCors(req, res);
await useAuth(req, res);
if (req.method === 'GET') {
- if (!(await allowQuery(req))) {
+ if (!(await allowQuery(req, TYPE_WEBSITE))) {
return unauthorized(res);
}
diff --git a/pages/api/websites/index.js b/pages/api/websites/index.js
index 9fade8c23e..36d386606e 100644
--- a/pages/api/websites/index.js
+++ b/pages/api/websites/index.js
@@ -6,15 +6,16 @@ import { uuid } from 'lib/crypto';
export default async (req, res) => {
await useAuth(req, res);
- const { userId: currentUserId, isAdmin, accountUuid } = req.auth;
const { user_id, include_all } = req.query;
+ const { userId: currentUserId, isAdmin } = req.auth;
+ const accountUuid = user_id || req.auth.accountUuid;
let account;
if (accountUuid) {
- account = await getAccount({ accountUuid: accountUuid });
+ account = await getAccount({ accountUuid });
}
- const userId = account ? account.id : +user_id;
+ const userId = account ? account.id : user_id;
if (req.method === 'GET') {
if (userId && userId !== currentUserId && !isAdmin) {
@@ -24,7 +25,7 @@ export default async (req, res) => {
const websites =
isAdmin && include_all
? await getAllWebsites()
- : await getUserWebsites(userId || currentUserId);
+ : await getUserWebsites({ userId: account.id });
return ok(res, websites);
}
diff --git a/pages/dashboard/[[...id]].js b/pages/dashboard/[[...id]].js
index 452a425e84..7c76209726 100644
--- a/pages/dashboard/[[...id]].js
+++ b/pages/dashboard/[[...id]].js
@@ -2,17 +2,27 @@ import React from 'react';
import Layout from 'components/layout/Layout';
import Dashboard from 'components/pages/Dashboard';
import useRequireLogin from 'hooks/useRequireLogin';
+import { useRouter } from 'next/router';
+import useUser from 'hooks/useUser';
export default function DashboardPage() {
+ const {
+ query: { id },
+ isReady,
+ asPath,
+ } = useRouter();
const { loading } = useRequireLogin();
+ const user = useUser();
- if (loading) {
+ if (!user || !isReady || loading) {
return null;
}
+ const userId = id?.[0];
+
return (
-
+
);
}
diff --git a/queries/admin/account/getAccountById.js b/queries/admin/account/getAccountById.js
deleted file mode 100644
index eee1b76a43..0000000000
--- a/queries/admin/account/getAccountById.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import prisma from 'lib/prisma';
-
-export async function getAccountById(userId) {
- return prisma.client.account.findUnique({
- where: {
- id: userId,
- },
- });
-}
diff --git a/queries/admin/account/getAccountByUsername.js b/queries/admin/account/getAccountByUsername.js
deleted file mode 100644
index ff64c8cef4..0000000000
--- a/queries/admin/account/getAccountByUsername.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import prisma from 'lib/prisma';
-
-export async function getAccountByUsername(username) {
- return prisma.client.account.findUnique({
- where: {
- username,
- },
- });
-}
diff --git a/queries/admin/account/getAccounts.js b/queries/admin/account/getAccounts.js
index 71d5e4c551..ceca25820d 100644
--- a/queries/admin/account/getAccounts.js
+++ b/queries/admin/account/getAccounts.js
@@ -14,6 +14,7 @@ export async function getAccounts() {
isAdmin: true,
createdAt: true,
updatedAt: true,
+ accountUuid: true,
},
});
}
diff --git a/queries/admin/website/deleteWebsite.js b/queries/admin/website/deleteWebsite.js
index b5e2ff7600..f08dc63e92 100644
--- a/queries/admin/website/deleteWebsite.js
+++ b/queries/admin/website/deleteWebsite.js
@@ -1,27 +1,24 @@
import prisma from 'lib/prisma';
import redis, { DELETED } from 'lib/redis';
-import { getWebsiteByUuid } from 'queries';
-export async function deleteWebsite(websiteId) {
+export async function deleteWebsite(websiteUuid) {
const { client, transaction } = prisma;
- const { websiteUuid } = await getWebsiteByUuid(websiteId);
-
return transaction([
client.pageview.deleteMany({
- where: { session: { website: { websiteUuid: websiteId } } },
+ where: { session: { website: { websiteUuid } } },
}),
client.eventData.deleteMany({
- where: { event: { session: { website: { websiteUuid: websiteId } } } },
+ where: { event: { session: { website: { websiteUuid } } } },
}),
client.event.deleteMany({
- where: { session: { website: { websiteUuid: websiteId } } },
+ where: { session: { website: { websiteUuid } } },
}),
client.session.deleteMany({
- where: { website: { websiteUuid: websiteId } },
+ where: { website: { websiteUuid } },
}),
client.website.delete({
- where: { websiteUuid: websiteId },
+ where: { websiteUuid },
}),
]).then(async res => {
if (redis.client) {
diff --git a/queries/admin/website/getUserWebsites.js b/queries/admin/website/getUserWebsites.js
index c1a9d55976..9a725ec2a7 100644
--- a/queries/admin/website/getUserWebsites.js
+++ b/queries/admin/website/getUserWebsites.js
@@ -1,10 +1,8 @@
import prisma from 'lib/prisma';
-export async function getUserWebsites(userId) {
+export async function getUserWebsites(where) {
return prisma.client.website.findMany({
- where: {
- userId,
- },
+ where,
orderBy: {
name: 'asc',
},
diff --git a/queries/admin/website/getWebsite.js b/queries/admin/website/getWebsite.js
index 83c3e83a98..d33c9eadd4 100644
--- a/queries/admin/website/getWebsite.js
+++ b/queries/admin/website/getWebsite.js
@@ -1,7 +1,16 @@
import prisma from 'lib/prisma';
+import redis from 'lib/redis';
export async function getWebsite(where) {
- return prisma.client.website.findUnique({
- where,
- });
+ return prisma.client.website
+ .findUnique({
+ where,
+ })
+ .then(async data => {
+ if (redis.enabled && data) {
+ await redis.client.set(`website:${data.websiteUuid}`, data.id);
+ }
+
+ return data;
+ });
}
diff --git a/queries/admin/website/getWebsiteById.js b/queries/admin/website/getWebsiteById.js
deleted file mode 100644
index f486bd8f3f..0000000000
--- a/queries/admin/website/getWebsiteById.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import prisma from 'lib/prisma';
-
-export async function getWebsiteById(websiteId) {
- return prisma.client.website.findUnique({
- where: {
- id: websiteId,
- },
- });
-}
diff --git a/queries/admin/website/getWebsiteByShareId.js b/queries/admin/website/getWebsiteByShareId.js
deleted file mode 100644
index bfc99ce783..0000000000
--- a/queries/admin/website/getWebsiteByShareId.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import prisma from 'lib/prisma';
-
-export async function getWebsiteByShareId(shareId) {
- return prisma.client.website.findUnique({
- where: {
- shareId,
- },
- });
-}
diff --git a/queries/admin/website/getWebsiteByUuid.js b/queries/admin/website/getWebsiteByUuid.js
deleted file mode 100644
index 158d357af0..0000000000
--- a/queries/admin/website/getWebsiteByUuid.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import prisma from 'lib/prisma';
-import redis from 'lib/redis';
-
-export async function getWebsiteByUuid(websiteUuid) {
- return prisma.client.website
- .findUnique({
- where: {
- websiteUuid,
- },
- })
- .then(async res => {
- if (redis.client && res) {
- await redis.client.set(`website:${res.websiteUuid}`, res.id);
- }
-
- return res;
- });
-}
diff --git a/queries/analytics/stats/getRealtimeData.js b/queries/analytics/stats/getRealtimeData.js
index 9e7eb6732b..659f61455d 100644
--- a/queries/analytics/stats/getRealtimeData.js
+++ b/queries/analytics/stats/getRealtimeData.js
@@ -10,19 +10,19 @@ export async function getRealtimeData(websites, time) {
]);
return {
- pageviews: pageviews.map(({ pageviewId, ...props }) => ({
- __id: `p${pageviewId}`,
- pageviewId,
+ pageviews: pageviews.map(({ id, ...props }) => ({
+ __id: `p${id}`,
+ pageviewId: id,
...props,
})),
- sessions: sessions.map(({ sessionId, ...props }) => ({
- __id: `s${sessionId}`,
- sessionId,
+ sessions: sessions.map(({ id, ...props }) => ({
+ __id: `s${id}`,
+ sessionId: id,
...props,
})),
- events: events.map(({ eventId, ...props }) => ({
- __id: `e${eventId}`,
- eventId,
+ events: events.map(({ id, ...props }) => ({
+ __id: `e${id}`,
+ eventId: id,
...props,
})),
timestamp: Date.now(),
diff --git a/queries/index.js b/queries/index.js
index abff147abc..a570af65d2 100644
--- a/queries/index.js
+++ b/queries/index.js
@@ -1,8 +1,6 @@
export * from './admin/account/createAccount';
export * from './admin/account/deleteAccount';
export * from './admin/account/getAccount';
-export * from './admin/account/getAccountById';
-export * from './admin/account/getAccountByUsername';
export * from './admin/account/getAccounts';
export * from './admin/account/updateAccount';
export * from './admin/website/createWebsite';
@@ -10,9 +8,6 @@ export * from './admin/website/deleteWebsite';
export * from './admin/website/getAllWebsites';
export * from './admin/website/getUserWebsites';
export * from './admin/website/getWebsite';
-export * from './admin/website/getWebsiteById';
-export * from './admin/website/getWebsiteByShareId';
-export * from './admin/website/getWebsiteByUuid';
export * from './admin/website/resetWebsite';
export * from './admin/website/updateWebsite';
export * from './analytics/event/getEventMetrics';