dao

package
v0.0.0-...-57b83e3 Latest Latest
Warning

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

Go to latest
Published: Mar 30, 2020 License: Apache-2.0 Imports: 19 Imported by: 0

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.6.0"
)

Variables

View Source
var (
	// ErrDupUser ...
	ErrDupUser = errors.New("sql: duplicate user in harbor_user")

	// ErrRollBackUser ...
	ErrRollBackUser = errors.New("sql: transaction roll back error in harbor_user")

	// ErrDupOIDCUser ...
	ErrDupOIDCUser = errors.New("sql: duplicate user in oicd_user")

	// ErrRollBackOIDCUser ...
	ErrRollBackOIDCUser = errors.New("sql: transaction roll back error in oicd_user")
)
View Source
var ErrDupRows = errors.New("sql: duplicate row in DB")

ErrDupRows is returned by DAO when inserting failed with error "duplicate key value violates unique constraint"

Functions

func AddAccessLog

func AddAccessLog(accessLog models.AccessLog) error

AddAccessLog persists the access logs

func AddAdminJob

func AddAdminJob(job *models.AdminJob) (int64, error)

AddAdminJob ...

func AddLabel

func AddLabel(label *models.Label) (int64, error)

AddLabel creates a label

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 AddProjectMetadata

func AddProjectMetadata(meta *models.ProjectMetadata) error

AddProjectMetadata adds metadata for a project

func AddRepository

func AddRepository(repo models.RepoRecord) error

AddRepository adds a repo to the database.

func AddResourceLabel

func AddResourceLabel(rl *models.ResourceLabel) (int64, error)

AddResourceLabel add a label to a resource

func AddRobot

func AddRobot(robot *models.Robot) (int64, error)

AddRobot ...

func AddScanJob

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

AddScanJob ...

func ArrayEqual

func ArrayEqual(arrayA, arrayB []int) bool

ArrayEqual ...

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) 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 CheckSchemaVersion

func CheckSchemaVersion() error

CheckSchemaVersion checks that whether the schema version matches with the expected one

func CleanUser

func CleanUser(id int64) error

CleanUser - Clean this user information from DB

func ClearHTTPAuthProxyUsers

func ClearHTTPAuthProxyUsers() error

ClearHTTPAuthProxyUsers remove the records from harbor_users to delete all user imported via HTTP Auth Proxy

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 CountRobot

func CountRobot(query *models.RobotQuery) (int64, error)

CountRobot ...

func CreateOrUpdateJobLog

func CreateOrUpdateJobLog(log *models.JobLog) (int64, error)

CreateOrUpdateJobLog ...

func CreatePagination

func CreatePagination(query *models.ProjectQueryParam, sql string, params []interface{}) (string, []interface{})

CreatePagination ...

func DeleteAdminJob

func DeleteAdminJob(id int64) error

DeleteAdminJob ...

func DeleteJobLogsBefore

func DeleteJobLogsBefore(t time.Time) (int64, error)

DeleteJobLogsBefore ...

func DeleteLabel

func DeleteLabel(id int64) error

DeleteLabel ...

func DeleteLabelsOfResource

func DeleteLabelsOfResource(rType string, rIDOrName interface{}) error

DeleteLabelsOfResource removes all labels of the resource

func DeleteOIDCUser

func DeleteOIDCUser(id int64) error

DeleteOIDCUser ...

func DeleteProject

func DeleteProject(id int64) error

DeleteProject ...

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 DeleteRepository

func DeleteRepository(name string) error

DeleteRepository ...

func DeleteResourceLabel

func DeleteResourceLabel(id int64) error

DeleteResourceLabel ...

func DeleteResourceLabelByLabel

func DeleteResourceLabelByLabel(id int64) error

DeleteResourceLabelByLabel delete the mapping relationship by label ID

func DeleteRobot

func DeleteRobot(id int64) error

DeleteRobot ...

func DeleteUser

func DeleteUser(userID int) error

DeleteUser ...

func Escape

func Escape(str string) string

Escape ..

func ExecuteBatchSQL

