Minor updates to db logic
diff --git a/api_test.go b/api_test.go index 566897f..ee10d70 100644 --- a/api_test.go +++ b/api_test.go
@@ -160,6 +160,7 @@ func insertTestData(db *sql.DB) { for i := 0; i < 10; i++ { + var rows []common.Row srvItems := common.Row{} result := strconv.FormatInt(int64(i), 10) @@ -192,11 +193,13 @@ Type: 1, } srvItems["tenant_id"] = scv - res := insertAPIproduct(srvItems, db) + rows = append(rows, srvItems) + res := insertAPIproducts(rows, db) Expect(res).Should(BeTrue()) } for i := 0; i < 10; i++ { + var rows []common.Row srvItems := common.Row{} result := strconv.FormatInt(int64(i), 10) @@ -242,7 +245,8 @@ } srvItems["tenant_id"] = scv - res := insertDeveloper(srvItems, db) + rows = append(rows, srvItems) + res := insertDevelopers(rows, db) Expect(res).Should(BeTrue()) } @@ -250,6 +254,7 @@ for i := 0; i < 10; i++ { resulti := strconv.FormatInt(int64(i), 10) for j = k; j < 10+k; j++ { + var rows []common.Row srvItems := common.Row{} resultj := strconv.FormatInt(int64(j), 10) @@ -289,13 +294,15 @@ Type: 1, } srvItems["tenant_id"] = scv - res := insertApplication(srvItems, db) + rows = append(rows, srvItems) + res := insertApplications(rows, db) Expect(res).Should(BeTrue()) } k = j } for i := 0; i < 10; i++ { + var rows []common.Row srvItems := common.Row{} result := strconv.FormatInt(int64(i), 10) @@ -328,11 +335,13 @@ Type: 1, } srvItems["tenant_id"] = scv - res := insertCredential(srvItems, db) + rows = append(rows, srvItems) + res := insertCredentials(rows, db) Expect(res).Should(BeTrue()) } for i := 0; i < 10; i++ { + var rows []common.Row srvItems := common.Row{} result := strconv.FormatInt(int64(i), 10) @@ -369,7 +378,8 @@ Type: 1, } srvItems["tenant_id"] = scv - res := insertAPIProductMapper(srvItems, db) + rows = append(rows, srvItems) + res := insertAPIProductMappers(rows, db) Expect(res).Should(BeTrue()) }
diff --git a/listener.go b/listener.go index 91eb2a2..6ac0999 100644 --- a/listener.go +++ b/listener.go
@@ -13,8 +13,6 @@ return "verifyAPIKey" } -// todo: The following was basically just copied from old APID - needs review. - func (h *handler) Handle(e apid.Event) { snapData, ok := e.(*common.Snapshot) @@ -56,7 +54,7 @@ case "kms.api_product": res = insertAPIproducts(payload.Rows, db) case "kms.app_credential_apiproduct_mapper": - res = insertApiProductMappers(payload.Rows, db) + res = insertAPIProductMappers(payload.Rows, db) } if res == false { log.Error("Error encountered in Downloading Snapshot for VerifyApiKey") @@ -269,7 +267,7 @@ /* * Performs a bulk insert of all APP_CREDENTIAL_APIPRODUCT_MAPPER rows */ -func insertApiProductMappers(rows []common.Row, db *sql.DB) bool { +func insertAPIProductMappers(rows []common.Row, db *sql.DB) bool { var ApiProduct, AppId, EntityIdentifier, tenantId, Scope, Status string @@ -333,6 +331,7 @@ func processChange(changes *common.ChangeList) { log.Debugf("apigeeSyncEvent: %d changes", len(changes.Changes)) + var rows []common.Row db, err := data.DB() if err != nil { @@ -340,12 +339,13 @@ } for _, payload := range changes.Changes { - + rows = nil switch payload.Table { case "kms.developer": switch payload.Operation { case 1: - insertDeveloper(payload.NewRow, db) + rows = append(rows, payload.NewRow) + insertDevelopers(rows, db) case 2: updateDeveloper(payload.NewRow, payload.OldRow, db) case 3: @@ -354,7 +354,8 @@ case "kms.app": switch payload.Operation { case 1: - insertApplication(payload.NewRow, db) + rows = append(rows, payload.NewRow) + insertApplications(rows, db) case 2: updateApplication(payload.NewRow, payload.OldRow, db) case 3: @@ -364,7 +365,8 @@ case "kms.app_credential": switch payload.Operation { case 1: - insertCredential(payload.NewRow, db) + rows = append(rows, payload.NewRow) + insertCredentials(rows, db) case 2: updateCredential(payload.NewRow, payload.OldRow, db) case 3: @@ -373,7 +375,8 @@ case "kms.api_product": switch payload.Operation { case 1: - insertAPIproduct(payload.NewRow, db) + rows = append(rows, payload.NewRow) + insertAPIproducts(rows, db) case 2: updateAPIproduct(payload.NewRow, payload.OldRow, db) case 3: @@ -383,7 +386,8 @@ case "kms.app_credential_apiproduct_mapper": switch payload.Operation { case 1: - insertAPIProductMapper(payload.NewRow, db) + rows = append(rows, payload.NewRow) + insertAPIProductMappers(rows, db) case 2: updateAPIproductMapper(payload.NewRow, payload.OldRow, db) case 3: @@ -394,235 +398,6 @@ } /* - * INSERT INTO APP_CREDENTIAL op - */ -func insertCredential(ele common.Row, db *sql.DB) bool { - - var scope, id, appId, consumerSecret, appstatus, status, tenantId string - var issuedAt int64 - - ele.Get("_apid_scope", &scope) - ele.Get("id", &id) - ele.Get("app_id", &appId) - ele.Get("consumer_secret", &consumerSecret) - ele.Get("app_status", &appstatus) - ele.Get("status", &status) - ele.Get("issued_at", &issuedAt) - ele.Get("tenant_id", &tenantId) - - stmt, err := db.Prepare("INSERT INTO APP_CREDENTIAL (_apid_scope, id, app_id, consumer_secret, app_status, status, issued_at, tenant_id)VALUES($1,$2,$3,$4,$5,$6,$7,$8);") - if err != nil { - log.Error("INSERT CRED Failed: ", id, ", ", scope, ")", err) - return false - } - _, err = stmt.Exec( - scope, - id, - appId, - consumerSecret, - appstatus, - status, - issuedAt, - tenantId) - - if err != nil { - log.Error("INSERT CRED Failed: ", id, ", ", scope, ")", err) - return false - } else { - log.Info("INSERT CRED Success: (", id, ", ", scope, ")") - return true - } - -} - -func insertAPIProductMapper(ele common.Row, db *sql.DB) bool { - - var ApiProduct, AppId, EntityIdentifier, tenantId, Scope, Status string - - ele.Get("apiprdt_id", &ApiProduct) - ele.Get("app_id", &AppId) - ele.Get("appcred_id", &EntityIdentifier) - ele.Get("tenant_id", &tenantId) - ele.Get("_apid_scope", &Scope) - ele.Get("status", &Status) - - /* - * If the credentials has been successfully inserted, insert the - * mapping entries associated with the credential - */ - - stmt, err := db.Prepare("INSERT INTO APP_CREDENTIAL_APIPRODUCT_MAPPER(apiprdt_id, app_id, appcred_id, tenant_id, _apid_scope, status) VALUES($1,$2,$3,$4,$5,$6);") - if err != nil { - log.Error("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Failed: ", err) - return false - } - _, err = stmt.Exec( - ApiProduct, - AppId, - EntityIdentifier, - tenantId, - Scope, - Status) - - if err != nil { - log.Error("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Failed: (", - ApiProduct, ", ", - AppId, ", ", - EntityIdentifier, ", ", - tenantId, ", ", - Scope, ", ", - Status, - ")", - err) - return false - } else { - log.Info("INSERT APP_CREDENTIAL_APIPRODUCT_MAPPER Success: (", - ApiProduct, ", ", - AppId, ", ", - EntityIdentifier, ", ", - tenantId, ", ", - Scope, ", ", - Status, - ")") - return true - } -} - -/* - * INSERT INTO API product op - */ -func insertAPIproduct(ele common.Row, db *sql.DB) bool { - - var scope, apiProduct, res, env, tenantId string - - ele.Get("_apid_scope", &scope) - ele.Get("id", &apiProduct) - ele.Get("api_resources", &res) - ele.Get("environments", &env) - ele.Get("tenant_id", &tenantId) - - stmt, err := db.Prepare("INSERT INTO API_PRODUCT (id, api_resources, environments, tenant_id,_apid_scope) VALUES($1,$2,$3,$4,$5)") - if err != nil { - log.Error("INSERT API_PRODUCT Failed: ", err) - return false - } - _, err = stmt.Exec( - apiProduct, - res, - env, - tenantId, - scope) - - if err != nil { - log.Error("INSERT API_PRODUCT Failed: (", apiProduct, ", ", tenantId, ")", err) - return false - } else { - log.Info("INSERT API_PRODUCT Success: (", apiProduct, ", ", tenantId, ")") - return true - } - -} - -/* - * INSERT INTO APP op - */ -func insertApplication(ele common.Row, db *sql.DB) bool { - - var scope, EntityIdentifier, DeveloperId, CallbackUrl, Status, AppName, AppFamily, tenantId, CreatedBy, LastModifiedBy string - var CreatedAt, LastModifiedAt int64 - - ele.Get("_apid_scope", &scope) - ele.Get("id", &EntityIdentifier) - ele.Get("developer_id", &DeveloperId) - ele.Get("callback_url", &CallbackUrl) - ele.Get("status", &Status) - ele.Get("name", &AppName) - ele.Get("app_family", &AppFamily) - ele.Get("created_at", &CreatedAt) - ele.Get("created_by", &CreatedBy) - ele.Get("updated_at", &LastModifiedAt) - ele.Get("updated_by", &LastModifiedBy) - ele.Get("tenant_id", &tenantId) - - stmt, err := db.Prepare("INSERT INTO APP (_apid_scope, id, developer_id,callback_url,status, name, app_family, created_at, created_by,updated_at, updated_by,tenant_id) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12);") - if err != nil { - log.Error("INSERT APP Failed: ", err) - return false - } - _, err = stmt.Exec( - scope, - EntityIdentifier, - DeveloperId, - CallbackUrl, - Status, - AppName, - AppFamily, - CreatedAt, - CreatedBy, - LastModifiedAt, - LastModifiedBy, - tenantId) - - if err != nil { - log.Error("INSERT APP Failed: (", EntityIdentifier, ", ", tenantId, ")", err) - return false - } else { - log.Info("INSERT APP Success: (", EntityIdentifier, ", ", tenantId, ")") - return true - } - -} - -/* - * INSERT INTO DEVELOPER op - */ -func insertDeveloper(ele common.Row, db *sql.DB) bool { - var scope, EntityIdentifier, Email, Status, UserName, FirstName, LastName, tenantId, CreatedBy, LastModifiedBy, Username string - var CreatedAt, LastModifiedAt int64 - - ele.Get("_apid_scope", &scope) - ele.Get("email", &Email) - ele.Get("id", &EntityIdentifier) - ele.Get("tenant_id", &tenantId) - ele.Get("status", &Status) - ele.Get("username", &Username) - ele.Get("first_name", &FirstName) - ele.Get("last_name", &LastName) - ele.Get("created_at", &CreatedAt) - ele.Get("created_by", &CreatedBy) - ele.Get("updated_at", &LastModifiedAt) - ele.Get("updated_by", &LastModifiedBy) - - stmt, err := db.Prepare("INSERT INTO DEVELOPER (_apid_scope,email,id,tenant_id,status,username,first_name,last_name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12);") - if err != nil { - log.Error("INSERT DEVELOPER Failed: ", err) - return false - } - - _, err = stmt.Exec( - scope, - Email, - EntityIdentifier, - tenantId, - Status, - UserName, - FirstName, - LastName, - CreatedAt, - CreatedBy, - LastModifiedAt, - LastModifiedBy) - - if err != nil { - log.Error("INSERT DEVELOPER Failed: (", EntityIdentifier, ", ", scope, ")", err) - return false - } else { - log.Info("INSERT DEVELOPER Success: (", EntityIdentifier, ", ", scope, ")") - return true - } -} - -/* * DELETE APP */ func deleteApplication(ele common.Row, db *sql.DB) bool {