@@ -807,37 +807,37 @@ class OrganizationRepository {
807807 } ,
808808 options : IRepositoryOptions ,
809809 ) : Promise < number > {
810+ const organizationsJoin = displayNameFilter
811+ ? `JOIN organizations o1 ON o1.id = otm."organizationId"
812+ JOIN organizations o2 ON o2.id = otm."toMergeId"`
813+ : ''
814+
810815 const result = await options . database . sequelize . query (
811816 `
812- WITH
813- cte AS (
814- SELECT
815- Greatest(Hashtext(Concat(org.id, otm."toMergeId")), Hashtext(Concat(otm."toMergeId", org.id))) as hash,
816- org.id,
817- otm."toMergeId",
818- org."createdAt",
819- otm."similarity"
820- FROM organizations org
821- JOIN "organizationToMerge" otm ON org.id = otm."organizationId"
822- JOIN "organizationSegmentsAgg" os1 ON os1."organizationId" = org.id
823- JOIN "organizationSegmentsAgg" os2 ON os2."organizationId" = otm."toMergeId"
824- join organizations o1 on o1.id = org.id
825- join organizations o2 on o2.id = otm."toMergeId"
826- LEFT JOIN "mergeActions" ma
827- ON ma.type = :mergeActionType
828- AND (
829- (ma."primaryId" = org.id AND ma."secondaryId" = otm."toMergeId")
830- OR (ma."primaryId" = otm."toMergeId" AND ma."secondaryId" = org.id)
831- )
832- WHERE os1."segmentId" IN (:segmentIds)
833- AND os2."segmentId" IN (:segmentIds)
834- AND (ma.id IS NULL OR ma.state = :mergeActionStatus)
835- ${ organizationFilter }
836- ${ similarityFilter }
837- ${ displayNameFilter }
817+ SELECT COUNT(DISTINCT Greatest(
818+ Hashtext(Concat(otm."organizationId", otm."toMergeId")),
819+ Hashtext(Concat(otm."toMergeId", otm."organizationId"))
820+ )) AS total_count
821+ FROM "organizationToMerge" otm
822+ ${ organizationsJoin }
823+ LEFT JOIN "mergeActions" ma
824+ ON ma.type = :mergeActionType
825+ AND (
826+ (ma."primaryId" = otm."organizationId" AND ma."secondaryId" = otm."toMergeId")
827+ OR (ma."primaryId" = otm."toMergeId" AND ma."secondaryId" = otm."organizationId")
828+ )
829+ WHERE EXISTS (
830+ SELECT 1 FROM "organizationSegmentsAgg" os1
831+ WHERE os1."organizationId" = otm."organizationId" AND os1."segmentId" IN (:segmentIds)
832+ )
833+ AND EXISTS (
834+ SELECT 1 FROM "organizationSegmentsAgg" os2
835+ WHERE os2."organizationId" = otm."toMergeId" AND os2."segmentId" IN (:segmentIds)
838836 )
839- SELECT COUNT(DISTINCT hash) AS total_count
840- FROM cte
837+ AND (ma.id IS NULL OR ma.state = :mergeActionStatus)
838+ ${ organizationFilter }
839+ ${ similarityFilter }
840+ ${ displayNameFilter }
841841 ` ,
842842 {
843843 replacements,
@@ -924,32 +924,39 @@ class OrganizationRepository {
924924 `WITH
925925 cte AS (
926926 SELECT
927- Greatest(Hashtext(Concat(org.id , otm."toMergeId")), Hashtext(Concat(otm."toMergeId", org.id ))) as hash,
928- org. id,
927+ Greatest(Hashtext(Concat(otm."organizationId" , otm."toMergeId")), Hashtext(Concat(otm."toMergeId", otm."organizationId" ))) as hash,
928+ otm."organizationId" as id,
929929 otm."toMergeId",
930- org ."createdAt",
930+ o1 ."createdAt",
931931 otm."similarity",
932932 o1."displayName" as "primaryDisplayName",
933933 o1.logo as "primaryLogo",
934934 o2."displayName" as "secondaryDisplayName",
935935 o2.logo as "secondaryLogo",
936- os1."segmentId" as "primarySegmentId",
937- os2."segmentId" as "secondarySegmentId"
938- FROM organizations org
939- JOIN "organizationToMerge" otm ON org.id = otm."organizationId"
940- JOIN "organizationSegmentsAgg" os1 ON os1."organizationId" = org.id
941- JOIN "organizationSegmentsAgg" os2 ON os2."organizationId" = otm."toMergeId"
942- join organizations o1 on o1.id = org.id
943- join organizations o2 on o2.id = otm."toMergeId"
936+ (SELECT os1."segmentId" FROM "organizationSegmentsAgg" os1
937+ WHERE os1."organizationId" = otm."organizationId" AND os1."segmentId" IN (:segmentIds)
938+ LIMIT 1) as "primarySegmentId",
939+ (SELECT os2."segmentId" FROM "organizationSegmentsAgg" os2
940+ WHERE os2."organizationId" = otm."toMergeId" AND os2."segmentId" IN (:segmentIds)
941+ LIMIT 1) as "secondarySegmentId"
942+ FROM "organizationToMerge" otm
943+ JOIN organizations o1 ON o1.id = otm."organizationId"
944+ JOIN organizations o2 ON o2.id = otm."toMergeId"
944945 LEFT JOIN "mergeActions" ma
945946 ON ma.type = :mergeActionType
946947 AND (
947- (ma."primaryId" = org.id AND ma."secondaryId" = otm."toMergeId")
948- OR (ma."primaryId" = otm."toMergeId" AND ma."secondaryId" = org.id )
948+ (ma."primaryId" = otm."organizationId" AND ma."secondaryId" = otm."toMergeId")
949+ OR (ma."primaryId" = otm."toMergeId" AND ma."secondaryId" = otm."organizationId" )
949950 )
950- WHERE os1."segmentId" IN (:segmentIds)
951- AND os2."segmentId" IN (:segmentIds)
952- AND (ma.id IS NULL OR ma.state = :mergeActionStatus)
951+ WHERE EXISTS (
952+ SELECT 1 FROM "organizationSegmentsAgg" os1
953+ WHERE os1."organizationId" = otm."organizationId" AND os1."segmentId" IN (:segmentIds)
954+ )
955+ AND EXISTS (
956+ SELECT 1 FROM "organizationSegmentsAgg" os2
957+ WHERE os2."organizationId" = otm."toMergeId" AND os2."segmentId" IN (:segmentIds)
958+ )
959+ AND (ma.id IS NULL OR ma.state = :mergeActionStatus)
953960 ${ organizationFilter }
954961 ${ similarityFilter }
955962 ${ displayNameFilter }
0 commit comments