func clearTable(tx transaction.Transaction, s *schema.Schema) error { if s.IsAbstract() { return nil } for _, schema := range schema.GetManager().Schemas() { if schema.ParentSchema == s { err := clearTable(tx, schema) if err != nil { return err } } else { for _, property := range schema.Properties { if property.Relation == s.Singular { err := clearTable(tx, schema) if err != nil { return err } } } } } resources, _, err := tx.List(s, nil, nil) if err != nil { return err } for _, resource := range resources { err = tx.Delete(s, resource.ID()) if err != nil { return err } } return nil }
//DBDelete deletes a resource in a db. func DBDelete(tx transaction.Transaction, schemaID string, id string) error { manager := schema.GetManager() schemaObj, ok := manager.Schema(schemaID) if !ok { return fmt.Errorf("Schema %s not found", schemaID) } return tx.Delete(schemaObj, id) }
func clearTable(tx transaction.Transaction, s *schema.Schema) error { for _, schema := range schema.GetManager().Schemas() { if schema.ParentSchema == s { err := clearTable(tx, schema) if err != nil { return err } } } resources, _, err := tx.List(s, nil, nil) if err != nil { return err } for _, resource := range resources { err = tx.Delete(s, resource.ID()) if err != nil { return err } } return nil }
//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 }
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() { It("Returns the defaults", func() { beforeState, err := tx.StateFetch(networkSchema, transaction.IDFilter(networkResource1.ID())) Expect(err).ToNot(HaveOccurred()) Expect(tx.Commit()).To(Succeed()) Expect(beforeState.ConfigVersion).To(Equal(int64(1))) Expect(beforeState.StateVersion).To(Equal(int64(0))) Expect(beforeState.State).To(Equal("")) Expect(beforeState.Error).To(Equal("")) Expect(beforeState.Monitoring).To(Equal("")) })