__id);
return state
.concat(data.filter(({ __id }) => !ids.includes(__id)))
- .filter(({ created_at }) => new Date(created_at).getTime() >= time);
+ .filter(({ createdAt }) => new Date(createdAt).getTime() >= time);
}
function filterWebsite(data, id) {
- return data.filter(({ website_id }) => website_id === id);
+ return data.filter(({ websiteId }) => websiteId === id);
}
export default function RealtimeDashboard() {
diff --git a/components/pages/Settings.js b/components/pages/Settings.js
index 217ad590..87b4ec9c 100644
--- a/components/pages/Settings.js
+++ b/components/pages/Settings.js
@@ -30,7 +30,7 @@ export default function Settings() {
{
label:
,
value: ACCOUNTS,
- hidden: !user?.is_admin,
+ hidden: !user?.isAdmin,
},
{
label:
,
diff --git a/components/pages/TestConsole.js b/components/pages/TestConsole.js
index efeb0264..215c350c 100644
--- a/components/pages/TestConsole.js
+++ b/components/pages/TestConsole.js
@@ -24,9 +24,9 @@ export default function TestConsole() {
return null;
}
- const options = data.map(({ name, website_id }) => ({ label: name, value: website_id }));
- const website = data.find(({ website_id }) => website_id === +websiteId);
- const selectedValue = options.find(({ value }) => value === website?.website_id)?.value;
+ const options = data.map(({ name, websiteId }) => ({ label: name, value: websiteId }));
+ const website = data.find(({ websiteId }) => websiteId === +websiteId);
+ const selectedValue = options.find(({ value }) => value === website?.websiteId)?.value;
function handleSelect(value) {
router.push(`/console/${value}`);
@@ -46,7 +46,7 @@ export default function TestConsole() {
@@ -104,13 +104,13 @@ export default function TestConsole() {
>
diff --git a/components/pages/WebsiteList.js b/components/pages/WebsiteList.js
index 5e1f71bb..dfd041a1 100644
--- a/components/pages/WebsiteList.js
+++ b/components/pages/WebsiteList.js
@@ -27,7 +27,7 @@ export default function WebsiteList({ websites, showCharts, limit }) {
const ordered = useMemo(
() =>
websites
- .map(website => ({ ...website, order: websiteOrder.indexOf(website.website_id) || 0 }))
+ .map(website => ({ ...website, order: websiteOrder.indexOf(website.id) || 0 }))
.sort(firstBy('order')),
[websites, websiteOrder],
);
@@ -46,11 +46,11 @@ export default function WebsiteList({ websites, showCharts, limit }) {
return (
- {ordered.map(({ website_id, name, domain }, index) =>
+ {ordered.map(({ id, name, domain }, index) =>
index < limit ? (
-
+
(is_admin ? } size="medium" /> : null);
+ const Checkmark = ({ isAdmin }) => (isAdmin ? } size="medium" /> : null);
const DashboardLink = row => (
-
+
} />
@@ -42,7 +42,7 @@ export default function AccountSettings() {
} size="small" onClick={() => setEditAccount(row)}>
- {!row.is_admin && (
+ {!row.isAdmin && (
} size="small" onClick={() => setDeleteAccount(row)}>
@@ -57,7 +57,7 @@ export default function AccountSettings() {
className: 'col-12 col-lg-4',
},
{
- key: 'is_admin',
+ key: 'isAdmin',
label: ,
className: 'col-12 col-lg-3',
render: Checkmark,
@@ -121,7 +121,7 @@ export default function AccountSettings() {
title={}
>
diff --git a/components/settings/ProfileSettings.js b/components/settings/ProfileSettings.js
index 14c766a5..64ebf8ea 100644
--- a/components/settings/ProfileSettings.js
+++ b/components/settings/ProfileSettings.js
@@ -32,7 +32,7 @@ export default function ProfileSettings() {
return null;
}
- const { user_id, username } = user;
+ const { userId, username } = user;
return (
<>
@@ -79,7 +79,7 @@ export default function ProfileSettings() {
title={}
>
setChangePassword(false)}
/>
diff --git a/components/settings/WebsiteSettings.js b/components/settings/WebsiteSettings.js
index 49bd005f..7e9371f5 100644
--- a/components/settings/WebsiteSettings.js
+++ b/components/settings/WebsiteSettings.js
@@ -37,16 +37,16 @@ export default function WebsiteSettings() {
const [saved, setSaved] = useState(0);
const [message, setMessage] = useState();
- const { data } = useFetch('/websites', { params: { include_all: !!user?.is_admin } }, [saved]);
+ const { data } = useFetch('/websites', { params: { include_all: !!user?.isAdmin } }, [saved]);
const Buttons = row => (
- {row.share_id && (
+ {row.shareId && (
}
size="small"
tooltip={}
- tooltipId={`button-share-${row.website_id}`}
+ tooltipId={`button-share-${row.id}`}
onClick={() => setShowUrl(row)}
/>
)}
@@ -56,46 +56,42 @@ export default function WebsiteSettings() {
tooltip={
}
- tooltipId={`button-code-${row.website_id}`}
+ tooltipId={`button-code-${row.id}`}
onClick={() => setShowCode(row)}
/>
}
size="small"
tooltip={}
- tooltipId={`button-edit-${row.website_id}`}
+ tooltipId={`button-edit-${row.id}`}
onClick={() => setEditWebsite(row)}
/>
}
size="small"
tooltip={}
- tooltipId={`button-reset-${row.website_id}`}
+ tooltipId={`button-reset-${row.id}`}
onClick={() => setResetWebsite(row)}
/>
}
size="small"
tooltip={}
- tooltipId={`button-delete-${row.website_id}`}
+ tooltipId={`button-delete-${row.id}`}
onClick={() => setDeleteWebsite(row)}
/>
);
- const DetailsLink = ({ website_id, name, domain }) => (
-
+ const DetailsLink = ({ id, name, domain }) => (
+
- {name}
+ {name}
);
- const Domain = ({ domain, website_id }) => (
- {domain}
+ const Domain = ({ domain, id }) => (
+ {domain}
);
const adminColumns = [
@@ -187,7 +183,7 @@ export default function WebsiteSettings() {
-
+
{editWebsite && (
}>
@@ -203,7 +199,7 @@ export default function WebsiteSettings() {
title={}
>
@@ -214,7 +210,7 @@ export default function WebsiteSettings() {
title={}
>
diff --git a/db/mysql/schema.prisma b/db/mysql/schema.prisma
index bfc2c20b..6c740bfb 100644
--- a/db/mysql/schema.prisma
+++ b/db/mysql/schema.prisma
@@ -8,88 +8,90 @@ datasource db {
}
model account {
- user_id Int @id @default(autoincrement()) @db.UnsignedInt
- username String @unique() @db.VarChar(255)
- password String @db.VarChar(60)
- is_admin Boolean @default(false)
- created_at DateTime? @default(now()) @db.Timestamp(0)
- updated_at DateTime? @default(now()) @db.Timestamp(0)
- account_uuid String @unique() @db.VarChar(36)
- website website[]
+ id Int @id @default(autoincrement()) @map("user_id") @db.UnsignedInt
+ username String @unique() @db.VarChar(255)
+ password String @db.VarChar(60)
+ isAdmin Boolean @default(false) @map("is_admin")
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
+ updatedAt DateTime? @default(now()) @map("updated_at") @db.Timestamp(0)
+ accountUuid String @unique() @map("account_uuid") @db.VarChar(36)
+ website website[]
}
model event {
- event_id Int @id @default(autoincrement()) @db.UnsignedInt
- website_id Int @db.UnsignedInt
- session_id Int @db.UnsignedInt
- created_at DateTime? @default(now()) @db.Timestamp(0)
- url String @db.VarChar(500)
- event_name String @db.VarChar(50)
- session session @relation(fields: [session_id], references: [session_id])
- website website @relation(fields: [website_id], references: [website_id])
- event_data event_data?
+ id Int @id @default(autoincrement()) @map("event_id") @db.UnsignedInt
+ websiteId Int @map("website_id") @db.UnsignedInt
+ sessionId Int @map("session_id") @db.UnsignedInt
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
+ url String @db.VarChar(500)
+ eventName String @map("event_name") @db.VarChar(50)
+ session session @relation(fields: [sessionId], references: [id])
+ website website @relation(fields: [websiteId], references: [id])
+ eventData eventData?
- @@index([created_at])
- @@index([session_id])
- @@index([website_id])
+ @@index([createdAt])
+ @@index([sessionId])
+ @@index([websiteId])
}
-model event_data {
- event_data_id Int @id @default(autoincrement()) @db.UnsignedInt
- event_id Int @unique @db.UnsignedInt
- event_data Json
- event event @relation(fields: [event_id], references: [event_id])
+model eventData {
+ id Int @id @default(autoincrement()) @map("event_data_id") @db.UnsignedInt
+ eventId Int @unique @map("event_id") @db.UnsignedInt
+ eventData Json @map("event_data")
+ event event @relation(fields: [eventId], references: [id])
+
+ @@map("event_data")
}
model pageview {
- view_id Int @id @default(autoincrement()) @db.UnsignedInt
- website_id Int @db.UnsignedInt
- session_id Int @db.UnsignedInt
- created_at DateTime? @default(now()) @db.Timestamp(0)
- url String @db.VarChar(500)
- referrer String? @db.VarChar(500)
- session session @relation(fields: [session_id], references: [session_id])
- website website @relation(fields: [website_id], references: [website_id])
+ id Int @id @default(autoincrement()) @map("view_id") @db.UnsignedInt
+ websiteId Int @map("website_id") @db.UnsignedInt
+ sessionId Int @map("session_id") @db.UnsignedInt
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
+ url String @db.VarChar(500)
+ referrer String? @db.VarChar(500)
+ session session @relation(fields: [sessionId], references: [id])
+ website website @relation(fields: [websiteId], references: [id])
- @@index([created_at])
- @@index([session_id])
- @@index([website_id, created_at])
- @@index([website_id])
- @@index([website_id, session_id, created_at])
+ @@index([createdAt])
+ @@index([sessionId])
+ @@index([websiteId, createdAt])
+ @@index([websiteId])
+ @@index([websiteId, sessionId, createdAt])
}
model session {
- session_id Int @id @default(autoincrement()) @db.UnsignedInt
- session_uuid String @unique() @db.VarChar(36)
- website_id Int @db.UnsignedInt
- created_at DateTime? @default(now()) @db.Timestamp(0)
- hostname String? @db.VarChar(100)
- browser String? @db.VarChar(20)
- os String? @db.VarChar(20)
- device String? @db.VarChar(20)
- screen String? @db.VarChar(11)
- language String? @db.VarChar(35)
- country String? @db.Char(2)
- website website @relation(fields: [website_id], references: [website_id])
- event event[]
- pageview pageview[]
+ id Int @id @default(autoincrement()) @map("session_id") @db.UnsignedInt
+ sessionUuid String @unique() @map("session_uuid") @db.VarChar(36)
+ websiteId Int @map("website_id") @db.UnsignedInt
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
+ hostname String? @db.VarChar(100)
+ browser String? @db.VarChar(20)
+ os String? @db.VarChar(20)
+ device String? @db.VarChar(20)
+ screen String? @db.VarChar(11)
+ language String? @db.VarChar(35)
+ country String? @db.Char(2)
+ website website @relation(fields: [websiteId], references: [id])
+ event event[]
+ pageview pageview[]
- @@index([created_at])
- @@index([website_id])
+ @@index([createdAt])
+ @@index([websiteId])
}
model website {
- website_id Int @id @default(autoincrement()) @db.UnsignedInt
- website_uuid String @unique() @db.VarChar(36)
- user_id Int @db.UnsignedInt
- name String @db.VarChar(100)
- domain String? @db.VarChar(500)
- share_id String? @unique() @db.VarChar(64)
- created_at DateTime? @default(now()) @db.Timestamp(0)
- account account @relation(fields: [user_id], references: [user_id])
- event event[]
- pageview pageview[]
- session session[]
+ id Int @id @default(autoincrement()) @map("website_id") @db.UnsignedInt
+ websiteUuid String @unique() @map("website_uuid") @db.VarChar(36)
+ userId Int @map("user_id") @db.UnsignedInt
+ name String @db.VarChar(100)
+ domain String? @db.VarChar(500)
+ shareId String? @unique() @map("share_id") @db.VarChar(64)
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamp(0)
+ account account @relation(fields: [userId], references: [id])
+ event event[]
+ pageview pageview[]
+ session session[]
- @@index([user_id])
+ @@index([userId])
}
diff --git a/db/postgresql/schema.prisma b/db/postgresql/schema.prisma
index d1d346de..920a6f78 100644
--- a/db/postgresql/schema.prisma
+++ b/db/postgresql/schema.prisma
@@ -8,88 +8,90 @@ datasource db {
}
model account {
- user_id Int @id @default(autoincrement())
- username String @unique @db.VarChar(255)
- password String @db.VarChar(60)
- is_admin Boolean @default(false)
- created_at DateTime? @default(now()) @db.Timestamptz(6)
- updated_at DateTime? @default(now()) @db.Timestamptz(6)
- account_uuid String @unique @db.Uuid
- website website[]
+ id Int @id @default(autoincrement()) @map("user_id")
+ username String @unique @db.VarChar(255)
+ password String @db.VarChar(60)
+ isAdmin Boolean @default(false) @map("is_admin")
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
+ updatedAt DateTime? @default(now()) @map("updated_at") @db.Timestamptz(6)
+ accountUuid String @unique @map("account_uuid") @db.Uuid
+ website website[]
}
model event {
- event_id Int @id @default(autoincrement())
- website_id Int
- session_id Int
- created_at DateTime? @default(now()) @db.Timestamptz(6)
- url String @db.VarChar(500)
- event_name String @db.VarChar(50)
- session session @relation(fields: [session_id], references: [session_id])
- website website @relation(fields: [website_id], references: [website_id])
- event_data event_data?
+ id Int @id() @default(autoincrement()) @map("event_id")
+ websiteId Int @map("website_id")
+ sessionId Int @map("session_id")
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
+ url String @db.VarChar(500)
+ eventName String @map("event_name") @db.VarChar(50)
+ session session @relation(fields: [sessionId], references: [id])
+ website website @relation(fields: [websiteId], references: [id])
+ eventData eventData?
- @@index([created_at])
- @@index([session_id])
- @@index([website_id])
+ @@index([createdAt])
+ @@index([sessionId])
+ @@index([websiteId])
}
-model event_data {
- event_data_id Int @id @default(autoincrement())
- event_id Int @unique
- event_data Json
- event event @relation(fields: [event_id], references: [event_id])
+model eventData {
+ id Int @id @default(autoincrement()) @map("event_data_id")
+ eventId Int @unique @map("event_id")
+ eventData Json @map("event_data")
+ event event @relation(fields: [eventId], references: [id])
+
+ @@map("event_data")
}
model pageview {
- view_id Int @id @default(autoincrement())
- website_id Int
- session_id Int
- created_at DateTime? @default(now()) @db.Timestamptz(6)
- url String @db.VarChar(500)
- referrer String? @db.VarChar(500)
- session session @relation(fields: [session_id], references: [session_id])
- website website @relation(fields: [website_id], references: [website_id])
+ id Int @id @default(autoincrement()) @map("view_id")
+ websiteId Int @map("website_id")
+ sessionId Int @map("session_id")
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
+ url String @db.VarChar(500)
+ referrer String? @db.VarChar(500)
+ session session @relation(fields: [sessionId], references: [id])
+ website website @relation(fields: [websiteId], references: [id])
- @@index([created_at])
- @@index([session_id])
- @@index([website_id, created_at])
- @@index([website_id])
- @@index([website_id, session_id, created_at])
+ @@index([createdAt])
+ @@index([sessionId])
+ @@index([websiteId, createdAt])
+ @@index([websiteId])
+ @@index([websiteId, sessionId, createdAt])
}
model session {
- session_id Int @id @default(autoincrement())
- session_uuid String @unique @db.Uuid
- website_id Int
- created_at DateTime? @default(now()) @db.Timestamptz(6)
- hostname String? @db.VarChar(100)
- browser String? @db.VarChar(20)
- os String? @db.VarChar(20)
- device String? @db.VarChar(20)
- screen String? @db.VarChar(11)
- language String? @db.VarChar(35)
- country String? @db.Char(2)
- website website @relation(fields: [website_id], references: [website_id])
- event event[]
- pageview pageview[]
+ id Int @id @default(autoincrement()) @map("session_id")
+ sessionUuid String @unique @map("session_uuid") @db.Uuid
+ websiteId Int @map("website_id")
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
+ hostname String? @db.VarChar(100)
+ browser String? @db.VarChar(20)
+ os String? @db.VarChar(20)
+ device String? @db.VarChar(20)
+ screen String? @db.VarChar(11)
+ language String? @db.VarChar(35)
+ country String? @db.Char(2)
+ website website? @relation(fields: [websiteId], references: [id])
+ events event[]
+ pageview pageview[]
- @@index([created_at])
- @@index([website_id])
+ @@index([createdAt])
+ @@index([websiteId])
}
model website {
- website_id Int @id @default(autoincrement())
- website_uuid String @unique @db.Uuid
- user_id Int
- name String @db.VarChar(100)
- domain String? @db.VarChar(500)
- share_id String? @unique @db.VarChar(64)
- created_at DateTime? @default(now()) @db.Timestamptz(6)
- account account @relation(fields: [user_id], references: [user_id])
- event event[]
- pageview pageview[]
- session session[]
+ id Int @id @default(autoincrement()) @map("website_id")
+ websiteUuid String @unique @map("website_uuid") @db.Uuid
+ userId Int @map("user_id")
+ name String @db.VarChar(100)
+ domain String? @db.VarChar(500)
+ shareId String? @unique @map("share_id") @db.VarChar(64)
+ createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
+ account account @relation(fields: [userId], references: [id])
+ event event[]
+ pageview pageview[]
+ session session[]
- @@index([user_id])
+ @@index([userId])
}
diff --git a/lib/auth.js b/lib/auth.js
index b98fb923..fa1cfec2 100644
--- a/lib/auth.js
+++ b/lib/auth.js
@@ -40,19 +40,19 @@ export async function allowQuery(req, skipToken) {
const { id } = req.query;
const token = req.headers[SHARE_TOKEN_HEADER];
- const website = await getWebsite(validate(id) ? { website_uuid: id } : { website_id: +id });
+ const website = await getWebsite(validate(id) ? { websiteUuid: id } : { id: +id });
if (website) {
if (token && token !== 'undefined' && !skipToken) {
- return isValidToken(token, { website_id: website.website_id });
+ return isValidToken(token, { websiteId: website.id });
}
const authToken = await getAuthToken(req);
if (authToken) {
- const { user_id, is_admin } = authToken;
+ const { userId, isAdmin } = authToken;
- return is_admin || website.user_id === user_id;
+ return isAdmin || website.userId === userId;
}
}
diff --git a/lib/redis.js b/lib/redis.js
index 01a9e3c6..85752c54 100644
--- a/lib/redis.js
+++ b/lib/redis.js
@@ -37,10 +37,10 @@ async function stageData() {
const websites = await getAllWebsites();
const sessionUuids = sessions.map(a => {
- return { key: `session:${a.session_uuid}`, value: 1 };
+ return { key: `session:${a.sessionUuid}`, value: 1 };
});
const websiteIds = websites.map(a => {
- return { key: `website:${a.website_uuid}`, value: Number(a.website_id) };
+ return { key: `website:${a.websiteUuid}`, value: Number(a.websiteId) };
});
await addSet(sessionUuids);
diff --git a/lib/session.js b/lib/session.js
index 61954168..488d9c52 100644
--- a/lib/session.js
+++ b/lib/session.js
@@ -23,9 +23,9 @@ export async function getSession(req) {
}
}
- const { website: website_uuid, hostname, screen, language } = payload;
+ const { website: websiteUuid, hostname, screen, language } = payload;
- if (!validate(website_uuid)) {
+ if (!validate(websiteUuid)) {
return null;
}
@@ -33,21 +33,21 @@ export async function getSession(req) {
// Check if website exists
if (redis.enabled) {
- websiteId = Number(await redis.get(`website:${website_uuid}`));
+ websiteId = Number(await redis.get(`website:${websiteUuid}`));
}
// Check database if does not exists in Redis
if (!websiteId) {
- const website = await getWebsiteByUuid(website_uuid);
- websiteId = website ? website.website_id : null;
+ const website = await getWebsiteByUuid(websiteUuid);
+ websiteId = website ? website.websiteId : null;
}
if (!websiteId || websiteId === DELETED) {
- throw new Error(`Website not found: ${website_uuid}`);
+ throw new Error(`Website not found: ${websiteUuid}`);
}
const { userAgent, browser, os, ip, country, device } = await getClientInfo(req, payload);
- const session_uuid = uuid(websiteId, hostname, ip, userAgent);
+ const sessionUuid = uuid(websiteId, hostname, ip, userAgent);
let sessionId = null;
let session = null;
@@ -55,19 +55,19 @@ export async function getSession(req) {
if (!clickhouse.enabled) {
// Check if session exists
if (redis.enabled) {
- sessionId = Number(await redis.get(`session:${session_uuid}`));
+ sessionId = Number(await redis.get(`session:${sessionUuid}`));
}
// Check database if does not exists in Redis
if (!sessionId) {
- session = await getSessionByUuid(session_uuid);
- sessionId = session ? session.session_id : null;
+ session = await getSessionByUuid(sessionUuid);
+ sessionId = session ? session.sessionId : null;
}
if (!sessionId) {
try {
- session = await createSession(websiteId, website_uuid, {
- session_uuid,
+ session = await createSession(websiteId, {
+ sessionUuid,
hostname,
browser,
os,
@@ -84,8 +84,8 @@ export async function getSession(req) {
}
} else {
session = {
- session_id: sessionId,
- session_uuid,
+ sessionId,
+ sessionUuid,
hostname,
browser,
os,
@@ -97,8 +97,7 @@ export async function getSession(req) {
}
return {
- website_id: websiteId,
- website_uuid: website_uuid,
+ websiteId: websiteId,
session,
};
}
diff --git a/pages/api/accounts/[id]/index.js b/pages/api/accounts/[id]/index.js
index e5020f1f..716ffef7 100644
--- a/pages/api/accounts/[id]/index.js
+++ b/pages/api/accounts/[id]/index.js
@@ -37,7 +37,7 @@ export default async (req, res) => {
// Only admin can change these fields
if (currentUserIsAdmin) {
data.username = username;
- data.is_admin = is_admin;
+ data.isAdmin = is_admin;
}
// Check when username changes
diff --git a/pages/api/accounts/[id]/password.js b/pages/api/accounts/[id]/password.js
index 96858205..3a46c56a 100644
--- a/pages/api/accounts/[id]/password.js
+++ b/pages/api/accounts/[id]/password.js
@@ -12,7 +12,7 @@ import {
export default async (req, res) => {
await useAuth(req, res);
- const { user_id: currentUserId, is_admin: currentUserIsAdmin } = req.auth;
+ const { userId: currentUserId, isAdmin: currentUserIsAdmin } = req.auth;
const { current_password, new_password } = req.body;
const { id } = req.query;
const userId = +id;
diff --git a/pages/api/accounts/index.js b/pages/api/accounts/index.js
index 4c2b8b20..aa52ca55 100644
--- a/pages/api/accounts/index.js
+++ b/pages/api/accounts/index.js
@@ -6,9 +6,9 @@ import { createAccount, getAccountByUsername, getAccounts } from 'queries';
export default async (req, res) => {
await useAuth(req, res);
- const { is_admin } = req.auth;
+ const { isAdmin } = req.auth;
- if (!is_admin) {
+ if (!isAdmin) {
return unauthorized(res);
}
@@ -30,7 +30,7 @@ export default async (req, res) => {
const created = await createAccount({
username,
password: hashPassword(password),
- account_uuid: account_uuid || uuid(),
+ accountUuid: account_uuid || uuid(),
});
return ok(res, created);
diff --git a/pages/api/auth/login.js b/pages/api/auth/login.js
index f1d99100..d5379a22 100644
--- a/pages/api/auth/login.js
+++ b/pages/api/auth/login.js
@@ -12,8 +12,8 @@ export default async (req, res) => {
const account = await getAccountByUsername(username);
if (account && checkPassword(password, account.password)) {
- const { user_id, username, is_admin } = account;
- const user = { user_id, username, is_admin };
+ const { id, username, isAdmin, accountUuid } = account;
+ const user = { userId: id, username, isAdmin, accountUuid };
const token = createSecureToken(user, secret());
return ok(res, { token, user });
diff --git a/pages/api/collect.js b/pages/api/collect.js
index 5899035b..70dbb566 100644
--- a/pages/api/collect.js
+++ b/pages/api/collect.js
@@ -59,40 +59,35 @@ export default async (req, res) => {
await useSession(req, res);
const {
- session: { website_id, website_uuid, session },
+ session: { websiteId, session },
} = req;
const { type, payload } = getJsonBody(req);
- let { url, referrer, event_name, event_data } = payload;
+ let { url, referrer, eventName, eventData } = payload;
if (process.env.REMOVE_TRAILING_SLASH) {
url = url.replace(/\/$/, '');
}
- const event_uuid = uuid();
+ const eventUuid = uuid();
if (type === 'pageview') {
- await savePageView(website_id, website_uuid, { session, url, referrer });
+ await savePageView(websiteId, { session, url, referrer });
} else if (type === 'event') {
- await saveEvent(website_id, website_uuid, {
+ await saveEvent(websiteId, {
session,
- event_uuid,
+ eventUuid,
url,
- event_name,
- event_data,
+ eventName,
+ eventData,
});
} else {
return badRequest(res);
}
const token = createToken(
- {
- website_id,
- website_uuid,
- session_id: session.session_id,
- session_uuid: session.session_uuid,
- },
+ { websiteId, sessionId: session.sessionId, sessionUuid: session.sessionUuid },
secret(),
);
diff --git a/pages/api/realtime/init.js b/pages/api/realtime/init.js
index ee8f4ee2..1c3265c0 100644
--- a/pages/api/realtime/init.js
+++ b/pages/api/realtime/init.js
@@ -8,10 +8,10 @@ export default async (req, res) => {
await useAuth(req, res);
if (req.method === 'GET') {
- const { user_id } = req.auth;
+ const { userId } = req.auth;
- const websites = await getUserWebsites(user_id);
- const ids = websites.map(({ website_id }) => website_id);
+ const websites = await getUserWebsites(userId);
+ const ids = websites.map(({ id }) => id);
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 e6dcb4a3..c0521235 100644
--- a/pages/api/share/[id].js
+++ b/pages/api/share/[id].js
@@ -9,8 +9,8 @@ export default async (req, res) => {
const website = await getWebsiteByShareId(id);
if (website) {
- const websiteId = website.website_id;
- const token = createToken({ website_id: websiteId }, secret());
+ const websiteId = website.websiteId;
+ const token = createToken({ websiteId: websiteId }, secret());
return ok(res, { websiteId, token });
}
diff --git a/pages/api/websites/[id]/events.js b/pages/api/websites/[id]/events.js
index 93d01ff9..d2d5bbe6 100644
--- a/pages/api/websites/[id]/events.js
+++ b/pages/api/websites/[id]/events.js
@@ -27,7 +27,7 @@ export default async (req, res) => {
const events = await getEventMetrics(websiteId, website_uuid, startDate, endDate, tz, unit, {
url,
- event_name,
+ eventName: event_name,
});
return ok(res, events);
diff --git a/pages/api/websites/[id]/index.js b/pages/api/websites/[id]/index.js
index 8234a5f2..c6b8779f 100644
--- a/pages/api/websites/[id]/index.js
+++ b/pages/api/websites/[id]/index.js
@@ -1,4 +1,4 @@
-import { methodNotAllowed, ok, unauthorized } from 'next-basics';
+import { methodNotAllowed, ok, unauthorized, getRandomChars } from 'next-basics';
import { deleteWebsite, getAccount, getWebsite, updateWebsite } from 'queries';
import { allowQuery } from 'lib/auth';
import { useAuth, useCors } from 'lib/middleware';
@@ -8,7 +8,7 @@ export default async (req, res) => {
const { id } = req.query;
const websiteId = +id;
- const where = validate(id) ? { website_uuid: id } : { website_id: +id };
+ const where = validate(id) ? { websiteUuid: id } : { id: +id };
if (req.method === 'GET') {
await useCors(req, res);
@@ -25,17 +25,19 @@ export default async (req, res) => {
if (req.method === 'POST') {
await useAuth(req, res);
- const { is_admin: currentUserIsAdmin, user_id: currentUserId, account_uuid } = req.auth;
- const { name, domain, owner, share_id } = req.body;
+ const { isAdmin: currentUserIsAdmin, userId: currentUserId, accountUuid } = req.auth;
+ const { name, domain, owner, enable_share_url } = req.body;
let account;
- if (account_uuid) {
- account = await getAccount({ account_uuid });
+ if (accountUuid) {
+ account = await getAccount({ accountUuid });
}
const website = await getWebsite(where);
- if (website.user_id !== currentUserId && !currentUserIsAdmin) {
+ const shareId = enable_share_url ? website.shareId || getRandomChars(8) : null;
+
+ if (website.userId !== currentUserId && !currentUserIsAdmin) {
return unauthorized(res);
}
@@ -43,8 +45,8 @@ export default async (req, res) => {
{
name,
domain,
- share_id: share_id || null,
- user_id: account ? account.id : +owner,
+ shareId: shareId,
+ userId: account ? account.id : +owner,
},
where,
);
diff --git a/pages/api/websites/[id]/stats.js b/pages/api/websites/[id]/stats.js
index 54b4ae75..5aeb3810 100644
--- a/pages/api/websites/[id]/stats.js
+++ b/pages/api/websites/[id]/stats.js
@@ -1,4 +1,4 @@
-import { getWebsiteStats } from 'queries';
+import { getWebsiteStats, getWebsiteById } from 'queries';
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
import { allowQuery } from 'lib/auth';
import { useCors } from 'lib/middleware';
@@ -11,10 +11,10 @@ export default async (req, res) => {
return unauthorized(res);
}
- const { id, start_at, end_at, url, referrer, os, browser, device, country } = req.query;
+ const { website_id, start_at, end_at, url, referrer, os, browser, device, country } = req.query;
- const websiteId = +id;
- const website_uuid = id;
+ const websiteId = +website_id;
+ let websiteUuid = (await getWebsiteById(websiteId)).websiteUuid;
const startDate = new Date(+start_at);
const endDate = new Date(+end_at);
@@ -22,7 +22,7 @@ export default async (req, res) => {
const prevStartDate = new Date(+start_at - distance);
const prevEndDate = new Date(+end_at - distance);
- const metrics = await getWebsiteStats(websiteId, website_uuid, {
+ const metrics = await getWebsiteStats(websiteUuid, {
start_at: startDate,
end_at: endDate,
filters: {
@@ -34,7 +34,7 @@ export default async (req, res) => {
country,
},
});
- const prevPeriod = await getWebsiteStats(websiteId, website_uuid, {
+ const prevPeriod = await getWebsiteStats(websiteUuid, {
start_at: prevStartDate,
end_at: prevEndDate,
filters: {
diff --git a/pages/api/websites/index.js b/pages/api/websites/index.js
index 65a078d1..00385f37 100644
--- a/pages/api/websites/index.js
+++ b/pages/api/websites/index.js
@@ -6,44 +6,41 @@ import { uuid } from 'lib/crypto';
export default async (req, res) => {
await useAuth(req, res);
- const { user_id: current_user_id, is_admin, account_uuid } = req.auth;
+ const { userId: currentUserId, isAdmin, accountUuid } = req.auth;
const { user_id, include_all } = req.query;
let account;
- if (account_uuid) {
- account = await getAccount({ account_uuid });
+ if (accountUuid) {
+ account = await getAccount({ accountUuid: accountUuid });
}
- const userId = account ? account.user_id : +user_id;
+ const userId = account ? account.id : +user_id;
if (req.method === 'GET') {
- if (userId && userId !== current_user_id && !is_admin) {
+ if (userId && userId !== currentUserId && !isAdmin) {
return unauthorized(res);
}
const websites =
- is_admin && include_all
+ isAdmin && include_all
? await getAllWebsites()
- : await getUserWebsites(userId || current_user_id);
+ : await getUserWebsites(userId || currentUserId);
return ok(res, websites);
}
if (req.method === 'POST') {
- await useAuth(req, res);
-
- const { is_admin: currentUserIsAdmin, user_id: currentUserId } = req.auth;
const { name, domain, owner, enable_share_url } = req.body;
- const website_owner = account ? account.user_id : +owner;
+ const website_owner = account ? account.id : +owner;
- if (website_owner !== currentUserId && !currentUserIsAdmin) {
+ if (website_owner !== currentUserId && !isAdmin) {
return unauthorized(res);
}
- const website_uuid = uuid();
- const share_id = enable_share_url ? getRandomChars(8) : null;
- const website = await createWebsite(website_owner, { website_uuid, name, domain, share_id });
+ const websiteUuid = uuid();
+ const shareId = enable_share_url ? getRandomChars(8) : null;
+ const website = await createWebsite(website_owner, { websiteUuid, name, domain, shareId });
return ok(res, website);
}
diff --git a/pages/console/[[...id]].js b/pages/console/[[...id]].js
index 9028303c..a13537f8 100644
--- a/pages/console/[[...id]].js
+++ b/pages/console/[[...id]].js
@@ -8,7 +8,7 @@ export default function ConsolePage({ enabled }) {
const { loading } = useRequireLogin();
const { user } = useUser();
- if (loading || !enabled || !user?.is_admin) {
+ if (loading || !enabled || !user?.isAdmin) {
return null;
}
diff --git a/queries/admin/account/deleteAccount.js b/queries/admin/account/deleteAccount.js
index dfe44889..caef8709 100644
--- a/queries/admin/account/deleteAccount.js
+++ b/queries/admin/account/deleteAccount.js
@@ -1,40 +1,40 @@
import prisma from 'lib/prisma';
import redis, { DELETED } from 'lib/redis';
-export async function deleteAccount(user_id) {
+export async function deleteAccount(userId) {
const { client } = prisma;
const websites = await client.website.findMany({
- where: { user_id },
- select: { website_uuid: true },
+ where: { userId },
+ select: { websiteUuid: true },
});
let websiteUuids = [];
if (websites.length > 0) {
- websiteUuids = websites.map(a => a.website_uuid);
+ websiteUuids = websites.map(a => a.websiteUuid);
}
return client
.$transaction([
client.pageview.deleteMany({
- where: { session: { website: { user_id } } },
+ where: { session: { website: { userId } } },
}),
- client.event_data.deleteMany({
- where: { event: { session: { website: { user_id } } } },
+ client.eventData.deleteMany({
+ where: { event: { session: { website: { userId } } } },
}),
client.event.deleteMany({
- where: { session: { website: { user_id } } },
+ where: { session: { website: { userId } } },
}),
client.session.deleteMany({
- where: { website: { user_id } },
+ where: { website: { userId } },
}),
client.website.deleteMany({
- where: { user_id },
+ where: { userId },
}),
client.account.delete({
where: {
- user_id,
+ id: userId,
},
}),
])
diff --git a/queries/admin/account/getAccountById.js b/queries/admin/account/getAccountById.js
index 74c4a4a9..eee1b76a 100644
--- a/queries/admin/account/getAccountById.js
+++ b/queries/admin/account/getAccountById.js
@@ -1,9 +1,9 @@
import prisma from 'lib/prisma';
-export async function getAccountById(user_id) {
+export async function getAccountById(userId) {
return prisma.client.account.findUnique({
where: {
- user_id,
+ id: userId,
},
});
}
diff --git a/queries/admin/account/getAccounts.js b/queries/admin/account/getAccounts.js
index 154626d1..71d5e4c5 100644
--- a/queries/admin/account/getAccounts.js
+++ b/queries/admin/account/getAccounts.js
@@ -3,17 +3,17 @@ import prisma from 'lib/prisma';
export async function getAccounts() {
return prisma.client.account.findMany({
orderBy: [
- { is_admin: 'desc' },
+ { isAdmin: 'desc' },
{
username: 'asc',
},
],
select: {
- user_id: true,
+ id: true,
username: true,
- is_admin: true,
- created_at: true,
- updated_at: true,
+ isAdmin: true,
+ createdAt: true,
+ updatedAt: true,
},
});
}
diff --git a/queries/admin/account/updateAccount.js b/queries/admin/account/updateAccount.js
index 80509dec..d78485f9 100644
--- a/queries/admin/account/updateAccount.js
+++ b/queries/admin/account/updateAccount.js
@@ -1,9 +1,9 @@
import prisma from 'lib/prisma';
-export async function updateAccount(user_id, data) {
+export async function updateAccount(userId, data) {
return prisma.client.account.update({
where: {
- user_id,
+ id: userId,
},
data,
});
diff --git a/queries/admin/website/createWebsite.js b/queries/admin/website/createWebsite.js
index 679fdaa3..7a45f1cf 100644
--- a/queries/admin/website/createWebsite.js
+++ b/queries/admin/website/createWebsite.js
@@ -1,13 +1,13 @@
import prisma from 'lib/prisma';
import redis from 'lib/redis';
-export async function createWebsite(user_id, data) {
+export async function createWebsite(userId, data) {
return prisma.client.website
.create({
data: {
account: {
connect: {
- user_id,
+ id: userId,
},
},
...data,
@@ -15,7 +15,7 @@ export async function createWebsite(user_id, data) {
})
.then(async res => {
if (redis.client && res) {
- await redis.client.set(`website:${res.website_uuid}`, res.website_id);
+ await redis.client.set(`website:${res.websiteUuid}`, res.id);
}
return res;
diff --git a/queries/admin/website/deleteWebsite.js b/queries/admin/website/deleteWebsite.js
index 4c8518dc..392bdbae 100644
--- a/queries/admin/website/deleteWebsite.js
+++ b/queries/admin/website/deleteWebsite.js
@@ -2,30 +2,30 @@ import prisma from 'lib/prisma';
import redis, { DELETED } from 'lib/redis';
import { getWebsiteById } from 'queries';
-export async function deleteWebsite(website_id) {
+export async function deleteWebsite(websiteId) {
const { client, transaction } = prisma;
- const { website_uuid } = await getWebsiteById(website_id);
+ const { websiteUuid } = await getWebsiteById(websiteId);
return transaction([
client.pageview.deleteMany({
- where: { session: { website: { website_id } } },
+ where: { session: { website: { id: websiteId } } },
}),
- client.event_data.deleteMany({
- where: { event: { session: { website: { website_id } } } },
+ client.eventData.deleteMany({
+ where: { event: { session: { website: { id: websiteId } } } },
}),
client.event.deleteMany({
- where: { session: { website: { website_id } } },
+ where: { session: { website: { id: websiteId } } },
}),
client.session.deleteMany({
- where: { website: { website_id } },
+ where: { website: { id: websiteId } },
}),
client.website.delete({
- where: { website_id },
+ where: { id: websiteId },
}),
]).then(async res => {
if (redis.client) {
- await redis.client.set(`website:${website_uuid}`, DELETED);
+ await redis.client.set(`website:${websiteUuid}`, DELETED);
}
return res;
diff --git a/queries/admin/website/getAllWebsites.js b/queries/admin/website/getAllWebsites.js
index 23afd813..2c2c1bee 100644
--- a/queries/admin/website/getAllWebsites.js
+++ b/queries/admin/website/getAllWebsites.js
@@ -4,7 +4,7 @@ export async function getAllWebsites() {
let data = await prisma.client.website.findMany({
orderBy: [
{
- user_id: 'asc',
+ userId: 'asc',
},
{
name: 'asc',
diff --git a/queries/admin/website/getUserWebsites.js b/queries/admin/website/getUserWebsites.js
index 5a9662c0..c1a9d559 100644
--- a/queries/admin/website/getUserWebsites.js
+++ b/queries/admin/website/getUserWebsites.js
@@ -1,9 +1,9 @@
import prisma from 'lib/prisma';
-export async function getUserWebsites(user_id) {
+export async function getUserWebsites(userId) {
return prisma.client.website.findMany({
where: {
- user_id,
+ userId,
},
orderBy: {
name: 'asc',
diff --git a/queries/admin/website/getWebsiteById.js b/queries/admin/website/getWebsiteById.js
index 9b8cfe93..f486bd8f 100644
--- a/queries/admin/website/getWebsiteById.js
+++ b/queries/admin/website/getWebsiteById.js
@@ -1,9 +1,9 @@
import prisma from 'lib/prisma';
-export async function getWebsiteById(website_id) {
+export async function getWebsiteById(websiteId) {
return prisma.client.website.findUnique({
where: {
- website_id,
+ id: websiteId,
},
});
}
diff --git a/queries/admin/website/getWebsiteByShareId.js b/queries/admin/website/getWebsiteByShareId.js
index fbdeebc9..bfc99ce7 100644
--- a/queries/admin/website/getWebsiteByShareId.js
+++ b/queries/admin/website/getWebsiteByShareId.js
@@ -1,9 +1,9 @@
import prisma from 'lib/prisma';
-export async function getWebsiteByShareId(share_id) {
+export async function getWebsiteByShareId(shareId) {
return prisma.client.website.findUnique({
where: {
- share_id,
+ shareId,
},
});
}
diff --git a/queries/admin/website/getWebsiteByUuid.js b/queries/admin/website/getWebsiteByUuid.js
index 1b1e04ca..158d357a 100644
--- a/queries/admin/website/getWebsiteByUuid.js
+++ b/queries/admin/website/getWebsiteByUuid.js
@@ -1,16 +1,16 @@
import prisma from 'lib/prisma';
import redis from 'lib/redis';
-export async function getWebsiteByUuid(website_uuid) {
+export async function getWebsiteByUuid(websiteUuid) {
return prisma.client.website
.findUnique({
where: {
- website_uuid,
+ websiteUuid,
},
})
.then(async res => {
if (redis.client && res) {
- await redis.client.set(`website:${res.website_uuid}`, res.website_id);
+ await redis.client.set(`website:${res.websiteUuid}`, res.id);
}
return res;
diff --git a/queries/admin/website/resetWebsite.js b/queries/admin/website/resetWebsite.js
index 6941c2af..d097d4e5 100644
--- a/queries/admin/website/resetWebsite.js
+++ b/queries/admin/website/resetWebsite.js
@@ -1,20 +1,20 @@
import prisma from 'lib/prisma';
-export async function resetWebsite(website_id) {
+export async function resetWebsite(websiteId) {
const { client, transaction } = prisma;
return transaction([
client.pageview.deleteMany({
- where: { session: { website: { website_id } } },
+ where: { session: { website: { id: websiteId } } },
}),
- client.event_data.deleteMany({
- where: { event: { session: { website: { website_id } } } },
+ client.eventData.deleteMany({
+ where: { event: { session: { website: { id: websiteId } } } },
}),
client.event.deleteMany({
- where: { session: { website: { website_id } } },
+ where: { session: { website: { id: websiteId } } },
}),
client.session.deleteMany({
- where: { website: { website_id } },
+ where: { website: { id: websiteId } },
}),
]);
}
diff --git a/queries/analytics/event/getEventMetrics.js b/queries/analytics/event/getEventMetrics.js
index 014b645c..1a8f262f 100644
--- a/queries/analytics/event/getEventMetrics.js
+++ b/queries/analytics/event/getEventMetrics.js
@@ -10,7 +10,7 @@ export async function getEventMetrics(...args) {
}
async function relationalQuery(
- website_id,
+ websiteId,
start_at,
end_at,
timezone = 'utc',
@@ -18,7 +18,7 @@ async function relationalQuery(
filters = {},
) {
const { rawQuery, getDateQuery, getFilterQuery } = prisma;
- const params = [website_id, start_at, end_at];
+ const params = [websiteId, start_at, end_at];
return rawQuery(
`select
@@ -36,6 +36,7 @@ async function relationalQuery(
}
async function clickhouseQuery(
+ websiteId,
website_uuid,
start_at,
end_at,
@@ -44,7 +45,7 @@ async function clickhouseQuery(
filters = {},
) {
const { rawQuery, getDateQuery, getBetweenDates, getFilterQuery } = clickhouse;
- const params = [website_uuid];
+ const params = [websiteId];
return rawQuery(
`select
diff --git a/queries/analytics/event/getEvents.js b/queries/analytics/event/getEvents.js
index 7238ecea..6f15686f 100644
--- a/queries/analytics/event/getEvents.js
+++ b/queries/analytics/event/getEvents.js
@@ -13,11 +13,11 @@ function relationalQuery(websites, start_at) {
return prisma.client.event.findMany({
where: {
website: {
- website_id: {
+ id: {
in: websites,
},
},
- created_at: {
+ createdAt: {
gte: start_at,
},
},
diff --git a/queries/analytics/event/saveEvent.js b/queries/analytics/event/saveEvent.js
index a319e646..e2948237 100644
--- a/queries/analytics/event/saveEvent.js
+++ b/queries/analytics/event/saveEvent.js
@@ -10,18 +10,18 @@ export async function saveEvent(...args) {
});
}
-async function relationalQuery(website_id, { session_id, url, event_name, event_data }) {
+async function relationalQuery(websiteId, { sessionId, url, eventName, eventData }) {
const data = {
- website_id,
- session_id,
+ websiteId,
+ sessionId,
url: url?.substring(0, URL_LENGTH),
- event_name: event_name?.substring(0, EVENT_NAME_LENGTH),
+ eventName: eventName?.substring(0, EVENT_NAME_LENGTH),
};
- if (event_data) {
- data.event_data = {
+ if (eventData) {
+ data.eventData = {
create: {
- event_data: event_data,
+ eventData: eventData,
},
};
}
@@ -32,18 +32,21 @@ async function relationalQuery(website_id, { session_id, url, event_name, event_
}
async function clickhouseQuery(
+ websiteId,
+ { session: { country, sessionUuid, ...sessionArgs }, eventUuid, url, eventName, eventData },
website_uuid,
- { session: { country, ...sessionArgs }, event_uuid, url, event_name, event_data },
) {
const { getDateFormat, sendMessage } = kafka;
const params = {
- event_uuid,
+ session_uuid: sessionUuid,
+ event_uuid: eventUuid,
+ website_id: websiteId,
website_uuid,
created_at: getDateFormat(new Date()),
url: url?.substring(0, URL_LENGTH),
- event_name: event_name?.substring(0, EVENT_NAME_LENGTH),
- event_data: JSON.stringify(event_data),
+ event_name: eventName?.substring(0, EVENT_NAME_LENGTH),
+ event_data: JSON.stringify(eventData),
...sessionArgs,
country: country ? country : null,
};
diff --git a/queries/analytics/pageview/getPageviewMetrics.js b/queries/analytics/pageview/getPageviewMetrics.js
index 0d7b4024..80a4e957 100644
--- a/queries/analytics/pageview/getPageviewMetrics.js
+++ b/queries/analytics/pageview/getPageviewMetrics.js
@@ -9,9 +9,9 @@ export async function getPageviewMetrics(...args) {
});
}
-async function relationalQuery(website_id, { startDate, endDate, column, table, filters = {} }) {
+async function relationalQuery(websiteId, { startDate, endDate, column, table, filters = {} }) {
const { rawQuery, parseFilters } = prisma;
- const params = [website_id, startDate, endDate];
+ const params = [websiteId, startDate, endDate];
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
table,
column,
@@ -34,9 +34,9 @@ async function relationalQuery(website_id, { startDate, endDate, column, table,
);
}
-async function clickhouseQuery(website_uuid, { startDate, endDate, column, filters = {} }) {
+async function clickhouseQuery(websiteId, { startDate, endDate, column, filters = {} }) {
const { rawQuery, parseFilters, getBetweenDates } = clickhouse;
- const params = [website_uuid];
+ const params = [websiteId];
const { pageviewQuery, sessionQuery, eventQuery } = parseFilters(column, filters, params);
return rawQuery(
diff --git a/queries/analytics/pageview/getPageviewParams.js b/queries/analytics/pageview/getPageviewParams.js
index fa445da5..bf0d6b5e 100644
--- a/queries/analytics/pageview/getPageviewParams.js
+++ b/queries/analytics/pageview/getPageviewParams.js
@@ -8,9 +8,9 @@ export async function getPageviewParams(...args) {
});
}
-async function relationalQuery(website_id, start_at, end_at, column, table, filters = {}) {
+async function relationalQuery(websiteId, start_at, end_at, column, table, filters = {}) {
const { parseFilters, rawQuery } = prisma;
- const params = [website_id, start_at, end_at];
+ const params = [websiteId, start_at, end_at];
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
table,
column,
diff --git a/queries/analytics/pageview/getPageviewStats.js b/queries/analytics/pageview/getPageviewStats.js
index c6cc0163..5a740dbd 100644
--- a/queries/analytics/pageview/getPageviewStats.js
+++ b/queries/analytics/pageview/getPageviewStats.js
@@ -10,7 +10,7 @@ export async function getPageviewStats(...args) {
}
async function relationalQuery(
- website_id,
+ websiteId,
{
start_at,
end_at,
@@ -22,7 +22,7 @@ async function relationalQuery(
},
) {
const { getDateQuery, parseFilters, rawQuery } = prisma;
- const params = [website_id, start_at, end_at];
+ const params = [websiteId, start_at, end_at];
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
'pageview',
null,
@@ -45,11 +45,11 @@ async function relationalQuery(
}
async function clickhouseQuery(
- website_uuid,
+ websiteId,
{ start_at, end_at, timezone = 'UTC', unit = 'day', count = '*', filters = {} },
) {
const { parseFilters, rawQuery, getDateStringQuery, getDateQuery, getBetweenDates } = clickhouse;
- const params = [website_uuid];
+ const params = [websiteId];
const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params);
return rawQuery(
diff --git a/queries/analytics/pageview/getPageviews.js b/queries/analytics/pageview/getPageviews.js
index 45a5865f..69176d81 100644
--- a/queries/analytics/pageview/getPageviews.js
+++ b/queries/analytics/pageview/getPageviews.js
@@ -13,11 +13,11 @@ async function relationalQuery(websites, start_at) {
return prisma.client.pageview.findMany({
where: {
website: {
- website_id: {
+ id: {
in: websites,
},
},
- created_at: {
+ createdAt: {
gte: start_at,
},
},
diff --git a/queries/analytics/pageview/savePageView.js b/queries/analytics/pageview/savePageView.js
index 5f861a15..0e63b97e 100644
--- a/queries/analytics/pageview/savePageView.js
+++ b/queries/analytics/pageview/savePageView.js
@@ -10,11 +10,11 @@ export async function savePageView(...args) {
});
}
-async function relationalQuery(website_id, { session: { session_id }, url, referrer }) {
+async function relationalQuery(websiteId, { session: { sessionId }, url, referrer }) {
return prisma.client.pageview.create({
data: {
- website_id,
- session_id,
+ websiteId,
+ sessionId,
url: url?.substring(0, URL_LENGTH),
referrer: referrer?.substring(0, URL_LENGTH),
},
@@ -22,12 +22,13 @@ async function relationalQuery(website_id, { session: { session_id }, url, refer
}
async function clickhouseQuery(
- website_uuid,
- { session: { country, ...sessionArgs }, url, referrer },
+ websiteId,
+ { session: { country, sessionUuid, ...sessionArgs }, url, referrer },
) {
const { getDateFormat, sendMessage } = kafka;
const params = {
- website_id: website_uuid,
+ session_uuid: sessionUuid,
+ website_id: websiteId,
created_at: getDateFormat(new Date()),
url: url?.substring(0, URL_LENGTH),
referrer: referrer?.substring(0, URL_LENGTH),
diff --git a/queries/analytics/session/createSession.js b/queries/analytics/session/createSession.js
index 0f7d32c6..6484dece 100644
--- a/queries/analytics/session/createSession.js
+++ b/queries/analytics/session/createSession.js
@@ -10,16 +10,16 @@ export async function createSession(...args) {
});
}
-async function relationalQuery(website_id, data) {
+async function relationalQuery(websiteId, data) {
return prisma.client.session
.create({
data: {
- website_id,
+ websiteId,
...data,
},
select: {
- session_id: true,
- session_uuid: true,
+ sessionId: true,
+ sessionUuid: true,
hostname: true,
browser: true,
os: true,
@@ -31,7 +31,7 @@ async function relationalQuery(website_id, data) {
})
.then(async res => {
if (redis.client && res) {
- await redis.client.set(`session:${res.session_uuid}`, res.session_id);
+ await redis.client.set(`session:${res.sessionUuid}`, res.id);
}
return res;
@@ -39,14 +39,14 @@ async function relationalQuery(website_id, data) {
}
async function clickhouseQuery(
- website_uuid,
- { session_uuid, hostname, browser, os, screen, language, country, device },
+ websiteId,
+ { sessionUuid, hostname, browser, os, screen, language, country, device },
) {
const { getDateFormat, sendMessage } = kafka;
const params = {
- session_uuid,
- website_uuid,
+ session_uuid: sessionUuid,
+ website_id: websiteId,
created_at: getDateFormat(new Date()),
hostname,
browser,
@@ -60,6 +60,6 @@ async function clickhouseQuery(
await sendMessage(params, 'event');
if (redis.client) {
- await redis.client.set(`session:${session_uuid}`, 1);
+ await redis.client.set(`session:${sessionUuid}`, 1);
}
}
diff --git a/queries/analytics/session/getSessionByUuid.js b/queries/analytics/session/getSessionByUuid.js
index a2b5754d..7c146351 100644
--- a/queries/analytics/session/getSessionByUuid.js
+++ b/queries/analytics/session/getSessionByUuid.js
@@ -10,25 +10,25 @@ export async function getSessionByUuid(...args) {
});
}
-async function relationalQuery(session_uuid) {
+async function relationalQuery(sessionUuid) {
return prisma.client.session
.findUnique({
where: {
- session_uuid,
+ sessionUuid,
},
})
.then(async res => {
if (redis.client && res) {
- await redis.client.set(`session:${res.session_uuid}`, res.session_id);
+ await redis.client.set(`session:${res.sessionUuid}`, res.sessionId);
}
return res;
});
}
-async function clickhouseQuery(session_uuid) {
+async function clickhouseQuery(sessionUuid) {
const { rawQuery, findFirst } = clickhouse;
- const params = [session_uuid];
+ const params = [sessionUuid];
return rawQuery(
`select distinct
diff --git a/queries/analytics/session/getSessionMetrics.js b/queries/analytics/session/getSessionMetrics.js
index 796a0682..7ad7ecfe 100644
--- a/queries/analytics/session/getSessionMetrics.js
+++ b/queries/analytics/session/getSessionMetrics.js
@@ -9,9 +9,9 @@ export async function getSessionMetrics(...args) {
});
}
-async function relationalQuery(website_id, { startDate, endDate, field, filters = {} }) {
+async function relationalQuery(websiteId, { startDate, endDate, field, filters = {} }) {
const { parseFilters, rawQuery } = prisma;
- const params = [website_id, startDate, endDate];
+ const params = [websiteId, startDate, endDate];
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(null, filters, params);
return rawQuery(
@@ -32,9 +32,9 @@ async function relationalQuery(website_id, { startDate, endDate, field, filters
);
}
-async function clickhouseQuery(website_id, { startDate, endDate, field, filters = {} }) {
+async function clickhouseQuery(websiteId, { startDate, endDate, field, filters = {} }) {
const { parseFilters, getBetweenDates, rawQuery } = clickhouse;
- const params = [website_id];
+ const params = [websiteId];
const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params);
return rawQuery(
diff --git a/queries/analytics/session/getSessions.js b/queries/analytics/session/getSessions.js
index 7c47ce70..da3d89de 100644
--- a/queries/analytics/session/getSessions.js
+++ b/queries/analytics/session/getSessions.js
@@ -15,13 +15,13 @@ async function relationalQuery(websites, start_at) {
...(websites && websites.length > 0
? {
website: {
- website_id: {
+ id: {
in: websites,
},
},
}
: {}),
- created_at: {
+ createdAt: {
gte: start_at,
},
},
diff --git a/queries/analytics/stats/getActiveVisitors.js b/queries/analytics/stats/getActiveVisitors.js
index 09cfcdfc..e919760a 100644
--- a/queries/analytics/stats/getActiveVisitors.js
+++ b/queries/analytics/stats/getActiveVisitors.js
@@ -10,9 +10,9 @@ export async function getActiveVisitors(...args) {
});
}
-async function relationalQuery(website_id) {
+async function relationalQuery(websiteId) {
const date = subMinutes(new Date(), 5);
- const params = [website_id, date];
+ const params = [websiteId, date];
return prisma.rawQuery(
`select count(distinct session_id) x
@@ -23,9 +23,9 @@ async function relationalQuery(website_id) {
);
}
-async function clickhouseQuery(website_uuid) {
+async function clickhouseQuery(websiteId) {
const { rawQuery, getDateFormat } = clickhouse;
- const params = [website_uuid];
+ const params = [websiteId];
return rawQuery(
`select count(distinct session_id) x
diff --git a/queries/analytics/stats/getRealtimeData.js b/queries/analytics/stats/getRealtimeData.js
index 313d757d..9e7eb673 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(({ view_id, ...props }) => ({
- __id: `p${view_id}`,
- view_id,
+ pageviews: pageviews.map(({ pageviewId, ...props }) => ({
+ __id: `p${pageviewId}`,
+ pageviewId,
...props,
})),
- sessions: sessions.map(({ session_id, ...props }) => ({
- __id: `s${session_id}`,
- session_id,
+ sessions: sessions.map(({ sessionId, ...props }) => ({
+ __id: `s${sessionId}`,
+ sessionId,
...props,
})),
- events: events.map(({ event_id, ...props }) => ({
- __id: `e${event_id}`,
- event_id,
+ events: events.map(({ eventId, ...props }) => ({
+ __id: `e${eventId}`,
+ eventId,
...props,
})),
timestamp: Date.now(),
diff --git a/queries/analytics/stats/getWebsiteStats.js b/queries/analytics/stats/getWebsiteStats.js
index 17ec8d69..79156ef1 100644
--- a/queries/analytics/stats/getWebsiteStats.js
+++ b/queries/analytics/stats/getWebsiteStats.js
@@ -9,9 +9,9 @@ export async function getWebsiteStats(...args) {
});
}
-async function relationalQuery(website_id, { start_at, end_at, filters = {} }) {
+async function relationalQuery(websiteId, { start_at, end_at, filters = {} }) {
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma;
- const params = [website_id, start_at, end_at];
+ const params = [websiteId, start_at, end_at];
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
'pageview',
null,
@@ -41,9 +41,9 @@ async function relationalQuery(website_id, { start_at, end_at, filters = {} }) {
);
}
-async function clickhouseQuery(website_uuid, { start_at, end_at, filters = {} }) {
+async function clickhouseQuery(websiteId, { start_at, end_at, filters = {} }) {
const { rawQuery, getDateQuery, getBetweenDates, parseFilters } = clickhouse;
- const params = [website_uuid];
+ const params = [websiteId];
const { pageviewQuery, sessionQuery } = parseFilters(null, filters, params);
return rawQuery(
diff --git a/tracker/index.js b/tracker/index.js
index 1eb54d63..100fd24a 100644
--- a/tracker/index.js
+++ b/tracker/index.js
@@ -92,24 +92,24 @@
.then(text => (cache = text));
};
- const trackView = (url = currentUrl, referrer = currentRef, uuid = website) =>
+ const trackView = (url = currentUrl, referrer = currentRef, websiteUuid = website) =>
collect(
'pageview',
assign(getPayload(), {
- website: uuid,
+ website: websiteUuid,
url,
referrer,
}),
);
- const trackEvent = (event_name, event_data, url = currentUrl, uuid = website) =>
+ const trackEvent = (eventName, eventData, url = currentUrl, websiteUuid = website) =>
collect(
'event',
assign(getPayload(), {
- website: uuid,
+ website: websiteUuid,
url,
- event_name,
- event_data,
+ event_name: eventName,
+ event_data: eventData,
}),
);