Skip to content

Commit

Permalink
separate forceDelete function
Browse files Browse the repository at this point in the history
  • Loading branch information
nkvuong committed Sep 2, 2022
1 parent e52b7a3 commit 01ea46e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 24 deletions.
33 changes: 20 additions & 13 deletions catalog/resource_catalog.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,22 @@ func (a CatalogsAPI) getCatalog(name string) (ci CatalogInfo, err error) {
return
}

func (a CatalogsAPI) deleteCatalog(name string, force bool) error {
if force {
schemasAPI := NewSchemasAPI(a.context, a.client)
schemas, err := schemasAPI.listByCatalog(name)
if err != nil {
return err
}
for _, s := range schemas.Schemas {
if s.Name != name+".information_schema" {
schemasAPI.deleteSchema(s.FullName, true)
}
func (a CatalogsAPI) deleteCatalog(name string) error {
return a.client.Delete(a.context, "/unity-catalog/catalogs/"+name, nil)
}

func (a CatalogsAPI) forceDeleteCatalog(name string) error {
schemasAPI := NewSchemasAPI(a.context, a.client)
schemas, err := schemasAPI.listByCatalog(name)
if err != nil {
return err
}
for _, s := range schemas.Schemas {
if s.Name != name+".information_schema" {
schemasAPI.forceDeleteSchema(s.FullName)
}
}

return a.client.Delete(a.context, "/unity-catalog/catalogs/"+name, nil)
}

Expand All @@ -78,7 +81,7 @@ func ResourceCatalog() *schema.Resource {
if err := NewCatalogsAPI(ctx, c).createCatalog(&ci); err != nil {
return err
}
if err := NewSchemasAPI(ctx, c).deleteSchema(ci.Name+".default", false); err != nil {
if err := NewSchemasAPI(ctx, c).deleteSchema(ci.Name + ".default"); err != nil {
return fmt.Errorf("cannot remove new catalog default schema: %w", err)
}
d.SetId(ci.Name)
Expand All @@ -94,7 +97,11 @@ func ResourceCatalog() *schema.Resource {
Update: update,
Delete: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
force := d.Get("force_destroy").(bool)
return NewCatalogsAPI(ctx, c).deleteCatalog(d.Id(), force)
if force {
return NewCatalogsAPI(ctx, c).forceDeleteCatalog(d.Id())
} else {
return NewCatalogsAPI(ctx, c).deleteCatalog(d.Id())
}
},
}.ToResource()
}
27 changes: 16 additions & 11 deletions catalog/resource_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,18 @@ func (a SchemasAPI) getSchema(name string) (si SchemaInfo, err error) {
return
}

func (a SchemasAPI) deleteSchema(name string, force bool) error {
if force {
tablesAPI := NewTablesAPI(a.context, a.client)
tables, err := tablesAPI.listTables(strings.Split(name, ".")[0], strings.Split(name, ".")[1])
if err != nil {
return err
}
for _, v := range tables.Tables {
tablesAPI.deleteTable(v.FullName())
}
func (a SchemasAPI) deleteSchema(name string) error {
return a.client.Delete(a.context, "/unity-catalog/schemas/"+name, nil)
}

func (a SchemasAPI) forceDeleteSchema(name string) error {
tablesAPI := NewTablesAPI(a.context, a.client)
tables, err := tablesAPI.listTables(strings.Split(name, ".")[0], strings.Split(name, ".")[1])
if err != nil {
return err
}
for _, v := range tables.Tables {
tablesAPI.deleteTable(v.FullName())
}
return a.client.Delete(a.context, "/unity-catalog/schemas/"+name, nil)
}
Expand Down Expand Up @@ -94,7 +96,10 @@ func ResourceSchema() *schema.Resource {
Update: update,
Delete: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
force := d.Get("force_destroy").(bool)
return NewSchemasAPI(ctx, c).deleteSchema(d.Id(), force)
if force {
return NewSchemasAPI(ctx, c).forceDeleteSchema(d.Id())
}
return NewSchemasAPI(ctx, c).deleteSchema(d.Id())
},
}.ToResource()
}

0 comments on commit 01ea46e

Please sign in to comment.