mirror of
https://github.com/umami-software/umami.git
synced 2026-02-04 04:37:11 +01:00
Compare commits
2 commits
86d2672c47
...
912d2d544d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
912d2d544d | ||
|
|
3072f02f1b |
6 changed files with 33 additions and 8 deletions
|
|
@ -1,8 +1,14 @@
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { getLink } from '@/queries/prisma';
|
||||||
import { LinkPage } from './LinkPage';
|
import { LinkPage } from './LinkPage';
|
||||||
|
|
||||||
export default async function ({ params }: { params: Promise<{ linkId: string }> }) {
|
export default async function ({ params }: { params: Promise<{ linkId: string }> }) {
|
||||||
const { linkId } = await params;
|
const { linkId } = await params;
|
||||||
|
const link = await getLink(linkId);
|
||||||
|
|
||||||
|
if (!link || link?.deletedAt) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return <LinkPage linkId={linkId} />;
|
return <LinkPage linkId={linkId} />;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { getPixel } from '@/queries/prisma';
|
||||||
import { PixelPage } from './PixelPage';
|
import { PixelPage } from './PixelPage';
|
||||||
|
|
||||||
export default async function ({ params }: { params: { pixelId: string } }) {
|
export default async function ({ params }: { params: { pixelId: string } }) {
|
||||||
const { pixelId } = await params;
|
const { pixelId } = await params;
|
||||||
|
const pixel = await getPixel(pixelId);
|
||||||
|
|
||||||
|
if (!pixel || pixel?.deletedAt) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return <PixelPage pixelId={pixelId} />;
|
return <PixelPage pixelId={pixelId} />;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { WebsiteLayout } from '@/app/(main)/websites/[websiteId]/WebsiteLayout';
|
import { WebsiteLayout } from '@/app/(main)/websites/[websiteId]/WebsiteLayout';
|
||||||
|
import { getWebsite } from '@/queries/prisma';
|
||||||
|
|
||||||
export default async function ({
|
export default async function ({
|
||||||
children,
|
children,
|
||||||
|
|
@ -9,6 +10,11 @@ export default async function ({
|
||||||
params: Promise<{ websiteId: string }>;
|
params: Promise<{ websiteId: string }>;
|
||||||
}) {
|
}) {
|
||||||
const { websiteId } = await params;
|
const { websiteId } = await params;
|
||||||
|
const website = await getWebsite(websiteId);
|
||||||
|
|
||||||
|
if (!website || website?.deletedAt) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return <WebsiteLayout websiteId={websiteId}>{children}</WebsiteLayout>;
|
return <WebsiteLayout websiteId={websiteId}>{children}</WebsiteLayout>;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,15 +74,21 @@ function getSearchSQL(column: string, param: string = 'search'): string {
|
||||||
function mapFilter(column: string, operator: string, name: string, type: string = '') {
|
function mapFilter(column: string, operator: string, name: string, type: string = '') {
|
||||||
const value = `{{${name}${type ? `::${type}` : ''}}}`;
|
const value = `{{${name}${type ? `::${type}` : ''}}}`;
|
||||||
|
|
||||||
|
if (name.startsWith('cohort_')) {
|
||||||
|
name = name.slice('cohort_'.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
const table = SESSION_COLUMNS.includes(name) ? 'session' : 'website_event';
|
||||||
|
|
||||||
switch (operator) {
|
switch (operator) {
|
||||||
case OPERATORS.equals:
|
case OPERATORS.equals:
|
||||||
return `${column} = ${value}`;
|
return `${table}.${column} = ${value}`;
|
||||||
case OPERATORS.notEquals:
|
case OPERATORS.notEquals:
|
||||||
return `${column} != ${value}`;
|
return `${table}.${column} != ${value}`;
|
||||||
case OPERATORS.contains:
|
case OPERATORS.contains:
|
||||||
return `${column} ilike ${value}`;
|
return `${table}.${column} ilike ${value}`;
|
||||||
case OPERATORS.doesNotContain:
|
case OPERATORS.doesNotContain:
|
||||||
return `${column} not ilike ${value}`;
|
return `${table}.${column} not ilike ${value}`;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ export async function setWebsiteDate(websiteId: string, userId: string, data: Re
|
||||||
const website = await fetchWebsite(websiteId);
|
const website = await fetchWebsite(websiteId);
|
||||||
const cloudMode = !!process.env.CLOUD_MODE;
|
const cloudMode = !!process.env.CLOUD_MODE;
|
||||||
|
|
||||||
if (cloudMode && !website.teamId) {
|
if (cloudMode && website && !website.teamId) {
|
||||||
const account = await fetchAccount(userId);
|
const account = await fetchAccount(userId);
|
||||||
|
|
||||||
if (!account?.hasSubscription) {
|
if (!account?.hasSubscription) {
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,8 @@ async function relationalQuery(
|
||||||
currency,
|
currency,
|
||||||
});
|
});
|
||||||
|
|
||||||
const joinQuery = filterQuery
|
const joinQuery =
|
||||||
|
filterQuery || cohortQuery
|
||||||
? `join website_event
|
? `join website_event
|
||||||
on website_event.website_id = revenue.website_id
|
on website_event.website_id = revenue.website_id
|
||||||
and website_event.session_id = revenue.session_id
|
and website_event.session_id = revenue.session_id
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue