wisski-cloud-distillery/internal/component/instances/wisski_create.go
2022-09-14 18:07:12 +02:00

61 lines
1.6 KiB
Go

package instances
import (
"errors"
"path/filepath"
"github.com/FAU-CDI/wisski-distillery/pkg/stringparser"
)
var errInvalidSlug = errors.New("not a valid slug")
// Create fills the struct for a new WissKI instance.
// It validates that slug is a valid name for an instance.
//
// It does not perform any checks if the instance already exists, or does the creation in the database.
func (instances *Instances) Create(slug string) (wisski WissKI, err error) {
// make sure that the slug is valid!
if _, err := stringparser.ParseSlug(slug); err != nil {
return wisski, errInvalidSlug
}
wisski.Instance.Slug = slug
wisski.Instance.FilesystemBase = filepath.Join(instances.Dir, slug)
wisski.Instance.OwnerEmail = ""
wisski.Instance.AutoBlindUpdateEnabled = true
// sql
wisski.Instance.SqlDatabase = instances.Config.MysqlDatabasePrefix + slug
wisski.Instance.SqlUsername = instances.Config.MysqlUserPrefix + slug
wisski.Instance.SqlPassword, err = instances.Config.NewPassword()
if err != nil {
return WissKI{}, err
}
// triplestore
wisski.Instance.GraphDBRepository = instances.Config.GraphDBRepoPrefix + slug
wisski.Instance.GraphDBUsername = instances.Config.GraphDBUserPrefix + slug
wisski.Instance.GraphDBPassword, err = instances.Config.NewPassword()
if err != nil {
return WissKI{}, err
}
// drupal
wisski.DrupalUsername = "admin" // TODO: Change this!
wisski.DrupalPassword, err = instances.Config.NewPassword()
if err != nil {
return wisski, err
}
// store the instance in the object and return it!
wisski.instances = instances
return wisski, nil
}