Separated repo and team secret models

This commit is contained in:
Thomas Boerger 2016-07-31 22:29:56 +02:00
parent 9aac9e5bf7
commit 0e424a2527
No known key found for this signature in database
GPG key ID: 5A388F55283960B6
3 changed files with 103 additions and 20 deletions

48
model/repo_secret.go Normal file
View file

@ -0,0 +1,48 @@
package model
type RepoSecret struct {
// the id for this secret.
ID int64 `json:"id" meddler:"secret_id,pk"`
// the foreign key for this secret.
RepoID int64 `json:"-" meddler:"secret_repo_id"`
// the name of the secret which will be used as the environment variable
// name at runtime.
Name string `json:"name" meddler:"secret_name"`
// the value of the secret which will be provided to the runtime environment
// as a named environment variable.
Value string `json:"value" meddler:"secret_value"`
// the secret is restricted to this list of images.
Images []string `json:"image,omitempty" meddler:"secret_images,json"`
// the secret is restricted to this list of events.
Events []string `json:"event,omitempty" meddler:"secret_events,json"`
}
// Secret transforms a repo secret into a simple secret.
func (s *RepoSecret) Secret() *Secret {
return &Secret{
Name: s.Name,
Value: s.Value,
Images: s.Images,
Events: s.Events,
}
}
// Clone provides a repo secrets clone without the value.
func (s *RepoSecret) Clone() *RepoSecret {
return &RepoSecret{
ID: s.ID,
Name: s.Name,
Images: s.Images,
Events: s.Events,
}
}
// Validate validates the required fields and formats.
func (s *RepoSecret) Validate() error {
return nil
}

View file

@ -1,27 +1,23 @@
package model package model
import "path/filepath" import (
"path/filepath"
)
type Secret struct { type Secret struct {
// the id for this secret.
ID int64 `json:"id" meddler:"secret_id,pk"`
// the foreign key for this secret.
RepoID int64 `json:"-" meddler:"secret_repo_id"`
// the name of the secret which will be used as the environment variable // the name of the secret which will be used as the environment variable
// name at runtime. // name at runtime.
Name string `json:"name" meddler:"secret_name"` Name string `json:"name"`
// the value of the secret which will be provided to the runtime environment // the value of the secret which will be provided to the runtime environment
// as a named environment variable. // as a named environment variable.
Value string `json:"value" meddler:"secret_value"` Value string `json:"value"`
// the secret is restricted to this list of images. // the secret is restricted to this list of images.
Images []string `json:"image,omitempty" meddler:"secret_images,json"` Images []string `json:"image,omitempty"`
// the secret is restricted to this list of events. // the secret is restricted to this list of events.
Events []string `json:"event,omitempty" meddler:"secret_events,json"` Events []string `json:"event,omitempty"`
} }
// Match returns true if an image and event match the restricted list. // Match returns true if an image and event match the restricted list.
@ -55,12 +51,3 @@ func (s *Secret) MatchEvent(event string) bool {
func (s *Secret) Validate() error { func (s *Secret) Validate() error {
return nil return nil
} }
func (s *Secret) Clone() *Secret {
return &Secret{
ID: s.ID,
Name: s.Name,
Images: s.Images,
Events: s.Events,
}
}

48
model/team_secret.go Normal file
View file

@ -0,0 +1,48 @@
package model
type TeamSecret struct {
// the id for this secret.
ID int64 `json:"id" meddler:"team_secret_id,pk"`
// the foreign key for this secret.
Key string `json:"-" meddler:"team_secret_key"`
// the name of the secret which will be used as the environment variable
// name at runtime.
Name string `json:"name" meddler:"team_secret_name"`
// the value of the secret which will be provided to the runtime environment
// as a named environment variable.
Value string `json:"value" meddler:"team_secret_value"`
// the secret is restricted to this list of images.
Images []string `json:"image,omitempty" meddler:"team_secret_images,json"`
// the secret is restricted to this list of events.
Events []string `json:"event,omitempty" meddler:"team_secret_events,json"`
}
// Secret transforms a repo secret into a simple secret.
func (s *TeamSecret) Secret() *Secret {
return &Secret{
Name: s.Name,
Value: s.Value,
Images: s.Images,
Events: s.Events,
}
}
// Clone provides a repo secrets clone without the value.
func (s *TeamSecret) Clone() *TeamSecret {
return &TeamSecret{
ID: s.ID,
Name: s.Name,
Images: s.Images,
Events: s.Events,
}
}
// Validate validates the required fields and formats.
func (s *TeamSecret) Validate() error {
return nil
}