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
+}