2017-02-23 06:12:16 +01:00
|
|
|
package db
|
2016-04-04 15:44:34 +02:00
|
|
|
|
2021-11-02 20:30:45 +01:00
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
)
|
|
|
|
|
2024-07-02 20:45:59 +02:00
|
|
|
type EnvironmentSecretOperation string
|
|
|
|
|
|
|
|
const (
|
|
|
|
EnvironmentSecretCreate EnvironmentSecretOperation = "create"
|
|
|
|
EnvironmentSecretUpdate EnvironmentSecretOperation = "update"
|
|
|
|
EnvironmentSecretDelete EnvironmentSecretOperation = "delete"
|
|
|
|
)
|
|
|
|
|
|
|
|
type EnvironmentSecret struct {
|
|
|
|
ID int `json:"id"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
Secret string `json:"secret"`
|
|
|
|
Operation EnvironmentSecretOperation `json:"operation"`
|
|
|
|
}
|
|
|
|
|
2018-03-27 22:12:47 +02:00
|
|
|
// Environment is used to pass additional arguments, in json form to ansible
|
2016-04-04 15:44:34 +02:00
|
|
|
type Environment struct {
|
2024-07-02 20:45:59 +02:00
|
|
|
ID int `db:"id" json:"id"`
|
|
|
|
Name string `db:"name" json:"name" binding:"required"`
|
|
|
|
ProjectID int `db:"project_id" json:"project_id"`
|
|
|
|
Password *string `db:"password" json:"password"`
|
|
|
|
JSON string `db:"json" json:"json" binding:"required"`
|
|
|
|
ENV *string `db:"env" json:"env" binding:"required"`
|
|
|
|
Secrets []EnvironmentSecret `db:"-" json:"secrets"`
|
2016-04-04 15:44:34 +02:00
|
|
|
}
|
2021-11-02 20:30:45 +01:00
|
|
|
|
|
|
|
func (env *Environment) Validate() error {
|
|
|
|
if env.Name == "" {
|
2022-06-24 12:19:52 +02:00
|
|
|
return &ValidationError{"Environment name can not be empty"}
|
2021-11-02 20:30:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if !json.Valid([]byte(env.JSON)) {
|
2022-06-24 12:19:52 +02:00
|
|
|
return &ValidationError{"Extra variables must be valid JSON"}
|
|
|
|
}
|
|
|
|
|
2022-06-30 08:04:51 +02:00
|
|
|
if env.ENV != nil && !json.Valid([]byte(*env.ENV)) {
|
2022-06-24 12:19:52 +02:00
|
|
|
return &ValidationError{"Environment variables must be valid JSON"}
|
2021-11-02 20:30:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
2022-02-03 08:05:13 +01:00
|
|
|
}
|