dao

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2018 License: Apache-2.0 Imports: 17 Imported by: 60

Documentation

Index

Constants

View Source
const (
	// NonExistUserID : if a user does not exist, the ID of the user will be 0.
	NonExistUserID = 0
	// ClairDBAlias ...
	ClairDBAlias = "clair-db"
)
View Source
const (
	// SchemaVersion is the version of database schema
	SchemaVersion = "1.4.0"
)

Variables

This section is empty.

Functions

func AddAccessLog

func AddAccessLog(accessLog models.AccessLog) error

AddAccessLog persists the access logs

func AddProject

func AddProject(project models.Project) (int64, error)

AddProject adds a project to the database along with project roles information and access log records.

func AddProjectMember

func AddProjectMember(projectID int64, userID int, role int) error

AddProjectMember inserts a record to table project_member

func AddProjectMetadata

func AddProjectMetadata(meta *models.ProjectMetadata) error

AddProjectMetadata adds metadata for a project

func AddRepJob

func AddRepJob(job models.RepJob) (int64, error)

AddRepJob ...

func AddRepPolicy

func AddRepPolicy(policy models.RepPolicy) (int64, error)

AddRepPolicy ...

func AddRepTarget

func AddRepTarget(target models.RepTarget) (int64, error)

AddRepTarget ...

func AddRepository

func AddRepository(repo models.RepoRecord) error

AddRepository adds a repo to the database.

func AddScanJob

func AddScanJob(job models.ScanJob) (int64, error)

AddScanJob ...

func AuthModeCanBeModified

func AuthModeCanBeModified() (bool, error)

AuthModeCanBeModified determines whether auth mode can be modified or not. Auth mode can modified when there is only admin user in database.

func ChangeUserPassword

func ChangeUserPassword(u models.User, oldPassword ...string) (err error)

ChangeUserPassword ...

func ChangeUserProfile

func ChangeUserProfile(user models.User, cols ...string) error

ChangeUserProfile - Update user in local db, cols to specify the columns need to update, Email, and RealName, Comment are updated by default.

func CheckUserPassword

func CheckUserPassword(query models.User) (*models.User, error)

CheckUserPassword checks whether the password is correct.

func CleanUser

func CleanUser(id int64) error

CleanUser - Clean this user information from DB

func ClearTable

func ClearTable(table string) error

ClearTable is the shortcut for test cases, it should be called only in test cases.

func CountPull

func CountPull(repoName string) (int64, error)

CountPull ...

func DeleteProject

func DeleteProject(id int64) error

DeleteProject ...

func DeleteProjectMember

func DeleteProjectMember(projectID int64, userID int) error

DeleteProjectMember delete the record from table project_member

func DeleteProjectMetadata

func DeleteProjectMetadata(projectID int64, name ...string) error

DeleteProjectMetadata deleted metadata of a project. If name is absent all metadatas will be deleted, otherwise only the metadatas specified by name will be deleted

func DeleteRepJob

func DeleteRepJob(id int64) error

DeleteRepJob ...

func DeleteRepPolicy

func DeleteRepPolicy(id int64) error

DeleteRepPolicy ...

func DeleteRepTarget

func DeleteRepTarget(id int64) error

DeleteRepTarget ...

func DeleteRepository

func DeleteRepository(name string) error

DeleteRepository ...

func DeleteUser

func DeleteUser(userID int) error

DeleteUser ...

func FilterRepJobs

func FilterRepJobs(policyID int64, repository string, status []string, startTime,
	endTime *time.Time, limit, offset int64) ([]*models.RepJob, int64, error)

FilterRepJobs ...

func FilterRepPolicies

func FilterRepPolicies(name string, projectID, page, pageSize int64) ([]*models.RepPolicy, error)

FilterRepPolicies filters policies by name and project ID

func FilterRepTargets

func FilterRepTargets(name string) ([]*models.RepTarget, error)

FilterRepTargets filters targets by name

func GetAccessLogs

func GetAccessLogs(query *models.LogQueryParam) ([]models.AccessLog, error)

