Skip to content

Commit

Permalink
Create default segments for normal tenants (#889)
Browse files Browse the repository at this point in the history
  • Loading branch information
sausage-todd authored May 23, 2023
1 parent af6e878 commit 59d80cf
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 7 deletions.
Empty file.
4 changes: 2 additions & 2 deletions backend/src/database/migrations/V1683110675__segments.sql
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ CREATE TABLE public."memberSegments" (
"memberId" uuid NOT NULL,
"segmentId" uuid NOT NULL,
"tenantId" uuid NOT NULL,
"createdAt" timestamp with time zone NOT NULL,
"createdAt" timestamp with time zone NOT NULL default now(),
foreign key ("tenantId") references tenants (id),
foreign key ("segmentId") references segments (id),
foreign key ("memberId") references members (id),
Expand All @@ -67,7 +67,7 @@ CREATE TABLE public."organizationSegments" (
"organizationId" uuid NOT NULL,
"segmentId" uuid NOT NULL,
"tenantId" uuid NOT NULL,
"createdAt" timestamp with time zone NOT NULL,
"createdAt" timestamp with time zone NOT NULL default now(),
foreign key ("tenantId") references tenants (id),
foreign key ("segmentId") references segments (id),
foreign key ("organizationId") references organizations (id),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@

INSERT INTO segments
(id, name, "parentName", "grandparentName", slug, "parentSlug", "grandparentSlug", description, "sourceId", "sourceParentId", "tenantId")
SELECT
-- this thing generates a valid uuidv4 without `uuid-ossp` extension: https://stackoverflow.com/a/21327318
uuid_in(overlay(overlay(md5(random()::text || ':' || random()::text) placing '4' from 13) placing to_hex(floor(random()*(11-8+1) + 8)::int)::text from 17)::cstring),
'Default', -- name
'Default', -- parentName
'Default', -- grandparentName
'default', -- slug
'default', -- parentSlug
'default', -- grandparentSlug
NULL, -- description
NULL, -- sourceId
NULL, -- sourceParentId
t.id -- tenantId
FROM tenants t
LEFT JOIN segments s ON s."tenantId" = t.id
WHERE s.id IS NULL;

UPDATE activities SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = activities."tenantId";
UPDATE integrations SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = integrations."tenantId";
UPDATE conversations SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = conversations."tenantId";
UPDATE tags SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = tags."tenantId";
UPDATE tasks SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = tasks."tenantId";
UPDATE reports SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = reports."tenantId";
UPDATE widgets SET "segmentId" = s.id FROM segments s WHERE s."tenantId" = widgets."tenantId";

INSERT INTO "memberSegments" ("memberId", "segmentId", "tenantId")
SELECT
m.id,
s.id,
m."tenantId"
FROM members m
JOIN segments s ON s."tenantId" = m."tenantId";

INSERT INTO "organizationSegments" ("organizationId", "segmentId", "tenantId")
SELECT
o.id,
s.id,
o."tenantId"
FROM organizations o
JOIN segments s ON s."tenantId" = o."tenantId";

UPDATE "memberToMerge" mtm
SET "segmentId" = s.id
FROM segments s
JOIN "memberSegments" ms ON ms."segmentId" = s.id
WHERE ms."memberId" = mtm."memberId";

UPDATE "memberNoMerge" mnm
SET "segmentId" = s.id
FROM segments s
JOIN "memberSegments" ms ON ms."segmentId" = s.id
WHERE ms."memberId" = mnm."memberId";
12 changes: 10 additions & 2 deletions backend/src/database/models/segment.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DataTypes } from 'sequelize'

export default (sequelize) => {
const activity = sequelize.define(
const segment = sequelize.define(
'segment',
{
id: {
Expand Down Expand Up @@ -59,5 +59,13 @@ export default (sequelize) => {
},
)

return activity
segment.associate = (models) => {
models.segment.belongsTo(models.tenant, {
foreignKey: {
allowNull: false,
},
})
}

return segment
}
2 changes: 0 additions & 2 deletions backend/src/services/activityService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ import { logExecutionTime } from '../utils/logging'
import { sendNewActivityNodeSQSMessage } from '../serverless/utils/nodeWorkerSQS'
import { LoggingBase } from './loggingBase'
import MemberAttributeSettingsRepository from '../database/repositories/memberAttributeSettingsRepository'
import SettingsRepository from '../database/repositories/settingsRepository'
import SettingsService from './settingsService'
import { mapUsernameToIdentities } from '../database/repositories/types/memberTypes'
import SegmentRepository from '../database/repositories/segmentRepository'
import SegmentService from './segmentService'
Expand Down
1 change: 0 additions & 1 deletion backend/src/services/tenantService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import TaskRepository from '../database/repositories/taskRepository'
import isFeatureEnabled from '../feature-flags/isFeatureEnabled'
import { FeatureFlag } from '../types/common'
import SegmentRepository from '../database/repositories/segmentRepository'
import SegmentService from './segmentService'
import { SegmentStatus } from '../types/segmentTypes'

export default class TenantService {
Expand Down

0 comments on commit 59d80cf

Please sign in to comment.