Skip to content

Commit 63c325b

Browse files
authored
Repair DirectorySync (#2645)
* migrations for directorysync * query interceptor
1 parent 0d6c4f3 commit 63c325b

10 files changed

Lines changed: 38 additions & 11 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- +goose Up
2+
-- drop index "directorymembership_directory_account_id_directory_group_id" from table: "directory_memberships"
3+
DROP INDEX "directorymembership_directory_account_id_directory_group_id";
4+
-- create index "directorymembership_directory_account_id_directory_group_id" to table: "directory_memberships"
5+
CREATE UNIQUE INDEX "directorymembership_directory_account_id_directory_group_id" ON "directory_memberships" ("directory_account_id", "directory_group_id") WHERE (removed_at IS NULL);
6+
7+
-- +goose Down
8+
-- reverse: create index "directorymembership_directory_account_id_directory_group_id" to table: "directory_memberships"
9+
DROP INDEX "directorymembership_directory_account_id_directory_group_id";
10+
-- reverse: drop index "directorymembership_directory_account_id_directory_group_id" from table: "directory_memberships"
11+
CREATE UNIQUE INDEX "directorymembership_directory_account_id_directory_group_id" ON "directory_memberships" ("directory_account_id", "directory_group_id");

db/migrations-goose-postgres/atlas.sum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
h1:x94pUKv95OWFoh4dw/OV5nFlMNw+yRJ3Mu9PjyE4Y/w=
1+
h1:oqCrggOTZtoGFcPdY+as7UG7lnf2sg77wM7PkIk+U1U=
22
20251229183203_init.sql h1:g/05irCXoqKFObJV2PPLuvDRqma+da41VPsZ5fXQgfE=
33
20251229183205_init_history.sql h1:P/q2kAHb8zfNMOWzYkKtPbOwoh9GdJUQljSNAiPEjYI=
44
20251231045229_workflow.sql h1:uUPRLO4yw2y//fPGeqIXRrL+fiEN1TRGkF4wHiqPaPk=
@@ -169,3 +169,4 @@ h1:x94pUKv95OWFoh4dw/OV5nFlMNw+yRJ3Mu9PjyE4Y/w=
169169
20260722075926_onboarding_nda_requests.sql h1:kosPtxSY+cr5wBw3WMxQw2AaGti9+U7rwoEUY8W2f9o=
170170
20260722075934_onboarding_nda_requests_history.sql h1:TMW32Y3URxni4DuxayWqhzRlhmsZtoMJFDluTQ4oCTU=
171171
20260723204917_assessment_name.sql h1:J002Q+6j44zTuY4HGN5eyRo56knOypAp2hNVGotiAIs=
172+
20260728193957_directorymembershipindex.sql h1:v0+GK6MFeTEDEEg8Px5FbjuXO9uU8dRdM8RrAntQKxs=
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Drop index "directorymembership_directory_account_id_directory_group_id" from table: "directory_memberships"
2+
DROP INDEX "directorymembership_directory_account_id_directory_group_id";
3+
-- Create index "directorymembership_directory_account_id_directory_group_id" to table: "directory_memberships"
4+
CREATE UNIQUE INDEX "directorymembership_directory_account_id_directory_group_id" ON "directory_memberships" ("directory_account_id", "directory_group_id") WHERE (removed_at IS NULL);

db/migrations/atlas.sum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
h1:XMCfgUNSf6uYufp56GudDQU9PuzjyBxuWFjlUdr2rVg=
1+
h1:a04+WwgE24iL/+xkgQFAWTOB6I4jqCVGDstOKumBs7I=
22
20251229183159_init.sql h1:3uf/ftr28zW8YUD9qAaY2GESQHC7pYmkhlI6oDWUCKU=
33
20251229183201_init_history.sql h1:1tFSeCDWvZgb2Ctw80C/s3tqVPNLADQw9fSDACzL8WA=
44
20251231045221_workflow.sql h1:5bLq4cHh2kxUV7xajK5bq5McKKpr88HmufYauTdsgUw=
@@ -169,3 +169,4 @@ h1:XMCfgUNSf6uYufp56GudDQU9PuzjyBxuWFjlUdr2rVg=
169169
20260722075902_onboarding_nda_requests.sql h1:jIGhCXYgFzvDeQez/DRRtVJrOwXWkURfQiM+8iCiNUE=
170170
20260722075914_onboarding_nda_requests_history.sql h1:h2Gq6sROKPreiAiM54UIjTHceGJacchauW0XDgUTDNo=
171171
20260723204906_assessment_name.sql h1:2yt7XqlG05AXHyzCje3SbjAzshIjeTW/77ANxnIp6/M=
172+
20260728193948_directorymembershipindex.sql h1:GMmB5LtkGz7WAmqILpbWGoqmZD1e8kq7eRcPyOrFs7Y=
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2f0d9744aceff8dd5f9b4ec024b9685fd9c6ff87c5cdfdf9f4b35ad12dea1283
1+
2f0d9744aceff8dd5f9b4ec024b9685fd9c6ff87c5cdfdf9f4b35ad12dea1283
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
577a95aa56d8b31312e981d2f797e7db6a530eff98cc811bea7737ccc4a4d9d5
1+
577a95aa56d8b31312e981d2f797e7db6a530eff98cc811bea7737ccc4a4d9d5

internal/ent/generated/migrate/schema.go

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/ent/interceptors/query.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func QueryLogger() ent.InterceptFunc {
2121
start := time.Now()
2222

2323
defer func() {
24-
logx.FromContext(ctx).Info().
24+
logx.FromContext(ctx).Debug().
2525
Str("duration", time.Since(start).String()).
2626
Str("schema", q.Type()).
2727
Msg("query duration")

internal/ent/schema/directorymembership.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"entgo.io/contrib/entgql"
77
"entgo.io/ent"
8+
"entgo.io/ent/dialect/entsql"
89
"entgo.io/ent/schema"
910
"entgo.io/ent/schema/field"
1011
"entgo.io/ent/schema/index"
@@ -215,6 +216,12 @@ func (DirectoryMembership) Indexes() []ent.Index {
215216
return []ent.Index{
216217
index.Fields("directory_account_id", "directory_group_id", "directory_sync_run_id").
217218
Unique(),
219+
// declaring the pair index ourselves keeps ent from adding its own fully-unique version
220+
// for the M2M through edges; the partial predicate limits uniqueness to active rows so
221+
// removed membership episodes can accumulate per (account, group) pair
222+
index.Fields("directory_account_id", "directory_group_id").
223+
Unique().
224+
Annotations(entsql.IndexWhere("removed_at is NULL")),
218225
index.Fields("directory_instance_id", "directory_account_id", "directory_group_id"),
219226
index.Fields("directory_sync_run_id"),
220227
index.Fields("integration_id", "directory_sync_run_id"),
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
62de8a38143f2b0a1928d89eaf8643ecc3136d68c8586f319bc61ebda29ca8ca
1+
62de8a38143f2b0a1928d89eaf8643ecc3136d68c8586f319bc61ebda29ca8ca

0 commit comments

Comments
 (0)