GetAccessLogs gets access logs according to different conditions

func GetAllRepositories

func GetAllRepositories() ([]*models.RepoRecord, error)

GetAllRepositories ...

func GetConfigEntries

func GetConfigEntries() ([]*models.ConfigEntry, error)

GetConfigEntries Get configuration from database

func GetImgScanOverview

func GetImgScanOverview(digest string) (*models.ImgScanOverview, error)

GetImgScanOverview returns the ImgScanOverview based on the digest.

func GetOrmer

func GetOrmer() orm.Ormer

GetOrmer :set ormer singleton

func GetProjectByID

func GetProjectByID(id int64) (*models.Project, error)

GetProjectByID ...

func GetProjectByName

func GetProjectByName(name string) (*models.Project, error)

GetProjectByName ...

func GetProjectMetadata

func GetProjectMetadata(projectID int64, name ...string) ([]*models.ProjectMetadata, error)

GetProjectMetadata returns the metadata of a project. If name is absent all metadatas will be returned, otherwise only the metadatas specified by name will be returned

func GetProjects

func GetProjects(query *models.ProjectQueryParam) ([]*models.Project, error)

GetProjects returns a project list according to the query conditions

func GetRepJob

func GetRepJob(id int64) (*models.RepJob, error)

GetRepJob ...

func GetRepJobByPolicy

func GetRepJobByPolicy(policyID int64) ([]*models.RepJob, error)

GetRepJobByPolicy ...

func GetRepJobByStatus

func GetRepJobByStatus(status ...string) ([]*models.RepJob, error)

GetRepJobByStatus get jobs of certain statuses

func GetRepJobToStop

func GetRepJobToStop(policyID int64) ([]*models.RepJob, error)

GetRepJobToStop get jobs that are possibly being handled by workers of a certain policy.

func GetRepPolicy

func GetRepPolicy(id int64) (*models.RepPolicy, error)

GetRepPolicy ...

func GetRepPolicyByName

func GetRepPolicyByName(name string) (*models.RepPolicy, error)

GetRepPolicyByName ...

func GetRepPolicyByProject

func GetRepPolicyByProject(projectID int64) ([]*models.RepPolicy, error)

GetRepPolicyByProject ...

func GetRepPolicyByProjectAndTarget

func GetRepPolicyByProjectAndTarget(projectID, targetID int64) ([]*models.RepPolicy, error)

GetRepPolicyByProjectAndTarget ...

func GetRepPolicyByTarget

func GetRepPolicyByTarget(targetID int64) ([]*models.RepPolicy, error)

GetRepPolicyByTarget ...

func GetRepTarget

func GetRepTarget(id int64) (*models.RepTarget, error)

GetRepTarget ...

func GetRepTargetByEndpoint

func GetRepTargetByEndpoint(endpoint string) (*models.RepTarget, error)

GetRepTargetByEndpoint ...

func GetRepTargetByName

func GetRepTargetByName(name string) (*models.RepTarget, error)

GetRepTargetByName ...

func GetRepositoriesByProject

func GetRepositoriesByProject(projectID int64, name string,
	limit, offset int64) ([]*models.RepoRecord, error)

GetRepositoriesByProject ...

func GetRepositoryByName

func GetRepositoryByName(name string) (*models.RepoRecord, error)

GetRepositoryByName ...

func GetRepositoryByProjectName

func GetRepositoryByProjectName(name string) ([]*models.RepoRecord, error)

GetRepositoryByProjectName ...

func GetRoleByID

func GetRoleByID(id int) (*models.Role, error)

GetRoleByID ...

func GetScanJob

func GetScanJob(id int64) (*models.ScanJob, error)

GetScanJob ...

func GetScanJobsByDigest

func GetScanJobsByDigest(digest string, limit ...int) ([]*models.ScanJob, error)

GetScanJobsByDigest returns a list of scan jobs with given digest

func GetScanJobsByImage

func GetScanJobsByImage(repository, tag string, limit ...int) ([]*models.ScanJob, error)

