woodpecker/datastore/datastore.go
2015-04-15 23:45:24 -07:00

157 lines
4.6 KiB
Go

package datastore
import (
"io"
"github.com/drone/drone/common"
)
var (
ErrConflict = "Key not unique"
ErrNotFound = "Key not found"
)
type Datastore interface {
// User returns a user by user login.
User(string) (*common.User, error)
// UserCount returns a count of all registered users.
UserCount() (int, error)
// UserList returns a list of all registered users.
UserList() ([]*common.User, error)
// SetUser inserts or updates a user.
SetUser(*common.User) error
// SetUserNotExists inserts a new user into the datastore.
// If the user login already exists ErrConflict is returned.
SetUserNotExists(*common.User) error
// Del deletes the user.
DelUser(*common.User) error
// Token returns the token for the given user and label.
Token(string, string) (*common.Token, error)
// TokenList returns a list of all tokens for the given
// user login.
TokenList(string) ([]*common.Token, error)
// SetToken inserts a new user token in the datastore.
SetToken(*common.Token) error
// DelToken deletes the token.
DelToken(*common.Token) error
// Subscribed returns true if the user is subscribed
// to the named repository.
Subscribed(string, string) (bool, error)
// SetSubscriber inserts a subscriber for the named
// repository.
SetSubscriber(string, string) error
// DelSubscriber removes the subscriber by login for the
// named repository.
DelSubscriber(string, string) error
// Repo returns the repository with the given name.
Repo(string) (*common.Repo, error)
// RepoList returns a list of repositories for the
// given user account.
RepoList(string) ([]*common.Repo, error)
// RepoParams returns the private environment parameters
// for the given repository.
RepoParams(string) (map[string]string, error)
// RepoKeypair returns the private and public rsa keys
// for the given repository.
RepoKeypair(string) (*common.Keypair, error)
// SetRepo inserts or updates a repository.
SetRepo(*common.Repo) error
// SetRepo updates a repository. If the repository
// already exists ErrConflict is returned.
SetRepoNotExists(*common.User, *common.Repo) error
// SetRepoParams inserts or updates the private
// environment parameters for the named repository.
SetRepoParams(string, map[string]string) error
// SetRepoKeypair inserts or updates the private and
// public keypair for the named repository.
SetRepoKeypair(string, *common.Keypair) error
// DelRepo deletes the repository.
DelRepo(*common.Repo) error
// Build gets the specified build number for the
// named repository and build number
Build(string, int) (*common.Build, error)
// BuildList gets a list of recent builds for the
// named repository.
BuildList(string) ([]*common.Build, error)
// BuildLast gets the last executed build for the
// named repository.
BuildLast(string) (*common.Build, error)
// SetBuild inserts or updates a build for the named
// repository. The build number is incremented and
// assigned to the provided build.
SetBuild(string, *common.Build) error
// Status returns the status for the given repository
// and build number.
Status(string, int, string) (*common.Status, error)
// StatusList returned a list of all build statues for
// the given repository and build number.
StatusList(string, int) ([]*common.Status, error)
// SetStatus inserts a new build status for the
// named repository and build number. If the status already
// exists an error is returned.
SetStatus(string, int, *common.Status) error
// GetTask gets the task at index N for the named
// repository and build number.
Task(string, int, int) (*common.Task, error)
// TaskList gets all tasks for the named repository
// and build number.
TaskList(string, int) ([]*common.Task, error)
// SetTask inserts or updates a task for the named
// repository and build number.
SetTask(string, int, *common.Task) error
// LogReader gets the task logs at index N for
// the named repository and build number.
LogReader(string, int, int) (io.Reader, error)
// SetLogs inserts or updates a task logs for the
// named repository and build number.
SetLogs(string, int, int, []byte) error
// Experimental
// SetBuildState updates an existing build's start time,
// finish time, duration and state. No other fields are
// updated.
SetBuildState(string, *common.Build) error
// SetBuildStatus appends a new build status to an
// existing build record.
SetBuildStatus(string, int, *common.Status) error
// SetBuildTask updates an existing build task. The build
// and task must already exist. If the task does not exist
// an error is returned.
SetBuildTask(string, int, *common.Task) error
}