//GohanDbDelete deletes resource from database func GohanDbDelete(transaction transaction.Transaction, needCommit bool, schemaID, ID string) error { schema, err := getSchema(schemaID) if err != nil { return fmt.Errorf("Error during gohan_db_delete: %s", err.Error()) } if err := transaction.Delete(schema, ID); err != nil { return fmt.Errorf("Error during gohan_db_delete: %s", err.Error()) } if needCommit { err := transaction.Commit() if err != nil { return fmt.Errorf("Error during gohan_db_delete: %s", err.Error()) } } return nil }
//GohanDbStateUpdate updates resource's state in database func GohanDbStateUpdate(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_state_update: %s", err.Error()) } if err = transaction.StateUpdate(resource, nil); err != nil { return nil, fmt.Errorf("Error during gohan_db_state_update: %s", err.Error()) } if needCommit { err = transaction.Commit() if err != nil { return nil, fmt.Errorf("Error during gohan_db_state_update: %s", err.Error()) } } return resource, nil }
//GohanDbQuery get resources from database with query func GohanDbQuery(transaction transaction.Transaction, needCommit bool, schemaID, sqlString string, arguments []interface{}) ([]map[string]interface{}, error) { schema, err := getSchema(schemaID) if err != nil { return []map[string]interface{}{}, err } resources, err := transaction.Query(schema, sqlString, arguments) if err != nil { return []map[string]interface{}{}, fmt.Errorf("Error during gohan_db_query: %s", err.Error()) } if needCommit { err = transaction.Commit() if err != nil { return []map[string]interface{}{}, fmt.Errorf("Error during gohan_db_query: %s", err.Error()) } } resp := []map[string]interface{}{} for _, resource := range resources { resp = append(resp, resource.Data()) } return resp, nil }
if os.Getenv("MYSQL_TEST") == "true" { conn = "root@/gohan_test" dbType = "mysql" } else { conn = "./test.db" dbType = "sqlite3" } }) Context("When the database is empty", func() { It("Returns an empty list", func() { list, num, err := tx.List(networkSchema, nil, nil) Expect(err).ToNot(HaveOccurred()) Expect(num).To(Equal(uint64(0))) Expect(list).To(BeEmpty()) Expect(tx.Commit()).To(Succeed()) }) It("Creates a resource", func() { Expect(tx.Create(networkResource1)).To(Succeed()) Expect(tx.Commit()).To(Succeed()) }) }) Describe("When the database is not empty", func() { JustBeforeEach(func() { Expect(tx.Create(networkResource1)).To(Succeed()) Expect(tx.Create(networkResource2)).To(Succeed()) Expect(tx.Create(serverResource)).To(Succeed()) Expect(tx.Commit()).To(Succeed())
//DBCommit commits transaction func DBCommit(tx transaction.Transaction) error { return tx.Commit() }