GetScanJobsByImage returns a list of scan jobs with given repository and tag

func GetScanJobsByStatus

func GetScanJobsByStatus(status ...string) ([]*models.ScanJob, error)

GetScanJobsByStatus return a list of scan jobs with any of the given statuses in param

func GetSchemaVersion

func GetSchemaVersion() (*models.SchemaVersion, error)

GetSchemaVersion return the version of database schema

func GetTopRepos

func GetTopRepos(projectIDs []int64, n int) ([]*models.RepoRecord, error)

GetTopRepos returns the most popular repositories whose project ID is in projectIDs

func GetTotalOfAccessLogs

func GetTotalOfAccessLogs(query *models.LogQueryParam) (int64, error)

GetTotalOfAccessLogs ...

func GetTotalOfProjects

func GetTotalOfProjects(query *models.ProjectQueryParam) (int64, error)

GetTotalOfProjects returns the total count of projects according to the query conditions

func GetTotalOfRepPolicies

func GetTotalOfRepPolicies(name string, projectID int64) (int64, error)

GetTotalOfRepPolicies returns the total count of replication policies

func GetTotalOfRepositories

func GetTotalOfRepositories(name string) (int64, error)

GetTotalOfRepositories ...

func GetTotalOfRepositoriesByProject

func GetTotalOfRepositoriesByProject(projectIDs []int64, name string) (int64, error)

GetTotalOfRepositoriesByProject ...

func GetTotalOfUsers

func GetTotalOfUsers(query *models.UserQuery) (int64, error)

GetTotalOfUsers ...

func GetUser

func GetUser(query models.User) (*models.User, error)

GetUser ...

func GetUserByProject

func GetUserByProject(projectID int64, queryUser models.User) ([]*models.Member, error)

GetUserByProject gets all members of the project.

func GetUserProjectRoles

func GetUserProjectRoles(userID int, projectID int64) ([]models.Role, error)

GetUserProjectRoles returns roles that the user has according to the project.

func IncreasePullCount

func IncreasePullCount(name string) (err error)

IncreasePullCount ...

func InitClairDB

func InitClairDB(clairDB *models.PostGreSQL) error

InitClairDB ...

func InitDatabase

func InitDatabase(database *models.Database) error

InitDatabase initializes the database

func IsAdminRole

func IsAdminRole(userIDOrUsername interface{}) (bool, error)

IsAdminRole returns whether the user is admin.

func IsSuperUser

func IsSuperUser(username string) bool

IsSuperUser checks if the user is super user(conventionally id == 1) of Harbor

func ListClairVulnTimestamps

func ListClairVulnTimestamps() ([]*models.ClairVulnTimestamp, error)

ListClairVulnTimestamps return a list of all records in vuln timestamp table.

func ListImgScanOverviews

func ListImgScanOverviews() ([]*models.ImgScanOverview, error)

ListImgScanOverviews list all records in table img_scan_overview, it is called in notification handler when it needs to refresh the severity of all images.

func ListProjectMetadata

func ListProjectMetadata(name, value string) ([]*models.ProjectMetadata, error)

ListProjectMetadata ...

func ListUsers

func ListUsers(query *models.UserQuery) ([]models.User, error)

ListUsers lists all users according to different conditions.

func LoginByDb

func LoginByDb(auth models.AuthModel) (*models.User, error)

LoginByDb is used for user to login with database auth mode.

func OnBoardUser

func OnBoardUser(u *models.User) error

OnBoardUser will check if a user exists in user table, if not insert the user and put the id in the pointer of user model, if it does exist, return the user's profile. This is used for ldap and uaa authentication, such the user can have an ID in Harbor.

func PrepareTestForMySQL

func PrepareTestForMySQL()

PrepareTestForMySQL is for test only.

func PrepareTestForSQLite

func PrepareTestForSQLite()

PrepareTestForSQLite is for test only.

func Register

func Register(user models.User) (int64, error)

Register is used for user to register, the password is encrypted before the record is inserted into database.

func RepositoryExists

func RepositoryExists(name string) bool

