fix company_developer deletes
diff --git a/api_test.go b/api_test.go
index 74ecf36..87430a8 100644
--- a/api_test.go
+++ b/api_test.go
@@ -146,6 +146,12 @@
Expect(res).Should(BeTrue())
}
+ for i := 0; i < 10; i++ {
+ row := generateTestCompanyDeveloper(i)
+ res := deleteCompanyDeveloper(row, txn)
+ Expect(res).Should(BeTrue())
+ }
+
txn.Commit()
})
@@ -174,7 +180,7 @@
res = deleteObject("COMPANY", row, txn)
Expect(res).Should(BeFalse())
- res = deleteObject("COMPANY_DEVELOPER", row, txn)
+ res = deleteCompanyDeveloper(row, txn)
Expect(res).Should(BeFalse())
txn.Rollback()
diff --git a/listener.go b/listener.go
index 0837149..edc9992 100644
--- a/listener.go
+++ b/listener.go
@@ -528,12 +528,12 @@
ok = insertCompanyDevelopers(rows, txn)
case common.Update:
- ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+ ok = deleteCompanyDeveloper(payload.OldRow, txn)
rows = append(rows, payload.NewRow)
ok = insertCompanyDevelopers(rows, txn)
case common.Delete:
- ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+ ok = deleteCompanyDeveloper(payload.OldRow, txn)
}
case "kms.app_credential":
switch payload.Operation {
@@ -648,3 +648,30 @@
log.Errorf("DELETE APP_CREDENTIAL_APIPRODUCT_MAPPER (%s, %s, %s, %s) failed.", ApiProduct, AppId, EntityIdentifier, apid_scope, err)
return false
}
+
+func deleteCompanyDeveloper(ele common.Row, txn *sql.Tx) bool {
+ prep, err := txn.Prepare(`
+ DELETE FROM COMPANY_DEVELOPER
+ WHERE tenant_id=$1 AND company_id=$2 AND developer_id=$3`)
+ if err != nil {
+ log.Errorf("DELETE COMPANY_DEVELOPER Failed: %v", err)
+ return false
+ }
+ defer prep.Close()
+
+ var tenantId, companyId, developerId string
+ ele.Get("tenant_id", &tenantId)
+ ele.Get("company_id", &companyId)
+ ele.Get("developer_id", &developerId)
+
+ res, err := txn.Stmt(prep).Exec(tenantId, companyId, developerId)
+ if err == nil {
+ affect, err := res.RowsAffected()
+ if err == nil && affect != 0 {
+ log.Debugf("DELETE COMPANY_DEVELOPER (%s, %s, %s) success.", tenantId, companyId, developerId)
+ return true
+ }
+ }
+ log.Errorf("DELETE COMPANY_DEVELOPER (%s, %s, %s) failed: %v", tenantId, companyId, developerId, err)
+ return false
+}