Skip to content

Commit 373849c

Browse files
authored
Merge pull request #4470 from communitybridge/revert-4469-feature/ecla-duplicates
Revert "[#4460] Feature/Corporate contributors dups"
2 parents a5c3d85 + 4717471 commit 373849c

File tree

1 file changed

+73
-100
lines changed

1 file changed

+73
-100
lines changed

cla-backend-go/signatures/repository.go

Lines changed: 73 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -4616,32 +4616,6 @@ func (repo repository) addAdditionalICLAMetaData(f logrus.Fields, intermediateRe
46164616
return finalResults, nil
46174617
}
46184618

4619-
func deduplicateSignatures(signatures []map[string]*dynamodb.AttributeValue) []map[string]*dynamodb.AttributeValue {
4620-
f := logrus.Fields{
4621-
"functionName": "v1.signatures.repository.deduplicateSignatures",
4622-
}
4623-
// Map to keep track of the latest unique signatures by SignatureReferenceID
4624-
uniqueSignatures := make(map[string]map[string]*dynamodb.AttributeValue)
4625-
for _, sig := range signatures {
4626-
log.WithFields(f).Debugf("processing signature: %+v", sig)
4627-
refID := sig["signature_reference_id"].S
4628-
existingSig, exists := uniqueSignatures[*refID]
4629-
if !exists || (sig["date_created"] != nil && existingSig["date_created"] != nil && *sig["date_created"].S > *existingSig["date_created"].S) {
4630-
uniqueSignatures[*refID] = sig
4631-
} else if !exists || (sig["date_created"] != nil && existingSig["date_created"] == nil) {
4632-
uniqueSignatures[*refID] = sig
4633-
} else if !exists || (sig["date_created"] == nil && existingSig["date_created"] != nil) {
4634-
uniqueSignatures[*refID] = sig
4635-
}
4636-
}
4637-
// Convert the map back to a slice
4638-
var uniqueSignatureList []map[string]*dynamodb.AttributeValue
4639-
for _, sig := range uniqueSignatures {
4640-
uniqueSignatureList = append(uniqueSignatureList, sig)
4641-
}
4642-
return uniqueSignatureList
4643-
}
4644-
46454619
func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, claGroupID string, companyID *string, pageSize *int64, nextKey *string, searchTerm *string) (*models.CorporateContributorList, error) {
46464620
f := logrus.Fields{
46474621
"functionName": "v1.signatures.repository.GetClaGroupCorporateContributors",
@@ -4724,10 +4698,10 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
47244698

47254699
out := &models.CorporateContributorList{List: make([]*models.CorporateContributor, 0)}
47264700
var lastEvaluatedKey string
4727-
var allItems []map[string]*dynamodb.AttributeValue
4701+
47284702
currentCount := int64(0)
47294703

4730-
for ok := true; ok; ok = lastEvaluatedKey != "" {
4704+
for ok := true; ok; ok = lastEvaluatedKey != "" && currentCount < *pageSize {
47314705
// Make the DynamoDB Query API call
47324706
log.WithFields(f).Debug("querying signatures...")
47334707
results, queryErr := repo.dynamoDBClient.Query(queryInput)
@@ -4736,90 +4710,92 @@ func (repo repository) GetClaGroupCorporateContributors(ctx context.Context, cla
47364710
return nil, queryErr
47374711
}
47384712

4739-
// Append the results...
4740-
allItems = append(allItems, results.Items...)
4741-
currentCount += int64(len(results.Items))
4742-
4743-
if results.LastEvaluatedKey["signature_id"] != nil && currentCount < *pageSize {
4744-
lastEvaluatedKey = *results.LastEvaluatedKey["signature_id"].S
4745-
queryInput.ExclusiveStartKey = results.LastEvaluatedKey
4746-
} else {
4747-
lastEvaluatedKey = ""
4748-
}
4749-
4750-
}
4751-
4752-
allItems = deduplicateSignatures(allItems)
4753-
var dbSignatures []ItemSignature
4754-
err = dynamodbattribute.UnmarshalListOfMaps(allItems, &dbSignatures)
4755-
if err != nil {
4756-
log.WithFields(f).Warnf("error unmarshalling icla signatures from database for cla group: %s, error: %v",
4757-
claGroupID, err)
4758-
return nil, err
4759-
}
4713+
var dbSignatures []ItemSignature
47604714

4761-
log.WithFields(f).Debugf("located %d signatures...", len(dbSignatures))
4762-
for _, sig := range dbSignatures {
4763-
var sigCreatedTime = sig.DateCreated
4764-
t, err := utils.ParseDateTime(sig.DateCreated)
4715+
err := dynamodbattribute.UnmarshalListOfMaps(results.Items, &dbSignatures)
47654716
if err != nil {
4766-
log.WithFields(f).WithError(err).Warn("unable to parse signature date created time")
4767-
} else {
4768-
sigCreatedTime = utils.TimeToString(t)
4717+
log.WithFields(f).Warnf("error unmarshalling icla signatures from database for cla group: %s, error: %v",
4718+
claGroupID, err)
4719+
return nil, err
47694720
}
47704721

4771-
// Set the signed date/time
4772-
var sigSignedTime string
4773-
// Use the user docusign date signed value if it is present - older signatures do not have this
4774-
if sig.UserDocusignDateSigned != "" {
4775-
// Put the date into a standard format
4776-
t, err = utils.ParseDateTime(sig.UserDocusignDateSigned)
4722+
log.WithFields(f).Debugf("located %d signatures...", len(dbSignatures))
4723+
for _, sig := range dbSignatures {
4724+
var sigCreatedTime = sig.DateCreated
4725+
t, err := utils.ParseDateTime(sig.DateCreated)
47774726
if err != nil {
4778-
log.WithFields(f).WithError(err).Warn("unable to parse signature docusign date signed time")
4727+
log.WithFields(f).WithError(err).Warn("unable to parse signature date created time")
47794728
} else {
4780-
sigSignedTime = utils.TimeToString(t)
4729+
sigCreatedTime = utils.TimeToString(t)
47814730
}
4782-
} else {
4783-
// Put the date into a standard format
4784-
t, err = utils.ParseDateTime(sig.DateCreated)
4785-
if err != nil {
4786-
log.WithFields(f).WithError(err).Warn("unable to parse signature date created time")
4731+
4732+
// Set the signed date/time
4733+
var sigSignedTime string
4734+
// Use the user docusign date signed value if it is present - older signatures do not have this
4735+
if sig.UserDocusignDateSigned != "" {
4736+
// Put the date into a standard format
4737+
t, err = utils.ParseDateTime(sig.UserDocusignDateSigned)
4738+
if err != nil {
4739+
log.WithFields(f).WithError(err).Warn("unable to parse signature docusign date signed time")
4740+
} else {
4741+
sigSignedTime = utils.TimeToString(t)
4742+
}
47874743
} else {
4788-
sigSignedTime = utils.TimeToString(t)
4744+
// Put the date into a standard format
4745+
t, err = utils.ParseDateTime(sig.DateCreated)
4746+
if err != nil {
4747+
log.WithFields(f).WithError(err).Warn("unable to parse signature date created time")
4748+
} else {
4749+
sigSignedTime = utils.TimeToString(t)
4750+
}
47894751
}
4790-
}
47914752

4792-
signatureVersion := fmt.Sprintf("v%s.%s", strconv.Itoa(sig.SignatureDocumentMajorVersion), strconv.Itoa(sig.SignatureDocumentMinorVersion))
4753+
signatureVersion := fmt.Sprintf("v%s.%s", strconv.Itoa(sig.SignatureDocumentMajorVersion), strconv.Itoa(sig.SignatureDocumentMinorVersion))
4754+
4755+
sigName := sig.UserName
4756+
user, userErr := repo.usersRepo.GetUser(sig.SignatureReferenceID)
4757+
if userErr != nil {
4758+
log.WithFields(f).Warnf("unable to get user for id: %s, error: %v ", sig.SignatureReferenceID, userErr)
4759+
}
4760+
if user != nil && sigName == "" {
4761+
sigName = user.Username
4762+
}
47934763

4794-
sigName := sig.UserName
4795-
user, userErr := repo.usersRepo.GetUser(sig.SignatureReferenceID)
4796-
if userErr != nil {
4797-
log.WithFields(f).Warnf("unable to get user for id: %s, error: %v ", sig.SignatureReferenceID, userErr)
4764+
out.List = append(out.List, &models.CorporateContributor{
4765+
SignatureID: sig.SignatureID,
4766+
GithubID: sig.UserGithubUsername,
4767+
LinuxFoundationID: sig.UserLFUsername,
4768+
Name: sigName,
4769+
SignatureVersion: signatureVersion,
4770+
Email: sig.UserEmail,
4771+
Timestamp: sigCreatedTime,
4772+
UserDocusignName: sig.UserDocusignName,
4773+
UserDocusignDateSigned: sigSignedTime,
4774+
SignatureModified: sig.DateModified,
4775+
SignatureApproved: sig.SignatureApproved,
4776+
SignatureSigned: sig.SignatureSigned,
4777+
})
4778+
4779+
// Increment the current count
4780+
currentCount++
4781+
if currentCount >= *pageSize {
4782+
break
4783+
}
47984784
}
4799-
if user != nil && sigName == "" {
4800-
sigName = user.Username
4785+
4786+
if results.LastEvaluatedKey["signature_id"] != nil && currentCount < *pageSize {
4787+
lastEvaluatedKey = *results.LastEvaluatedKey["signature_id"].S
4788+
queryInput.ExclusiveStartKey = results.LastEvaluatedKey
4789+
} else {
4790+
lastEvaluatedKey = ""
48014791
}
48024792

4803-
out.List = append(out.List, &models.CorporateContributor{
4804-
SignatureID: sig.SignatureID,
4805-
GithubID: sig.UserGithubUsername,
4806-
LinuxFoundationID: sig.UserLFUsername,
4807-
Name: sigName,
4808-
SignatureVersion: signatureVersion,
4809-
Email: sig.UserEmail,
4810-
Timestamp: sigCreatedTime,
4811-
UserDocusignName: sig.UserDocusignName,
4812-
UserDocusignDateSigned: sigSignedTime,
4813-
SignatureModified: sig.DateModified,
4814-
SignatureApproved: sig.SignatureApproved,
4815-
SignatureSigned: sig.SignatureSigned,
4816-
})
48174793
}
48184794
sort.Slice(out.List, func(i, j int) bool {
48194795
return out.List[i].Name < out.List[j].Name
48204796
})
48214797

4822-
out.ResultCount = int64(len(out.List))
4798+
out.ResultCount = currentCount
48234799
out.TotalCount = totalCount
48244800
out.NextKey = lastEvaluatedKey
48254801

@@ -4875,7 +4851,6 @@ func (repo repository) getTotalCorporateContributorCount(ctx context.Context, cl
48754851

48764852
var lastEvaluatedKey string
48774853
var totalCount int64
4878-
var allItems []map[string]*dynamodb.AttributeValue
48794854

48804855
// Loop until we have all the records - we'll get a nil lastEvaluatedKey when we're done
48814856
for ok := true; ok; ok = lastEvaluatedKey != "" {
@@ -4886,7 +4861,8 @@ func (repo repository) getTotalCorporateContributorCount(ctx context.Context, cl
48864861
return
48874862
}
48884863

4889-
allItems = append(allItems, results.Items...)
4864+
// Add the count to the total
4865+
totalCount += *results.Count
48904866

48914867
// Set the last evaluated key
48924868
if results.LastEvaluatedKey["signature_id"] != nil {
@@ -4897,13 +4873,10 @@ func (repo repository) getTotalCorporateContributorCount(ctx context.Context, cl
48974873
}
48984874
}
48994875

4900-
// Deduplicate the signatures
4901-
// uniqueSignatures := deduplicateSignatures(allItems)
4902-
totalCount = int64(len(allItems))
4903-
totalCountChannel <- totalCount
4904-
49054876
log.WithFields(f).Debugf("total signature count query took: %s", time.Since(beforeQuery))
49064877

4878+
totalCountChannel <- totalCount
4879+
49074880
}
49084881

49094882
// EclaAutoCreate this routine updates the CCLA signature record by adjusting the auto_create_ecla column to the specified value

0 commit comments

Comments
 (0)