Semaphore/db/sql/environment.go
2024-07-07 22:12:21 +05:00

83 lines
1.9 KiB
Go

package sql
import (
"github.com/ansible-semaphore/semaphore/db"
)
func (d *SqlDb) GetEnvironment(projectID int, environmentID int) (environment db.Environment, err error) {
err = d.getObject(projectID, db.EnvironmentProps, environmentID, &environment)
return
}
func (d *SqlDb) GetEnvironmentRefs(projectID int, environmentID int) (db.ObjectReferrers, error) {
return d.getObjectRefs(projectID, db.EnvironmentProps, environmentID)
}
func (d *SqlDb) GetEnvironments(projectID int, params db.RetrieveQueryParams) ([]db.Environment, error) {
var environment []db.Environment
err := d.getObjects(projectID, db.EnvironmentProps, params, nil, &environment)
return environment, err
}
func (d *SqlDb) UpdateEnvironment(env db.Environment) error {
err := env.Validate()
if err != nil {
return err
}
_, err = d.exec(
"update project__environment set name=?, json=?, env=?, password=? where id=?",
env.Name,
env.JSON,
env.ENV,
env.Password,
env.ID)
return err
}
func (d *SqlDb) CreateEnvironment(env db.Environment) (newEnv db.Environment, err error) {
err = env.Validate()
if err != nil {
return
}
insertID, err := d.insert(
"id",
"insert into project__environment (project_id, name, json, env, password) values (?, ?, ?, ?, ?)",
env.ProjectID,
env.Name,
env.JSON,
env.ENV,
env.Password)
if err != nil {
return
}
newEnv = env
newEnv.ID = insertID
return
}
func (d *SqlDb) DeleteEnvironment(projectID int, environmentID int) error {
return d.deleteObject(projectID, db.EnvironmentProps, environmentID)
}
func (d *SqlDb) GetEnvironmentSecrets(projectID int, environmentID int) (keys []db.AccessKey, err error) {
keys = make([]db.AccessKey, 0)
q := d.makeObjectsQuery(projectID, db.AccessKeyProps, db.RetrieveQueryParams{}).Where("pe.environment_id = ?", environmentID)
query, args, err := q.ToSql()
if err != nil {
return
}
_, err = d.selectAll(&keys, query, args...)
return
}