50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package rules
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"git.beisel.it/florian/hostname-service/db"
|
|
)
|
|
|
|
type HostnameRule interface {
|
|
Generate(params map[string]interface{}) (string, []byte, error)
|
|
Insert(category string, hostname string, paramsJSON []byte) error
|
|
Update(category string, oldhostname string, hostname string, paramsJSON []byte) error
|
|
}
|
|
|
|
type BaseRule struct{}
|
|
|
|
func (br *BaseRule) baseInsert(category string, hostname string, paramsJSON []byte) error {
|
|
exists, err := db.HostnameExists(category, hostname)
|
|
if err != nil {
|
|
return fmt.Errorf("error checking existence of hostname: %v", err.Error())
|
|
}
|
|
if exists {
|
|
return fmt.Errorf("hostname %s does not exist in category %s", hostname, category)
|
|
}
|
|
err = db.InsertHostname(category, hostname, paramsJSON)
|
|
if err != nil {
|
|
log.Printf("Error inserting hostname into DB: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (br *BaseRule) baseUpdate(category string, oldhostname string, hostname string, paramsJSON []byte) error {
|
|
exists, err := db.HostnameExists(category, hostname)
|
|
if err != nil {
|
|
return fmt.Errorf("error checking existence of hostname: %v", err.Error())
|
|
}
|
|
if !exists {
|
|
return fmt.Errorf("hostname %s does not exist in category %s", oldhostname, category)
|
|
}
|
|
|
|
err = db.UpdateHostname(category, oldhostname, hostname, paramsJSON)
|
|
if err != nil {
|
|
log.Printf("Error inserting hostname into DB: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|