diff --git a/prisma/migrations/14_add_link_and_pixel/migration.sql b/prisma/migrations/14_add_link_and_pixel/migration.sql index 45320b03..29d9e300 100644 --- a/prisma/migrations/14_add_link_and_pixel/migration.sql +++ b/prisma/migrations/14_add_link_and_pixel/migration.sql @@ -71,3 +71,49 @@ CREATE INDEX "pixel_team_id_idx" ON "pixel"("team_id"); -- CreateIndex CREATE INDEX "pixel_created_at_idx" ON "pixel"("created_at"); + +-- DataMigration Funnel +DELETE FROM "report" WHERE type = 'funnel' and jsonb_array_length(parameters->'steps') = 1; +UPDATE "report" SET parameters = parameters - 'websiteId' - 'dateRange' - 'urls' WHERE type = 'funnel'; + +UPDATE "report" +SET parameters = jsonb_set( + parameters, + '{steps}', + ( + SELECT jsonb_agg( + CASE + WHEN step->>'type' = 'url' + THEN jsonb_set(step, '{type}', '"path"') + ELSE step + END + ) + FROM jsonb_array_elements(parameters->'steps') step + ) +) +WHERE type = 'funnel' + and parameters @> '{"steps":[{"type":"url"}]}'; + +-- DataMigration Goals +UPDATE "report" SET type = 'goal' WHERE type = 'goals'; + +INSERT INTO "report" (report_id, user_id, website_id, type, name, description, parameters, created_at, updated_at) +SELECT gen_random_uuid(), + user_id, + website_id, + 'goal', + concat(name, ' - ', elem ->> 'value'), + description, + jsonb_build_object( + 'type', CASE WHEN elem ->> 'type' = 'url' THEN 'path' + ELSE elem ->> 'type' END, + 'value', elem ->> 'value' + ) AS parameters, + created_at, + updated_at +FROM "report" +CROSS JOIN LATERAL jsonb_array_elements(parameters -> 'goals') elem +WHERE type = 'goal' + and elem ->> 'type' IN ('event', 'url'); + +DELETE FROM "report" WHERE type = 'goal' and parameters ? 'goals'; \ No newline at end of file diff --git a/src/components/icons.ts b/src/components/icons.ts index c96a27b6..287dc650 100644 --- a/src/components/icons.ts +++ b/src/components/icons.ts @@ -59,6 +59,7 @@ export { Funnel, Lightbulb, Lightning, + Location, Magnet, Money, Network, diff --git a/src/queries/sql/reports/getFunnel.ts b/src/queries/sql/reports/getFunnel.ts index abc0dab3..a56439db 100644 --- a/src/queries/sql/reports/getFunnel.ts +++ b/src/queries/sql/reports/getFunnel.ts @@ -32,14 +32,13 @@ async function relationalQuery( ): Promise { const { startDate, endDate, window, steps } = parameters; const { rawQuery, getAddIntervalQuery, parseFilters } = prisma; - const { levelOneQuery, levelQuery, sumQuery, params } = getFunnelQuery(steps, window); - const { filterQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({ ...filters, websiteId, startDate, endDate, }); + const { levelOneQuery, levelQuery, sumQuery, params } = getFunnelQuery(steps, window); function getFunnelQuery( steps: { type: string; value: string }[], diff --git a/src/queries/sql/reports/getGoal.ts b/src/queries/sql/reports/getGoal.ts index b00e362e..81ec80ab 100644 --- a/src/queries/sql/reports/getGoal.ts +++ b/src/queries/sql/reports/getGoal.ts @@ -48,15 +48,15 @@ async function relationalQuery( from website_event ${cohortQuery} ${joinSessionQuery} - where website_id = {websiteId:UUID} + where website_id = {{websiteId::uuid}} ${dateQuery} ${filterQuery} ) as total from website_event ${cohortQuery} ${joinSessionQuery} - where website_id = {websiteId:UUID} - and ${column} = {value:String} + where website_id = {{websiteId::uuid}} + and ${column} = {{value}} ${dateQuery} ${filterQuery} `, diff --git a/src/queries/sql/reports/getRevenue.ts b/src/queries/sql/reports/getRevenue.ts index f5c652aa..d73d90c2 100644 --- a/src/queries/sql/reports/getRevenue.ts +++ b/src/queries/sql/reports/getRevenue.ts @@ -75,7 +75,7 @@ async function relationalQuery( ` select session.country as name, - sum(r.revenue) value + sum(revenue) value from revenue join website_event on website_event.website_id = revenue.website_id