func ExecuteBatchSQL(sqls []string)

ExecuteBatchSQL ...

func GetAccessLogs

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

GetAccessLogs gets access logs according to different conditions

func GetAdminJob

func GetAdminJob(id int64) (*models.AdminJob, error)

GetAdminJob ...

func GetAdminJobs

func GetAdminJobs(query *models.AdminJobQuery) ([]*models.AdminJob, error)

GetAdminJobs get admin jobs bases on query conditions

func GetConfigEntries

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

GetConfigEntries Get configuration from database

func GetGroupProjects

func GetGroupProjects(groupIDs []int, query *models.ProjectQueryParam) ([]*models.Project, error)

GetGroupProjects - Get user's all projects, including user is the user member of this project and the user is in the group which is a group member of this project.

func GetImgScanOverview

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

GetImgScanOverview returns the ImgScanOverview based on the digest.

func GetJobLog

func GetJobLog(uuid string) (*models.JobLog, error)

GetJobLog ...

func GetLabel

func GetLabel(id int64) (*models.Label, error)

GetLabel specified by ID

func GetLabelsOfResource

func GetLabelsOfResource(rType string, rIDOrName interface{}) ([]*models.Label, error)

GetLabelsOfResource returns the label list of the resource Get the labels by ResourceID if rIDOrName is int, or get the labels by ResourceName

func GetOIDCUserByID

func GetOIDCUserByID(id int64) (*models.OIDCUser, error)

GetOIDCUserByID ...

func GetOIDCUserByUserID

func GetOIDCUserByUserID(userID int) (*models.OIDCUser, error)

GetOIDCUserByUserID ...

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 GetRepositories

func GetRepositories(query ...*models.RepositoryQuery) ([]*models.RepoRecord, error)

GetRepositories ...

func GetRepositoryByName

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

GetRepositoryByName ...

func GetResourceLabel

func GetResourceLabel(rType string, rIDOrName interface{}, labelID int64) (*models.ResourceLabel, error)

GetResourceLabel specified by resource ID or name Get the ResourceLabel by ResourceID if rIDOrName is int Get the ResourceLabel by ResourceName if rIDOrName is string

func GetRobotByID

func GetRobotByID(id int64) (*models.Robot, error)

GetRobotByID ...

func GetRoleByID

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

GetRoleByID ...

func GetRolesByGroupID

func GetRolesByGroupID(projectID int64, groupIDs []int) ([]int, error)

GetRolesByGroupID - Get Project roles of the specified group is a member of current project

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 GetTop10AdminJobsOfName

func GetTop10AdminJobsOfName(name string) ([]*models.AdminJob, error)

GetTop10AdminJobsOfName ...

func GetTopRepos

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

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

func GetTotalGroupProjects

func GetTotalGroupProjects(groupIDs []int, query *models.ProjectQueryParam) (int, error)

GetTotalGroupProjects - Get the total count of projects, including user is the member of this project and the user is in the group, which is the group member of this project.

func GetTotalOfAccessLogs

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

GetTotalOfAccessLogs ...

func GetTotalOfLabels

func GetTotalOfLabels(query *models.LabelQuery) (int64, error)

GetTotalOfLabels returns the total count of labels

func GetTotalOfProjects

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

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

func GetTotalOfRepositories

func GetTotalOfRepositories(query ...*models.RepositoryQuery) (int64, error)

GetTotalOfRepositories ...

func GetTotalOfUsers

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

GetTotalOfUsers ...

func GetUser

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

GetUser ...

func GetUserBySubIss

func GetUserBySubIss(sub, issuer string) (*models.User, error)

GetUserBySubIss ...

func GetUserProjectRoles

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

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

func IncreasePullCount

func IncreasePullCount(name string) (err error)

IncreasePullCount ...

func InitAndUpgradeDatabase

func InitAndUpgradeDatabase(database *models.Database) error

InitAndUpgradeDatabase - init database and upgrade when required

func InitClairDB

func InitClairDB(clairDB *models.PostGreSQL) error

