diff --git a/src/app/(main)/settings/preferences/DateRangeSetting.tsx b/src/app/(main)/settings/preferences/DateRangeSetting.tsx
index 2b81985f5..e47ce0b69 100644
--- a/src/app/(main)/settings/preferences/DateRangeSetting.tsx
+++ b/src/app/(main)/settings/preferences/DateRangeSetting.tsx
@@ -1,21 +1,24 @@
+import { useState } from 'react';
import { DateFilter } from '@/components/input/DateFilter';
import { Button, Row } from '@umami/react-zen';
-import { useDateRange, useMessages } from '@/components/hooks';
-import { DEFAULT_DATE_RANGE_VALUE } from '@/lib/constants';
+import { useMessages } from '@/components/hooks';
+import { DATE_RANGE_CONFIG, DEFAULT_DATE_RANGE_VALUE } from '@/lib/constants';
+import { setItem, getItem } from '@/lib/storage';
export function DateRangeSetting() {
const { formatMessage, labels } = useMessages();
- const { dateRange, saveDateRange } = useDateRange();
- const { value } = dateRange;
+ const [date, setDate] = useState(getItem(DATE_RANGE_CONFIG) || DEFAULT_DATE_RANGE_VALUE);
const handleChange = (value: string) => {
- saveDateRange(value);
+ setItem(DATE_RANGE_CONFIG, value);
+ setDate(value);
};
- const handleReset = () => saveDateRange(DEFAULT_DATE_RANGE_VALUE);
+
+ const handleReset = () => setItem(DATE_RANGE_CONFIG, DEFAULT_DATE_RANGE_VALUE);
return (
-
+
);
diff --git a/src/app/(main)/websites/[websiteId]/WebsiteChart.tsx b/src/app/(main)/websites/[websiteId]/WebsiteChart.tsx
index b72f00a01..67412d5cc 100644
--- a/src/app/(main)/websites/[websiteId]/WebsiteChart.tsx
+++ b/src/app/(main)/websites/[websiteId]/WebsiteChart.tsx
@@ -15,7 +15,7 @@ export function WebsiteChart({
const { startDate, endDate, unit, value } = dateRange;
const { data, isLoading, isFetching, error } = useWebsitePageviewsQuery({
websiteId,
- compare: compareMode ? dateCompare : undefined,
+ compare: compareMode ? dateCompare?.['value'] : undefined,
});
const { pageviews, sessions, compare } = (data || {}) as any;
diff --git a/src/components/hooks/index.ts b/src/components/hooks/index.ts
index 6af169990..2731e2680 100644
--- a/src/components/hooks/index.ts
+++ b/src/components/hooks/index.ts
@@ -9,6 +9,7 @@ export * from './context/useWebsite';
// Query hooks
export * from './queries/useActiveUsersQuery';
+export * from './queries/useDateRangeQuery';
export * from './queries/useDeleteQuery';
export * from './queries/useEventDataEventsQuery';
export * from './queries/useEventDataPropertiesQuery';
@@ -76,6 +77,7 @@ export * from './useModified';
export * from './useNavigation';
export * from './usePagedQuery';
export * from './usePageParameters';
+export * from './useQueryStringDate';
export * from './useRegionNames';
export * from './useSlug';
export * from './useSticky';
diff --git a/src/components/hooks/queries/useDateRangeQuery.ts b/src/components/hooks/queries/useDateRangeQuery.ts
new file mode 100644
index 000000000..4af2011cb
--- /dev/null
+++ b/src/components/hooks/queries/useDateRangeQuery.ts
@@ -0,0 +1,12 @@
+import { useApi } from '../useApi';
+import { ReactQueryOptions } from '@/lib/types';
+
+export function useDateRangeQuery(websiteId: string, options?: ReactQueryOptions) {
+ const { get, useQuery } = useApi();
+ return useQuery({
+ queryKey: ['date-range', websiteId],
+ queryFn: () => get(`/websites/${websiteId}/daterange`),
+ enabled: !!websiteId,
+ ...options,
+ });
+}
diff --git a/src/components/hooks/useDateRange.ts b/src/components/hooks/useDateRange.ts
index 0a82d5a3e..dc81cfd7c 100644
--- a/src/components/hooks/useDateRange.ts
+++ b/src/components/hooks/useDateRange.ts
@@ -1,65 +1,35 @@
-import { useMemo } from 'react';
-import { getMinimumUnit, parseDateRange, getOffsetDateRange } from '@/lib/date';
-import { setItem } from '@/lib/storage';
-import { DATE_RANGE_CONFIG, DEFAULT_DATE_COMPARE, DEFAULT_DATE_RANGE_VALUE } from '@/lib/constants';
-import { setWebsiteDateCompare, setWebsiteDateRange, useWebsites } from '@/store/websites';
-import { setDateRangeValue, useApp } from '@/store/app';
-import { useLocale } from './useLocale';
-import { useApi } from './useApi';
-import { useNavigation } from './useNavigation';
+import { getMinimumUnit, parseDateRange } from '@/lib/date';
+import { useLocale } from '@/components/hooks/useLocale';
+import { useApi } from '@/components/hooks//useApi';
+import { useQueryStringDate } from '@/components/hooks/useQueryStringDate';
+import { useGlobalState } from '@/components/hooks/useGlobalState';
-export interface UseDateRangeOptions {
- ignoreOffset?: boolean;
-}
-
-export function useDateRange(websiteId?: string, options: UseDateRangeOptions = {}) {
+export function useDateRange(websiteId: string) {
const { get } = useApi();
const { locale } = useLocale();
- const {
- query: { date, offset = 0 },
- } = useNavigation();
- const websiteConfig = useWebsites(state => state[websiteId]?.dateRange);
- const globalConfig = useApp(state => state.dateRangeValue);
- const dateValue = websiteConfig?.value || date || globalConfig || DEFAULT_DATE_RANGE_VALUE;
+ const { dateRange: defaultDateRange, dateCompare } = useQueryStringDate();
- const dateRange = useMemo(() => {
- const dateRangeObject = parseDateRange(dateValue, locale);
+ const [dateRange, setDateRange] = useGlobalState(`date-range:${websiteId}`, defaultDateRange);
- return !options.ignoreOffset && offset
- ? getOffsetDateRange(dateRangeObject, +offset)
- : dateRangeObject;
- }, [date, offset, dateValue, options]);
+ const setDateRangeValue = async (value: string) => {
+ if (value === 'all') {
+ const result = await get(`/websites/${websiteId}/daterange`);
+ const { mindate, maxdate } = result;
- const dateCompare = useWebsites(state => state[websiteId]?.dateCompare || DEFAULT_DATE_COMPARE);
+ const startDate = new Date(mindate);
+ const endDate = new Date(maxdate);
+ const unit = getMinimumUnit(startDate, endDate);
- const saveDateRange = async (value: string) => {
- if (websiteId) {
- if (value === 'all') {
- const result: any = await get(`/websites/${websiteId}/daterange`);
- const { mindate, maxdate } = result;
-
- const startDate = new Date(mindate);
- const endDate = new Date(maxdate);
- const unit = getMinimumUnit(startDate, endDate);
-
- setWebsiteDateRange(websiteId, {
- startDate,
- endDate,
- unit,
- value,
- });
- } else {
- setWebsiteDateRange(websiteId, parseDateRange(value, locale));
- }
+ setDateRange({
+ startDate,
+ endDate,
+ unit,
+ value,
+ });
} else {
- setItem(DATE_RANGE_CONFIG, value);
- setDateRangeValue(value);
+ setDateRange(parseDateRange(value, locale));
}
};
- const saveDateCompare = (value: string) => {
- setWebsiteDateCompare(websiteId, value);
- };
-
- return { dateRange, saveDateRange, dateCompare, saveDateCompare };
+ return { dateRange, dateCompare, setDateRange, setDateRangeValue };
}
diff --git a/src/components/hooks/useQueryStringDate.ts b/src/components/hooks/useQueryStringDate.ts
new file mode 100644
index 000000000..3b6431a18
--- /dev/null
+++ b/src/components/hooks/useQueryStringDate.ts
@@ -0,0 +1,24 @@
+import { useNavigation } from '@/components/hooks/useNavigation';
+import { useMemo } from 'react';
+import { getCompareDate, getOffsetDateRange, parseDateRange } from '@/lib/date';
+import { useLocale } from '@/components/hooks/useLocale';
+import { DEFAULT_DATE_RANGE_VALUE } from '@/lib/constants';
+
+export function useQueryStringDate(options: { ignoreOffset?: boolean } = {}) {
+ const {
+ query: { date = DEFAULT_DATE_RANGE_VALUE, offset = 0, compare = 'prev' },
+ } = useNavigation();
+ const { locale } = useLocale();
+
+ const dateRange = useMemo(() => {
+ const dateRangeObject = parseDateRange(date, locale);
+
+ return !options.ignoreOffset && offset
+ ? getOffsetDateRange(dateRangeObject, +offset)
+ : dateRangeObject;
+ }, [date, offset, options]);
+
+ const dateCompare = getCompareDate(compare, dateRange.startDate, dateRange.endDate);
+
+ return { date, offset, dateRange, dateCompare };
+}
diff --git a/src/components/input/WebsiteDateFilter.tsx b/src/components/input/WebsiteDateFilter.tsx
index 1045de211..469da4190 100644
--- a/src/components/input/WebsiteDateFilter.tsx
+++ b/src/components/input/WebsiteDateFilter.tsx
@@ -3,6 +3,8 @@ import { isAfter } from 'date-fns';
import { ChevronRight } from '@/components/icons';
import { useDateRange, useMessages, useNavigation } from '@/components/hooks';
import { DateFilter } from './DateFilter';
+import { getOffsetDateRange } from '@/lib/date';
+import { useCallback } from 'react';
export interface WebsiteDateFilterProps {
websiteId: string;
@@ -18,7 +20,7 @@ export function WebsiteDateFilter({
showButtons = true,
allowCompare,
}: WebsiteDateFilterProps) {
- const { dateRange, saveDateRange } = useDateRange(websiteId);
+ const { dateRange, setDateRange, setDateRangeValue } = useDateRange(websiteId);
const { value, endDate } = dateRange;
const { formatMessage, labels } = useMessages();
const {
@@ -27,18 +29,25 @@ export function WebsiteDateFilter({
query: { compare = 'prev', offset = 0 },
} = useNavigation();
const isAllTime = value === 'all';
+
const isCustomRange = value.startsWith('range');
const disableForward = value === 'all' || isAfter(endDate, new Date());
const handleChange = (date: string) => {
- saveDateRange(date);
+ setDateRangeValue(date);
router.push(updateParams({ date, offset: undefined }));
};
- const handleIncrement = (increment: number) => {
- router.push(updateParams({ offset: +offset + increment }));
- };
+ const handleIncrement = useCallback(
+ (increment: number) => {
+ const offsetDate = getOffsetDateRange(dateRange, +offset + increment);
+
+ setDateRange(offsetDate);
+ router.push(updateParams({ offset: +offset + increment }));
+ },
+ [offset],
+ );
const handleSelect = (compare: any) => {
router.push(updateParams({ compare }));
diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts
index 346f118e9..35f716be3 100644
--- a/src/lib/prisma.ts
+++ b/src/lib/prisma.ts
@@ -187,9 +187,7 @@ async function rawQuery(sql: string, data: Record, name?: string):
return `$${params.length}${type ?? ''}`;
});
- return process.env.DATABASE_REPLICA_URL
- ? await client.$replica().$queryRawUnsafe(query, ...params)
- : await client.$queryRawUnsafe(query, ...params);
+ return client.$queryRawUnsafe(query, ...params);
}
async function pagedQuery(model: string, criteria: T, filters?: QueryFilters) {
@@ -283,6 +281,7 @@ function getClient() {
url: process.env.DATABASE_URL,
prismaClient: PrismaClient,
logQuery: !!process.env.LOG_QUERY,
+ replicaUrl: process.env.DATABASE_REPLICA_URL,
});
if (process.env.NODE_ENV !== 'production') {
@@ -292,7 +291,7 @@ function getClient() {
return prisma.client;
}
-const client = globalThis[PRISMA] || getClient();
+const client: PrismaClient = globalThis[PRISMA] || getClient();
export default {
client,
diff --git a/src/queries/prisma/link.ts b/src/queries/prisma/link.ts
index ea46023cb..95e202b04 100644
--- a/src/queries/prisma/link.ts
+++ b/src/queries/prisma/link.ts
@@ -1,12 +1,12 @@
-import { Prisma, Link } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import prisma from '@/lib/prisma';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { QueryFilters } from '@/lib/types';
-export async function findLink(criteria: Prisma.LinkFindUniqueArgs): Promise {
+export async function findLink(criteria: Prisma.LinkFindUniqueArgs) {
return prisma.client.link.findUnique(criteria);
}
-export async function getLink(linkId: string): Promise {
+export async function getLink(linkId: string) {
return findLink({
where: {
id: linkId,
@@ -14,10 +14,7 @@ export async function getLink(linkId: string): Promise {
});
}
-export async function getLinks(
- criteria: Prisma.LinkFindManyArgs,
- filters: QueryFilters = {},
-): Promise> {
+export async function getLinks(criteria: Prisma.LinkFindManyArgs, filters: QueryFilters = {}) {
const { search } = filters;
const { getSearchParameters, pagedQuery } = prisma;
@@ -33,10 +30,7 @@ export async function getLinks(
return pagedQuery('link', { ...criteria, where }, filters);
}
-export async function getUserLinks(
- userId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getUserLinks(userId: string, filters?: QueryFilters) {
return getLinks(
{
where: {
@@ -48,10 +42,7 @@ export async function getUserLinks(
);
}
-export async function getTeamLinks(
- teamId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getTeamLinks(teamId: string, filters?: QueryFilters) {
return getLinks(
{
where: {
@@ -62,14 +53,14 @@ export async function getTeamLinks(
);
}
-export async function createLink(data: Prisma.LinkUncheckedCreateInput): Promise {
+export async function createLink(data: Prisma.LinkUncheckedCreateInput) {
return prisma.client.link.create({ data });
}
-export async function updateLink(linkId: string, data: any): Promise {
+export async function updateLink(linkId: string, data: any) {
return prisma.client.link.update({ where: { id: linkId }, data });
}
-export async function deleteLink(linkId: string): Promise {
+export async function deleteLink(linkId: string) {
return prisma.client.link.delete({ where: { id: linkId } });
}
diff --git a/src/queries/prisma/pixel.ts b/src/queries/prisma/pixel.ts
index a68c53001..36efe01d1 100644
--- a/src/queries/prisma/pixel.ts
+++ b/src/queries/prisma/pixel.ts
@@ -1,12 +1,12 @@
-import { Prisma, Pixel } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import prisma from '@/lib/prisma';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { QueryFilters } from '@/lib/types';
-export async function findPixel(criteria: Prisma.PixelFindUniqueArgs): Promise {
+export async function findPixel(criteria: Prisma.PixelFindUniqueArgs) {
return prisma.client.pixel.findUnique(criteria);
}
-export async function getPixel(pixelId: string): Promise {
+export async function getPixel(pixelId: string) {
return findPixel({
where: {
id: pixelId,
@@ -14,10 +14,7 @@ export async function getPixel(pixelId: string): Promise {
});
}
-export async function getPixels(
- criteria: Prisma.PixelFindManyArgs,
- filters: QueryFilters = {},
-): Promise> {
+export async function getPixels(criteria: Prisma.PixelFindManyArgs, filters: QueryFilters = {}) {
const { search } = filters;
const where: Prisma.PixelWhereInput = {
@@ -28,10 +25,7 @@ export async function getPixels(
return prisma.pagedQuery('pixel', { ...criteria, where }, filters);
}
-export async function getUserPixels(
- userId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getUserPixels(userId: string, filters?: QueryFilters) {
return getPixels(
{
where: {
@@ -42,10 +36,7 @@ export async function getUserPixels(
);
}
-export async function getTeamPixels(
- teamId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getTeamPixels(teamId: string, filters?: QueryFilters) {
return getPixels(
{
where: {
@@ -56,14 +47,14 @@ export async function getTeamPixels(
);
}
-export async function createPixel(data: Prisma.PixelUncheckedCreateInput): Promise {
+export async function createPixel(data: Prisma.PixelUncheckedCreateInput) {
return prisma.client.pixel.create({ data });
}
-export async function updatePixel(pixelId: string, data: any): Promise {
+export async function updatePixel(pixelId: string, data: any) {
return prisma.client.pixel.update({ where: { id: pixelId }, data });
}
-export async function deletePixel(pixelId: string): Promise {
+export async function deletePixel(pixelId: string) {
return prisma.client.pixel.delete({ where: { id: pixelId } });
}
diff --git a/src/queries/prisma/report.ts b/src/queries/prisma/report.ts
index 322193d26..c612864d3 100644
--- a/src/queries/prisma/report.ts
+++ b/src/queries/prisma/report.ts
@@ -1,13 +1,13 @@
-import { Prisma, Report } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import prisma from '@/lib/prisma';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { QueryFilters } from '@/lib/types';
import ReportFindManyArgs = Prisma.ReportFindManyArgs;
-async function findReport(criteria: Prisma.ReportFindUniqueArgs): Promise {
+async function findReport(criteria: Prisma.ReportFindUniqueArgs) {
return prisma.client.report.findUnique(criteria);
}
-export async function getReport(reportId: string): Promise {
+export async function getReport(reportId: string) {
return findReport({
where: {
id: reportId,
@@ -15,10 +15,7 @@ export async function getReport(reportId: string): Promise {
});
}
-export async function getReports(
- criteria: ReportFindManyArgs,
- filters: QueryFilters = {},
-): Promise> {
+export async function getReports(criteria: ReportFindManyArgs, filters: QueryFilters = {}) {
const { search } = filters;
const where: Prisma.ReportWhereInput = {
@@ -48,10 +45,7 @@ export async function getReports(
return prisma.pagedQuery('report', { ...criteria, where }, filters);
}
-export async function getUserReports(
- userId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getUserReports(userId: string, filters?: QueryFilters) {
return getReports(
{
where: {
@@ -70,10 +64,7 @@ export async function getUserReports(
);
}
-export async function getWebsiteReports(
- websiteId: string,
- filters: QueryFilters = {},
-): Promise> {
+export async function getWebsiteReports(websiteId: string, filters: QueryFilters = {}) {
return getReports(
{
where: {
@@ -84,14 +75,14 @@ export async function getWebsiteReports(
);
}
-export async function createReport(data: Prisma.ReportUncheckedCreateInput): Promise {
+export async function createReport(data: Prisma.ReportUncheckedCreateInput) {
return prisma.client.report.create({ data });
}
-export async function updateReport(reportId: string, data: any): Promise {
+export async function updateReport(reportId: string, data: any) {
return prisma.client.report.update({ where: { id: reportId }, data });
}
-export async function deleteReport(reportId: string): Promise {
+export async function deleteReport(reportId: string) {
return prisma.client.report.delete({ where: { id: reportId } });
}
diff --git a/src/queries/prisma/segment.ts b/src/queries/prisma/segment.ts
index 60c64b3a2..f5507a4bb 100644
--- a/src/queries/prisma/segment.ts
+++ b/src/queries/prisma/segment.ts
@@ -1,12 +1,12 @@
import prisma from '@/lib/prisma';
-import { Prisma, Segment } from '@/generated/prisma/client';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { Prisma } from '@/generated/prisma/client';
+import { QueryFilters } from '@/lib/types';
-async function findSegment(criteria: Prisma.SegmentFindUniqueArgs): Promise {
- return prisma.client.Segment.findUnique(criteria);
+async function findSegment(criteria: Prisma.SegmentFindUniqueArgs) {
+ return prisma.client.segment.findUnique(criteria);
}
-export async function getSegment(segmentId: string): Promise {
+export async function getSegment(segmentId: string) {
return findSegment({
where: {
id: segmentId,
@@ -14,10 +14,7 @@ export async function getSegment(segmentId: string): Promise {
});
}
-export async function getSegments(
- criteria: Prisma.SegmentFindManyArgs,
- filters: QueryFilters,
-): Promise> {
+export async function getSegments(criteria: Prisma.SegmentFindManyArgs, filters: QueryFilters) {
const { search } = filters;
const { getSearchParameters, pagedQuery } = prisma;
@@ -33,17 +30,13 @@ export async function getSegments(
return pagedQuery('segment', { ...criteria, where }, filters);
}
-export async function getWebsiteSegment(websiteId: string, segmentId: string): Promise {
- return prisma.client.Segment.findFirst({
+export async function getWebsiteSegment(websiteId: string, segmentId: string) {
+ return prisma.client.segment.findFirst({
where: { id: segmentId, websiteId },
});
}
-export async function getWebsiteSegments(
- websiteId: string,
- type: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getWebsiteSegments(websiteId: string, type: string, filters?: QueryFilters) {
return getSegments(
{
where: {
@@ -55,17 +48,14 @@ export async function getWebsiteSegments(
);
}
-export async function createSegment(data: Prisma.SegmentUncheckedCreateInput): Promise {
- return prisma.client.Segment.create({ data });
+export async function createSegment(data: Prisma.SegmentUncheckedCreateInput) {
+ return prisma.client.segment.create({ data });
}
-export async function updateSegment(
- SegmentId: string,
- data: Prisma.SegmentUpdateInput,
-): Promise {
- return prisma.client.Segment.update({ where: { id: SegmentId }, data });
+export async function updateSegment(SegmentId: string, data: Prisma.SegmentUpdateInput) {
+ return prisma.client.segment.update({ where: { id: SegmentId }, data });
}
-export async function deleteSegment(SegmentId: string): Promise {
- return prisma.client.Segment.delete({ where: { id: SegmentId } });
+export async function deleteSegment(SegmentId: string) {
+ return prisma.client.segment.delete({ where: { id: SegmentId } });
}
diff --git a/src/queries/prisma/team.ts b/src/queries/prisma/team.ts
index b342c9554..64ae0ec88 100644
--- a/src/queries/prisma/team.ts
+++ b/src/queries/prisma/team.ts
@@ -9,7 +9,10 @@ export async function findTeam(criteria: Prisma.TeamFindUniqueArgs): Promise {
const { includeMembers } = options;
return findTeam({
@@ -129,11 +132,9 @@ export async function updateTeam(teamId: string, data: Prisma.TeamUpdateInput):
});
}
-export async function deleteTeam(
- teamId: string,
-): Promise> {
+export async function deleteTeam(teamId: string) {
const { client, transaction } = prisma;
- const cloudMode = !!process.env.CLOUD_URL;
+ const cloudMode = !!process.env.CLOUD_MODE;
if (cloudMode) {
return transaction([
diff --git a/src/queries/prisma/teamUser.ts b/src/queries/prisma/teamUser.ts
index 3f9d9fcd0..d7c3807ca 100644
--- a/src/queries/prisma/teamUser.ts
+++ b/src/queries/prisma/teamUser.ts
@@ -1,14 +1,14 @@
import { uuid } from '@/lib/crypto';
-import { Prisma, TeamUser } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import prisma from '@/lib/prisma';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { QueryFilters } from '@/lib/types';
import TeamUserFindManyArgs = Prisma.TeamUserFindManyArgs;
-export async function findTeamUser(criteria: Prisma.TeamUserFindUniqueArgs): Promise {
+export async function findTeamUser(criteria: Prisma.TeamUserFindUniqueArgs) {
return prisma.client.teamUser.findUnique(criteria);
}
-export async function getTeamUser(teamId: string, userId: string): Promise {
+export async function getTeamUser(teamId: string, userId: string) {
return prisma.client.teamUser.findFirst({
where: {
teamId,
@@ -17,10 +17,7 @@ export async function getTeamUser(teamId: string, userId: string): Promise> {
+export async function getTeamUsers(criteria: TeamUserFindManyArgs, filters?: QueryFilters) {
const { search } = filters;
const where: Prisma.TeamUserWhereInput = {
@@ -38,11 +35,7 @@ export async function getTeamUsers(
);
}
-export async function createTeamUser(
- userId: string,
- teamId: string,
- role: string,
-): Promise {
+export async function createTeamUser(userId: string, teamId: string, role: string) {
return prisma.client.teamUser.create({
data: {
id: uuid(),
@@ -53,10 +46,7 @@ export async function createTeamUser(
});
}
-export async function updateTeamUser(
- teamUserId: string,
- data: Prisma.TeamUserUpdateInput,
-): Promise {
+export async function updateTeamUser(teamUserId: string, data: Prisma.TeamUserUpdateInput) {
return prisma.client.teamUser.update({
where: {
id: teamUserId,
@@ -65,7 +55,7 @@ export async function updateTeamUser(
});
}
-export async function deleteTeamUser(teamId: string, userId: string): Promise {
+export async function deleteTeamUser(teamId: string, userId: string) {
return prisma.client.teamUser.deleteMany({
where: {
teamId,
diff --git a/src/queries/prisma/user.ts b/src/queries/prisma/user.ts
index a1360efe2..c599e3866 100644
--- a/src/queries/prisma/user.ts
+++ b/src/queries/prisma/user.ts
@@ -1,7 +1,7 @@
-import { Prisma, User } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import { ROLES } from '@/lib/constants';
import prisma from '@/lib/prisma';
-import { PageResult, Role, QueryFilters } from '@/lib/types';
+import { Role, QueryFilters } from '@/lib/types';
import { getRandomChars } from '@/lib/generate';
import UserFindManyArgs = Prisma.UserFindManyArgs;
@@ -10,10 +10,7 @@ export interface GetUserOptions {
showDeleted?: boolean;
}
-async function findUser(
- criteria: Prisma.UserFindUniqueArgs,
- options: GetUserOptions = {},
-): Promise {
+async function findUser(criteria: Prisma.UserFindUniqueArgs, options: GetUserOptions = {}) {
const { includePassword = false, showDeleted = false } = options;
return prisma.client.user.findUnique({
@@ -47,10 +44,7 @@ export async function getUserByUsername(username: string, options: GetUserOption
return findUser({ where: { username } }, options);
}
-export async function getUsers(
- criteria: UserFindManyArgs,
- filters: QueryFilters = {},
-): Promise> {
+export async function getUsers(criteria: UserFindManyArgs, filters: QueryFilters = {}) {
const { search } = filters;
const where: Prisma.UserWhereInput = {
@@ -78,11 +72,7 @@ export async function createUser(data: {
username: string;
password: string;
role: Role;
-}): Promise<{
- id: string;
- username: string;
- role: string;
-}> {
+}) {
return prisma.client.user.create({
data,
select: {
@@ -93,7 +83,7 @@ export async function createUser(data: {
});
}
-export async function updateUser(userId: string, data: Prisma.UserUpdateInput): Promise {
+export async function updateUser(userId: string, data: Prisma.UserUpdateInput) {
return prisma.client.user.update({
where: {
id: userId,
@@ -108,21 +98,9 @@ export async function updateUser(userId: string, data: Prisma.UserUpdateInput):
});
}
-export async function deleteUser(
- userId: string,
-): Promise<
- [
- Prisma.BatchPayload,
- Prisma.BatchPayload,
- Prisma.BatchPayload,
- Prisma.BatchPayload,
- Prisma.BatchPayload,
- Prisma.BatchPayload,
- User,
- ]
-> {
+export async function deleteUser(userId: string) {
const { client, transaction } = prisma;
- const cloudMode = !!process.env.CLOUD_URL;
+ const cloudMode = !!process.env.CLOUD_MODE;
const websites = await client.website.findMany({
where: { userId },
diff --git a/src/queries/prisma/website.ts b/src/queries/prisma/website.ts
index 6a0c0913c..b1a762b90 100644
--- a/src/queries/prisma/website.ts
+++ b/src/queries/prisma/website.ts
@@ -1,10 +1,10 @@
-import { Prisma, Website } from '@/generated/prisma/client';
+import { Prisma } from '@/generated/prisma/client';
import redis from '@/lib/redis';
import prisma from '@/lib/prisma';
-import { PageResult, QueryFilters } from '@/lib/types';
+import { QueryFilters } from '@/lib/types';
import { ROLES } from '@/lib/constants';
-export async function findWebsite(criteria: Prisma.WebsiteFindUniqueArgs): Promise {
+export async function findWebsite(criteria: Prisma.WebsiteFindUniqueArgs) {
return prisma.client.website.findUnique(criteria);
}
@@ -25,10 +25,7 @@ export async function getSharedWebsite(shareId: string) {
});
}
-export async function getWebsites(
- criteria: Prisma.WebsiteFindManyArgs,
- filters: QueryFilters,
-): Promise> {
+export async function getWebsites(criteria: Prisma.WebsiteFindManyArgs, filters: QueryFilters) {
const { search } = filters;
const { getSearchParameters, pagedQuery } = prisma;
@@ -46,10 +43,7 @@ export async function getWebsites(
return pagedQuery('website', { ...criteria, where }, filters);
}
-export async function getAllUserWebsitesIncludingTeamOwner(
- userId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getAllUserWebsitesIncludingTeamOwner(userId: string, filters?: QueryFilters) {
return getWebsites(
{
where: {
@@ -76,10 +70,7 @@ export async function getAllUserWebsitesIncludingTeamOwner(
);
}
-export async function getUserWebsites(
- userId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getUserWebsites(userId: string, filters?: QueryFilters) {
return getWebsites(
{
where: {
@@ -101,10 +92,7 @@ export async function getUserWebsites(
);
}
-export async function getTeamWebsites(
- teamId: string,
- filters?: QueryFilters,
-): Promise> {
+export async function getTeamWebsites(teamId: string, filters?: QueryFilters) {
return getWebsites(
{
where: {
@@ -125,7 +113,7 @@ export async function getTeamWebsites(
export async function createWebsite(
data: Prisma.WebsiteCreateInput | Prisma.WebsiteUncheckedCreateInput,
-): Promise {
+) {
return prisma.client.website.create({
data,
});
@@ -134,7 +122,7 @@ export async function createWebsite(
export async function updateWebsite(
websiteId: string,
data: Prisma.WebsiteUpdateInput | Prisma.WebsiteUncheckedUpdateInput,
-): Promise {
+) {
return prisma.client.website.update({
where: {
id: websiteId,
@@ -143,11 +131,9 @@ export async function updateWebsite(
});
}
-export async function resetWebsite(
- websiteId: string,
-): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
+export async function resetWebsite(websiteId: string) {
const { client, transaction } = prisma;
- const cloudMode = !!process.env.CLOUD_URL;
+ const cloudMode = !!process.env.CLOUD_MODE;
return transaction([
client.eventData.deleteMany({
@@ -177,11 +163,9 @@ export async function resetWebsite(
});
}
-export async function deleteWebsite(
- websiteId: string,
-): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> {
+export async function deleteWebsite(websiteId: string) {
const { client, transaction } = prisma;
- const cloudMode = !!process.env.CLOUD_URL;
+ const cloudMode = !!process.env.CLOUD_MODE;
return transaction([
client.eventData.deleteMany({