adding operations for kms.company and kms.company_developer
diff --git a/listener.go b/listener.go
index de80a9b..ade4e1d 100644
--- a/listener.go
+++ b/listener.go
@@ -248,6 +248,107 @@
}
/*
+ * Performs Bulk insert of Company Developers
+ */
+func insertCompanyDevelopers(rows []common.Row, txn *sql.Tx) bool {
+ var scope, EntityIdentifier, DeveloperId, tenantId, CreatedBy, LastModifiedBy string
+ var CreatedAt, LastModifiedAt int64
+
+ prep, err := txn.Prepare("INSERT INTO COMPANY_DEVELOPER (_change_selector,id,tenant_id,developer_id,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
+ if err != nil {
+ log.Error("INSERT COMPANY_DEVELOPER Failed: ", err)
+ return false
+ }
+ defer prep.Close()
+ for _, ele := range rows {
+
+ ele.Get("_change_selector", &scope)
+ ele.Get("id", &EntityIdentifier)
+ ele.Get("tenant_id", &tenantId)
+ ele.Get("developer_id", &DeveloperId)
+ ele.Get("created_at", &CreatedAt)
+ ele.Get("created_by", &CreatedBy)
+ ele.Get("updated_at", &LastModifiedAt)
+ ele.Get("updated_by", &LastModifiedBy)
+
+ /* Mandatory params check */
+ if EntityIdentifier == "" || scope == "" || tenantId == "" {
+ log.Error("INSERT COMPANY_DEVELOPER: i/p args missing")
+ return false
+ }
+ _, err = txn.Stmt(prep).Exec(
+ scope,
+ EntityIdentifier,
+ tenantId,
+ CreatedAt,
+ CreatedBy,
+ LastModifiedAt,
+ LastModifiedBy)
+
+ if err != nil {
+ log.Error("INSERT COMPANY_DEVELOPER Failed: (", EntityIdentifier, ", ", scope, ")", err)
+ return false
+ } else {
+ log.Debug("INSERT COMPANY_DEVELOPER Success: (", EntityIdentifier, ", ", scope, ")")
+ }
+ }
+ return true
+}
+
+/*
+ * Performs Bulk insert of Companies
+ */
+func insertCompanies(rows []common.Row, txn *sql.Tx) bool {
+ var scope, EntityIdentifier, Name, DisplayName, Status, tenantId, CreatedBy, LastModifiedBy string
+ var CreatedAt, LastModifiedAt int64
+
+ prep, err := txn.Prepare("INSERT INTO COMAPNY (_change_selector,id,tenant_id,status,name,display_name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);")
+ if err != nil {
+ log.Error("INSERT COMPANY Failed: ", err)
+ return false
+ }
+ defer prep.Close()
+ for _, ele := range rows {
+
+ ele.Get("_change_selector", &scope)
+ ele.Get("id", &EntityIdentifier)
+ ele.Get("tenant_id", &tenantId)
+ ele.Get("status", &Status)
+ ele.Get("name", &Name)
+ ele.Get("display_name", &DisplayName)
+ ele.Get("created_at", &CreatedAt)
+ ele.Get("created_by", &CreatedBy)
+ ele.Get("updated_at", &LastModifiedAt)
+ ele.Get("updated_by", &LastModifiedBy)
+
+ /* Mandatory params check */
+ if EntityIdentifier == "" || scope == "" || tenantId == "" {
+ log.Error("INSERT COMPANY: i/p args missing")
+ return false
+ }
+ _, err = txn.Stmt(prep).Exec(
+ scope,
+ EntityIdentifier,
+ tenantId,
+ Status,
+ Name,
+ DisplayName,
+ CreatedAt,
+ CreatedBy,
+ LastModifiedAt,
+ LastModifiedBy)
+
+ if err != nil {
+ log.Error("INSERT COMPANY Failed: (", EntityIdentifier, ", ", scope, ")", err)
+ return false
+ } else {
+ log.Debug("INSERT COMPANY Success: (", EntityIdentifier, ", ", scope, ")")
+ }
+ }
+ return true
+}
+
+/*
* Performs Bulk insert of API products
*/
func insertAPIproducts(rows []common.Row, txn *sql.Tx) bool {
@@ -404,7 +505,34 @@
case common.Delete:
ok = deleteObject("APP", payload.OldRow, txn)
}
+ case "kms.company":
+ switch payload.Operation {
+ case common.Insert:
+ rows = append(rows, payload.NewRow)
+ ok = insertApplications(rows, txn)
+ case common.Update:
+ ok = deleteObject("COMPANY", payload.OldRow, txn)
+ rows = append(rows, payload.NewRow)
+ ok = insertApplications(rows, txn)
+
+ case common.Delete:
+ ok = deleteObject("COMPANY", payload.OldRow, txn)
+ }
+ case "kms.company_developer":
+ switch payload.Operation {
+ case common.Insert:
+ rows = append(rows, payload.NewRow)
+ ok = insertApplications(rows, txn)
+
+ case common.Update:
+ ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+ rows = append(rows, payload.NewRow)
+ ok = insertApplications(rows, txn)
+
+ case common.Delete:
+ ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+ }
case "kms.app_credential":
switch payload.Operation {
case common.Insert:
diff --git a/listener_test.go b/listener_test.go
index 8305836..c1d66d5 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -50,6 +50,45 @@
},
}
+ companyItems := common.Row{
+ "id": {
+ Value: "ch_company_id_2",
+ },
+ "status": {
+ Value: "Active",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "name": {
+ Value: "test_company_name0",
+ },
+ "display_name": {
+ Value: "test_company_display_name0",
+ },
+ }
+
+ companyDeveloperItems := common.Row{
+ "id": {
+ Value: "ch_developer_id_2",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "company_id": {
+ Value: "ch_company_id_2",
+ },
+ "developer_id": {
+ Value: "ch_developer_id_2",
+ },
+ }
+
/* APP */
appItems := common.Row{
"id": {
@@ -136,6 +175,16 @@
NewRow: mpItems,
Operation: 1,
},
+ {
+ Table: "kms.company",
+ NewRow: companyItems,
+ Operation: 1,
+ },
+ {
+ Table: "kms.company_developer",
+ NewRow: companyDeveloperItems,
+ Operation: 1,
+ },
}
h := &test_handler{
@@ -231,6 +280,45 @@
},
}
+ companyItemsOld := common.Row{
+ "id": {
+ Value: "ch_company_id_0",
+ },
+ "status": {
+ Value: "Active",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "name": {
+ Value: "test_company_name0",
+ },
+ "display_name": {
+ Value: "test_company_display_name0",
+ },
+ }
+
+ companyDeveloperItemsOld := common.Row{
+ "id": {
+ Value: "ch_developer_id_0",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "company_id": {
+ Value: "ch_company_id_0",
+ },
+ "developer_id": {
+ Value: "ch_developer_id_0",
+ },
+ }
+
/* CRED */
credItemsOld := common.Row{
"id": {
@@ -308,6 +396,45 @@
},
}
+ companyItemsNew := common.Row{
+ "id": {
+ Value: "ch_company_id_1",
+ },
+ "status": {
+ Value: "Active",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "name": {
+ Value: "test_company_name0",
+ },
+ "display_name": {
+ Value: "test_company_display_name0",
+ },
+ }
+
+ companyDeveloperItemsNew := common.Row{
+ "id": {
+ Value: "ch_developer_id_1",
+ },
+ "tenant_id": {
+ Value: "tenant_id_0",
+ },
+ "_change_selector": {
+ Value: "test_org0",
+ },
+ "company_id": {
+ Value: "ch_company_id_1",
+ },
+ "developer_id": {
+ Value: "ch_developer_id_1",
+ },
+ }
+
/* APP */
appItemsNew := common.Row{
"id": {
@@ -380,6 +507,16 @@
Operation: 1,
},
{
+ Table: "kms.company",
+ NewRow: companyItemsOld,
+ Operation: 1,
+ },
+ {
+ Table: "kms.company_developer",
+ NewRow: companyDeveloperItemsOld,
+ Operation: 1,
+ },
+ {
Table: "kms.app",
NewRow: appItemsOld,
Operation: 1,
@@ -410,6 +547,18 @@
Operation: 2,
},
{
+ Table: "kms.company",
+ OldRow: companyItemsOld,
+ NewRow: companyItemsNew,
+ Operation: 2,
+ },
+ {
+ Table: "kms.company_developer",
+ OldRow: companyDeveloperItemsOld,
+ NewRow: companyDeveloperItemsNew,
+ Operation: 2,
+ },
+ {
Table: "kms.app",
OldRow: appItemsOld,
NewRow: appItemsNew,
@@ -461,7 +610,6 @@
apid.Events().Emit("ApigeeSync", &event2)
apid.Events().Emit("ApigeeSync", &common.ChangeList{})
})
-
})
type test_handler struct {