node-api/apps/main.go

102 lines
1.8 KiB
Go

package apps
import "github.com/rosti-cz/apps-api/common"
func init() {
db := common.GetDBConnection()
db.AutoMigrate(Label{})
db.AutoMigrate(App{})
}
// Get returns one app
func Get(name string) (*App, error) {
var app App
db := common.GetDBConnection()
err := db.First(&app).Where("name = ?", name).Error
if err != nil {
return nil, err
}
return &app, nil
}
// List returns all apps located on this node
func List() (*[]App, error) {
var apps []App
db := common.GetDBConnection()
err := db.Find(&apps).Error
if err != nil {
return nil, err
}
return &apps, nil
}
// New creates new record about application in the database
func New(name string, SSHPort int, HTTPPort int, image string, CPU int, memory int) error {
app := App{
Name: name,
SSHPort: SSHPort,
HTTPPort: HTTPPort,
Image: image,
CPU: CPU,
Memory: memory,
}
db := common.GetDBConnection()
validationErrors := app.Validate()
if len(validationErrors) != 0 {
return ValidationError{
Errors: validationErrors,
}
}
if err := db.Create(app).Error; err != nil {
return err
}
return nil
}
// Update changes value about app in the database
func Update(name string, SSHPort int, HTTPPort int, image string, CPU int, memory int) error {
var app App
db := common.GetDBConnection()
err := db.First(&app).Where("name = ?", name).Error
if err != nil {
return err
}
app.SSHPort = SSHPort
app.HTTPPort = HTTPPort
app.Image = image
app.CPU = CPU
app.Memory = memory
validationErrors := app.Validate()
if len(validationErrors) != 0 {
return ValidationError{
Errors: validationErrors,
}
}
err = db.Update(&app).Error
return err
}
// Delete removes records about one app from the database
func Delete(name string) error {
db := common.GetDBConnection()
err := db.Delete(App{}).Where("name = ?", name).Error
return err
}