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 {