diff --git a/prisma/migrations/15_add_share/migration.sql b/prisma/migrations/15_add_share/migration.sql deleted file mode 100644 index 2a867bb53..000000000 --- a/prisma/migrations/15_add_share/migration.sql +++ /dev/null @@ -1,41 +0,0 @@ --- CreateTable -CREATE TABLE "share" ( - "share_id" UUID NOT NULL, - "entity_id" UUID NOT NULL, - "share_type" INTEGER NOT NULL, - "share_code" VARCHAR(50), - "parameters" JSONB NOT NULL, - "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMPTZ(6), - - CONSTRAINT "share_pkey" PRIMARY KEY ("share_id") -); - --- CreateIndex -CREATE UNIQUE INDEX "share_share_id_key" ON "share"("share_id"); - --- CreateIndex -CREATE UNIQUE INDEX "share_share_code_key" ON "share"("share_code"); - --- CreateIndex -CREATE INDEX "share_entity_id_idx" ON "share"("entity_id"); - --- MigrateData -INSERT INTO "share" (share_id, entity_id, share_type, share_code, parameters, created_at) -SELECT gen_random_uuid(), - website_id, - 1, - share_id, - '{}'::jsonb, - now() -FROM "website" -WHERE share_id IS NOT NULL; - --- DropIndex -DROP INDEX "website_share_id_idx"; - --- DropIndex -DROP INDEX "website_share_id_key"; - --- AlterTable -ALTER TABLE "website" DROP COLUMN "share_id"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e0600db0b..aeb11648d 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -67,6 +67,7 @@ model Website { id String @id @unique @map("website_id") @db.Uuid name String @db.VarChar(100) domain String? @db.VarChar(500) + shareId String? @unique @map("share_id") @db.VarChar(50) resetAt DateTime? @map("reset_at") @db.Timestamptz(6) userId String? @map("user_id") @db.Uuid teamId String? @map("team_id") @db.Uuid @@ -87,6 +88,7 @@ model Website { @@index([userId]) @@index([teamId]) @@index([createdAt]) + @@index([shareId]) @@index([createdBy]) @@map("website") } @@ -314,16 +316,3 @@ model Pixel { @@index([createdAt]) @@map("pixel") } - -model Share { - id String @id() @unique() @map("share_id") @db.Uuid - entityId String @map("entity_id") @db.Uuid - shareType Int @map("share_type") @db.Integer - shareCode String? @unique @map("share_code") @db.VarChar(50) - parameters Json - createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) - updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6) - - @@index([entityId]) - @@map("share") -} diff --git a/src/app/api/reports/attribution/route.ts b/src/app/api/reports/attribution/route.ts index bd7d86dc7..ab9b1ddbc 100644 --- a/src/app/api/reports/attribution/route.ts +++ b/src/app/api/reports/attribution/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); const data = await getAttribution(websiteId, parameters as AttributionParameters, filters); diff --git a/src/app/api/reports/breakdown/route.ts b/src/app/api/reports/breakdown/route.ts index 3c5931458..a06636c74 100644 --- a/src/app/api/reports/breakdown/route.ts +++ b/src/app/api/reports/breakdown/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); const data = await getBreakdown(websiteId, parameters as BreakdownParameters, filters); diff --git a/src/app/api/reports/funnel/route.ts b/src/app/api/reports/funnel/route.ts index c13f6f1c8..f6e210293 100644 --- a/src/app/api/reports/funnel/route.ts +++ b/src/app/api/reports/funnel/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); const data = await getFunnel(websiteId, parameters as FunnelParameters, filters); diff --git a/src/app/api/reports/goal/route.ts b/src/app/api/reports/goal/route.ts index 3bd0415d6..db2aabcef 100644 --- a/src/app/api/reports/goal/route.ts +++ b/src/app/api/reports/goal/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); const data = await getGoal(websiteId, parameters as GoalParameters, filters); diff --git a/src/app/api/reports/retention/route.ts b/src/app/api/reports/retention/route.ts index d1a7d698b..5adf7bb85 100644 --- a/src/app/api/reports/retention/route.ts +++ b/src/app/api/reports/retention/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const filters = await getQueryFilters(body.filters, websiteId); - const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); const data = await getRetention(websiteId, parameters as RetentionParameters, filters); diff --git a/src/app/api/reports/revenue/route.ts b/src/app/api/reports/revenue/route.ts index 6a556612b..f4146b966 100644 --- a/src/app/api/reports/revenue/route.ts +++ b/src/app/api/reports/revenue/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); const data = await getRevenue(websiteId, parameters as RevenuParameters, filters); diff --git a/src/app/api/reports/utm/route.ts b/src/app/api/reports/utm/route.ts index 577fdab79..d4af4da06 100644 --- a/src/app/api/reports/utm/route.ts +++ b/src/app/api/reports/utm/route.ts @@ -18,8 +18,8 @@ export async function POST(request: Request) { return unauthorized(); } - const filters = await getQueryFilters(body.filters, websiteId); - const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); const data = { utm_source: [], diff --git a/src/app/api/websites/[websiteId]/event-data/events/route.ts b/src/app/api/websites/[websiteId]/event-data/events/route.ts index eb6ee6ed8..444afa273 100644 --- a/src/app/api/websites/[websiteId]/event-data/events/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/events/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventDataEvents(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/event-data/fields/route.ts b/src/app/api/websites/[websiteId]/event-data/fields/route.ts index bce6a977c..e034d9375 100644 --- a/src/app/api/websites/[websiteId]/event-data/fields/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/fields/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventDataFields(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/properties/route.ts b/src/app/api/websites/[websiteId]/event-data/properties/route.ts index 52d15cfbd..29719fb22 100644 --- a/src/app/api/websites/[websiteId]/event-data/properties/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/properties/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventDataProperties(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/stats/route.ts b/src/app/api/websites/[websiteId]/event-data/stats/route.ts index 042e989a4..1d1e76dff 100644 --- a/src/app/api/websites/[websiteId]/event-data/stats/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventDataStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/values/route.ts b/src/app/api/websites/[websiteId]/event-data/values/route.ts index 12e8f2dc0..ed01fb2b6 100644 --- a/src/app/api/websites/[websiteId]/event-data/values/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/values/route.ts @@ -30,7 +30,7 @@ export async function GET( } const { propertyName } = query; - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventDataValues(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/events/route.ts b/src/app/api/websites/[websiteId]/events/route.ts index 74ec3ece4..dfabb87fb 100644 --- a/src/app/api/websites/[websiteId]/events/route.ts +++ b/src/app/api/websites/[websiteId]/events/route.ts @@ -29,7 +29,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getWebsiteEvents(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/events/series/route.ts b/src/app/api/websites/[websiteId]/events/series/route.ts index 977e9c813..d5b925590 100644 --- a/src/app/api/websites/[websiteId]/events/series/route.ts +++ b/src/app/api/websites/[websiteId]/events/series/route.ts @@ -29,7 +29,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getEventStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/export/route.ts b/src/app/api/websites/[websiteId]/export/route.ts index eec81c6d4..f9749f34e 100644 --- a/src/app/api/websites/[websiteId]/export/route.ts +++ b/src/app/api/websites/[websiteId]/export/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const [events, pages, referrers, browsers, os, devices, countries] = await Promise.all([ getEventMetrics(websiteId, { type: 'event' }, filters), diff --git a/src/app/api/websites/[websiteId]/metrics/expanded/route.ts b/src/app/api/websites/[websiteId]/metrics/expanded/route.ts index d52c17736..7e6fbbfdf 100644 --- a/src/app/api/websites/[websiteId]/metrics/expanded/route.ts +++ b/src/app/api/websites/[websiteId]/metrics/expanded/route.ts @@ -37,7 +37,7 @@ export async function GET( } const { type, limit, offset, search } = query; - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); if (search) { filters[type] = `c.${search}`; diff --git a/src/app/api/websites/[websiteId]/metrics/route.ts b/src/app/api/websites/[websiteId]/metrics/route.ts index 12784adbe..2d0e6a600 100644 --- a/src/app/api/websites/[websiteId]/metrics/route.ts +++ b/src/app/api/websites/[websiteId]/metrics/route.ts @@ -37,7 +37,7 @@ export async function GET( } const { type, limit, offset, search } = query; - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); if (search) { filters[type] = `c.${search}`; diff --git a/src/app/api/websites/[websiteId]/pageviews/route.ts b/src/app/api/websites/[websiteId]/pageviews/route.ts index af59bce46..dc921bc0c 100644 --- a/src/app/api/websites/[websiteId]/pageviews/route.ts +++ b/src/app/api/websites/[websiteId]/pageviews/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const [pageviews, sessions] = await Promise.all([ getPageviewStats(websiteId, filters), diff --git a/src/app/api/websites/[websiteId]/session-data/properties/route.ts b/src/app/api/websites/[websiteId]/session-data/properties/route.ts index 2d8db1535..a0aed73ce 100644 --- a/src/app/api/websites/[websiteId]/session-data/properties/route.ts +++ b/src/app/api/websites/[websiteId]/session-data/properties/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getSessionDataProperties(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/session-data/values/route.ts b/src/app/api/websites/[websiteId]/session-data/values/route.ts index 7d06870ac..db7106548 100644 --- a/src/app/api/websites/[websiteId]/session-data/values/route.ts +++ b/src/app/api/websites/[websiteId]/session-data/values/route.ts @@ -29,7 +29,7 @@ export async function GET( } const { propertyName } = query; - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getSessionDataValues(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts b/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts index 41b766d03..3e70bea0a 100644 --- a/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts @@ -25,7 +25,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getSessionActivity(websiteId, sessionId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/route.ts b/src/app/api/websites/[websiteId]/sessions/route.ts index ed4757a1c..f344476c3 100644 --- a/src/app/api/websites/[websiteId]/sessions/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getWebsiteSessions(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/stats/route.ts b/src/app/api/websites/[websiteId]/sessions/stats/route.ts index 459830edf..74b4e5e80 100644 --- a/src/app/api/websites/[websiteId]/sessions/stats/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const metrics = await getWebsiteSessionStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/weekly/route.ts b/src/app/api/websites/[websiteId]/sessions/weekly/route.ts index b9ccf3ef0..f6dfd206b 100644 --- a/src/app/api/websites/[websiteId]/sessions/weekly/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/weekly/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getWeeklyTraffic(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index b7177b5d8..a96fa5b06 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); const data = await getWebsiteStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/values/route.ts b/src/app/api/websites/[websiteId]/values/route.ts index 172325e3f..c2c95b375 100644 --- a/src/app/api/websites/[websiteId]/values/route.ts +++ b/src/app/api/websites/[websiteId]/values/route.ts @@ -42,7 +42,7 @@ export async function GET( value: segment.name, })); } else { - const filters = await getQueryFilters(query, websiteId); + const filters = await getQueryFilters(query, websiteId, auth.user?.id); values = await getValues(websiteId, FILTER_COLUMNS[type], filters); } diff --git a/src/lib/constants.ts b/src/lib/constants.ts index bfc80a136..502a3df6f 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -95,13 +95,6 @@ export const EVENT_TYPE = { pixelEvent: 4, } as const; -export const ENTITY_TYPE = { - website: 1, - link: 2, - pixel: 3, - board: 4, -} as const; - export const DATA_TYPE = { string: 1, number: 2, diff --git a/src/lib/request.ts b/src/lib/request.ts index 7f9163cca..d6543b184 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -81,12 +81,12 @@ export function getRequestFilters(query: Record) { return result; } -export async function setWebsiteDate(websiteId: string, data: Record) { +export async function setWebsiteDate(websiteId: string, userId: string, data: Record) { const website = await fetchWebsite(websiteId); const cloudMode = !!process.env.CLOUD_MODE; if (cloudMode && website && !website.teamId) { - const account = await fetchAccount(website.userId); + const account = await fetchAccount(userId); if (!account?.hasSubscription) { data.startDate = maxDate(data.startDate, startOfMonth(subMonths(new Date(), 6))); @@ -103,12 +103,13 @@ export async function setWebsiteDate(websiteId: string, data: Record, websiteId?: string, + userId?: string, ): Promise { const dateRange = getRequestDateRange(params); const filters = getRequestFilters(params); if (websiteId) { - await setWebsiteDate(websiteId, dateRange); + await setWebsiteDate(websiteId, userId, dateRange); if (params.segment) { const segmentParams = (await getWebsiteSegment(websiteId, params.segment))