github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/lib/database/helpers.go (about)

     1  package databaseLib
     2  
     3  import (
     4  	"github.com/taubyte/go-project-schema/databases"
     5  	"github.com/taubyte/go-project-schema/project"
     6  	structureSpec "github.com/taubyte/go-specs/structure"
     7  	applicationLib "github.com/taubyte/tau-cli/lib/application"
     8  	"github.com/taubyte/utils/id"
     9  )
    10  
    11  type getter struct {
    12  	project     project.Project
    13  	application string
    14  	database    databases.Database
    15  }
    16  
    17  func get(name string) (info getter, err error) {
    18  	info.project, info.application, err = applicationLib.SelectedProjectAndApp()
    19  	if err != nil {
    20  		return
    21  	}
    22  
    23  	info.database, err = info.project.Database(name, info.application)
    24  	if err != nil {
    25  		return
    26  	}
    27  
    28  	return
    29  }
    30  
    31  func list() (project project.Project, application string, databases []string, err error) {
    32  	project, application, err = applicationLib.SelectedProjectAndApp()
    33  	if err != nil {
    34  		return
    35  	}
    36  
    37  	local, global := project.Get().Databases(application)
    38  	if len(application) > 0 {
    39  		databases = local
    40  	} else {
    41  		databases = global
    42  	}
    43  
    44  	return
    45  }
    46  
    47  func set(database *structureSpec.Database, new bool) error {
    48  	info, err := get(database.Name)
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	if new {
    54  		database.Id = id.Generate(info.project.Get().Id(), database.Name)
    55  	}
    56  
    57  	oldKey, _ := info.database.Get().Encryption()
    58  	if len(oldKey) > 0 && len(database.Key) == 0 {
    59  		err = info.database.Delete("encryption")
    60  		if err != nil {
    61  			return err
    62  		}
    63  	}
    64  
    65  	return info.database.SetWithStruct(true, database)
    66  }