InitClairDB ...

func InitDatabase

func InitDatabase(database *models.Database) error

InitDatabase registers 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 JoinNumberConditions

func JoinNumberConditions(ids []int) string

JoinNumberConditions - To join number condition into string,used in sql query

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 ListLabels

func ListLabels(query *models.LabelQuery) ([]*models.Label, error)

ListLabels list labels according to the query conditions

func ListProjectMetadata

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

ListProjectMetadata ...

func ListResourceLabels

func ListResourceLabels(query ...*models.ResourceLabelQuery) ([]*models.ResourceLabel, error)

ListResourceLabels lists ResourceLabel according to the query conditions

func ListRobots

func ListRobots(query *models.RobotQuery) ([]*models.Robot, error)

ListRobots list robots according to the query conditions

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 OnBoardOIDCUser

func OnBoardOIDCUser(u *models.User) error

OnBoardOIDCUser onboard OIDC user For the api caller, should only care about the ErrDupUser. It could lead to http.StatusConflict.

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 ParamPlaceholderForIn

func ParamPlaceholderForIn(n int) string

ParamPlaceholderForIn returns a string that contains placeholders for sql keyword "in" e.g. n=3, returns "?,?,?"

func PrepareTestData

func PrepareTestData(clearSqls []string, initSqls []string)

PrepareTestData -- Clean and Create data

func PrepareTestForMySQL

func PrepareTestForMySQL()

PrepareTestForMySQL is for test only.

func PrepareTestForPostgresSQL

func PrepareTestForPostgresSQL()

PrepareTestForPostgresSQL is for test only.

func PrepareTestForSQLite

func PrepareTestForSQLite()

PrepareTestForSQLite is for test only.

func ProjectExistsByName

func ProjectExistsByName(name string) bool

ProjectExistsByName returns whether the project exists according to its name.

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 ResetUserPassword

func ResetUserPassword(u models.User) error

ResetUserPassword ...

func SaveConfigEntries

func SaveConfigEntries(entries []models.ConfigEntry) error

SaveConfigEntries Save configuration to database.

func SetAdminJobUUID

func SetAdminJobUUID(id int64, uuid string) error

SetAdminJobUUID ...

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 SetScanJobUUID

func SetScanJobUUID(id int64, uuid string) error

SetScanJobUUID set UUID to the record so it associates with the job in job service.

func ToggleUserAdminRole

func ToggleUserAdminRole(userID int, hasAdmin bool) error

ToggleUserAdminRole gives a user admin role.

func UpdateAdminJobStatus

func UpdateAdminJobStatus(id int64, status string) error

UpdateAdminJobStatus ...

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 UpdateLabel

func UpdateLabel(label *models.Label) error

UpdateLabel ...

func UpdateOIDCUser

func UpdateOIDCUser(oidcUser *models.OIDCUser) error

UpdateOIDCUser updates the OIDCUser based on the input parm, only the column "secret" and "token" can be updated

func UpdateOIDCUserSecret

func UpdateOIDCUserSecret(oidcUser *models.OIDCUser) error

UpdateOIDCUserSecret updates the secret of the OIDC User. The secret in the input parm should be encrypted before calling this func

func UpdateProjectMetadata

func UpdateProjectMetadata(meta *models.ProjectMetadata) error

UpdateProjectMetadata updates metadata of a project

func UpdateRepository

func UpdateRepository(repo models.RepoRecord) error

UpdateRepository ...

func UpdateRobot

func UpdateRobot(robot *models.Robot) error

UpdateRobot ...

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 UpgradeSchema

func UpgradeSchema(database *models.Database) error

UpgradeSchema will call the internal migrator to upgrade schema based on the setting of database.

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
	// UpgradeSchema upgrades the DB schema to the latest version
	UpgradeSchema() 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 NewPGSQL

func NewPGSQL(host string, port string, usr string, pwd string, database string, sslmode string) Database

NewPGSQL returns an instance of postgres

func NewSQLite

func NewSQLite(file string) Database

NewSQLite returns an instance of sqlite

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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