//DBUpdate updates a resource in a db. func DBUpdate(tx transaction.Transaction, schemaID string, data map[string]interface{}) error { manager := schema.GetManager() resource, err := manager.LoadResource(schemaID, data) if err != nil { return err } return tx.Update(resource) }
//GohanDbUpdate updates resource in database func GohanDbUpdate(transaction transaction.Transaction, needCommit bool, schemaID string, dataMap map[string]interface{}) (*schema.Resource, error) { manager := schema.GetManager() resource, err := manager.LoadResource(schemaID, dataMap) if err != nil { return nil, fmt.Errorf("Error during gohan_db_update: %s", err.Error()) } if err = transaction.Update(resource); err != nil { return nil, fmt.Errorf("Error during gohan_db_update: %s", err.Error()) } if needCommit { err = transaction.Commit() if err != nil { return nil, fmt.Errorf("Error during gohan_db_update: %s", err.Error()) } } return resource, nil }
}) It("Fetches an existing resource", func() { networkResourceFetched, err := tx.Fetch(networkSchema, transaction.IDFilter(networkResource1.ID())) Expect(err).ToNot(HaveOccurred()) Expect(networkResourceFetched).To(util.MatchAsJSON(networkResource1)) Expect(tx.Commit()).To(Succeed()) }) It("Updates the resource properly", func() { By("Not allowing to update some fields") Expect(networkResource1.Update(map[string]interface{}{"id": "new_id"})).ToNot(Succeed()) By("Updating other fields") Expect(networkResource1.Update(map[string]interface{}{"name": "new_name"})).To(Succeed()) Expect(tx.Update(networkResource1)).To(Succeed()) Expect(tx.Commit()).To(Succeed()) }) It("Creates a dependent resource", func() { Expect(tx.Create(subnetResource)).To(Succeed()) Expect(tx.Commit()).To(Succeed()) }) It("Deletes the resource", func() { Expect(tx.Delete(serverSchema, serverResource.ID())).To(Succeed()) Expect(tx.Delete(networkSchema, networkResource1.ID())).To(Succeed()) Expect(tx.Commit()).To(Succeed()) }) Context("Using StateFetch", func() {