RepositoryExists returns whether the repository exists according to its name.

func ResetRunningJobs

func ResetRunningJobs() error

ResetRunningJobs update all running jobs status to pending, including replication jobs and scan jobs.

func ResetUserPassword

func ResetUserPassword(u models.User) error

ResetUserPassword ...

func SaveConfigEntries

func SaveConfigEntries(entries []models.ConfigEntry) error

SaveConfigEntries Save configuration to database.

func SetClairVulnTimestamp

func SetClairVulnTimestamp(namespace string, timestamp time.Time) error

SetClairVulnTimestamp update the last_update of a namespace. If there's no record for this namespace, one will be created.

func SetScanJobForImg

func SetScanJobForImg(digest string, jobID int64) error

SetScanJobForImg updates the scan_job_id based on the digest of image, if there's no data, it created one record.

func ToggleUserAdminRole

func ToggleUserAdminRole(userID, hasAdmin int) error

ToggleUserAdminRole gives a user admin role.

func UpdateImgScanOverview

func UpdateImgScanOverview(digest, detailsKey string, sev models.Severity, compOverview *models.ComponentsOverview) error

UpdateImgScanOverview updates the serverity and components status of a record in img_scan_overview

func UpdateProjectMember

func UpdateProjectMember(projectID int64, userID int, role int) error

UpdateProjectMember updates the record in table project_member

func UpdateProjectMetadata

func UpdateProjectMetadata(meta *models.ProjectMetadata) error

UpdateProjectMetadata updates metadata of a project

func UpdateRepJobStatus

func UpdateRepJobStatus(id int64, status string) error

UpdateRepJobStatus ...

func UpdateRepPolicy

func UpdateRepPolicy(policy *models.RepPolicy) error

UpdateRepPolicy ...

func UpdateRepTarget

func UpdateRepTarget(target models.RepTarget) error

UpdateRepTarget ...

func UpdateRepository

func UpdateRepository(repo models.RepoRecord) error

UpdateRepository ...

func UpdateScanJobStatus

func UpdateScanJobStatus(id int64, status string) error

UpdateScanJobStatus updates the status of a scan job.

func UpdateUserResetUUID

func UpdateUserResetUUID(u models.User) error

UpdateUserResetUUID ...

func UserExists

func UserExists(user models.User, target string) (bool, error)

UserExists returns whether a user exists according username or Email.

Types

type Database

type Database interface {
	// Name returns the name of database
	Name() string
	// String returns the details of database
	String() string
	// Register registers the database which will be used
	Register(alias ...string) error
}

Database is an interface of different databases

func NewMySQL

func NewMySQL(host, port, usr, pwd, database string) Database

NewMySQL returns an instance of mysql

func NewSQLite

func NewSQLite(file string) Database

NewSQLite returns an instance of sqlite

type DatabaseWatchItemDAO

type DatabaseWatchItemDAO struct{}

DatabaseWatchItemDAO implements interface WatchItemDAO for database

func (*DatabaseWatchItemDAO) Add

func (d *DatabaseWatchItemDAO) Add(item *models.WatchItem) (int64, error)

Add a WatchItem

func (*DatabaseWatchItemDAO) DeleteByPolicyID

func (d *DatabaseWatchItemDAO) DeleteByPolicyID(policyID int64) error

DeleteByPolicyID deletes the WatchItem specified by policy ID

func (*DatabaseWatchItemDAO) Get

func (d *DatabaseWatchItemDAO) Get(namespace, operation string) ([]models.WatchItem, error)

Get returns WatchItem list according to the namespace and operation

type WatchItemDAO

type WatchItemDAO interface {
	Add(*models.WatchItem) (int64, error)
	DeleteByPolicyID(int64) error
	Get(namespace, operation string) ([]models.WatchItem, error)
}

WatchItemDAO defines operations about WatchItem

var DefaultDatabaseWatchItemDAO WatchItemDAO = &DatabaseWatchItemDAO{}

DefaultDatabaseWatchItemDAO is an instance of DatabaseWatchItemDAO

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL