| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package gorm
- import (
- "github.com/porter-dev/porter/internal/models"
- "github.com/porter-dev/porter/internal/repository"
- "gorm.io/gorm"
- )
- // GitRepoRepository uses gorm.DB for querying the database
- type GitRepoRepository struct {
- db *gorm.DB
- key *[32]byte
- }
- // NewGitRepoRepository returns a GitRepoRepository which uses
- // gorm.DB for querying the database. It accepts an encryption key to encrypt
- // sensitive data
- func NewGitRepoRepository(db *gorm.DB, key *[32]byte) repository.GitRepoRepository {
- return &GitRepoRepository{db, key}
- }
- // CreateGitRepo creates a new git repo
- func (repo *GitRepoRepository) CreateGitRepo(gr *models.GitRepo) (*models.GitRepo, error) {
- project := &models.Project{}
- if err := repo.db.Where("id = ?", gr.ProjectID).First(&project).Error; err != nil {
- return nil, err
- }
- assoc := repo.db.Model(&project).Association("GitRepos")
- if assoc.Error != nil {
- return nil, assoc.Error
- }
- if err := assoc.Append(gr); err != nil {
- return nil, err
- }
- return gr, nil
- }
- // ReadGitRepo gets a git repo specified by a unique id
- func (repo *GitRepoRepository) ReadGitRepo(id uint) (*models.GitRepo, error) {
- gr := &models.GitRepo{}
- if err := repo.db.Where("id = ?", id).First(&gr).Error; err != nil {
- return nil, err
- }
- return gr, nil
- }
- // ListGitReposByProjectID finds all git repos
- // for a given project id
- func (repo *GitRepoRepository) ListGitReposByProjectID(
- projectID uint,
- ) ([]*models.GitRepo, error) {
- grs := []*models.GitRepo{}
- if err := repo.db.Where("project_id = ?", projectID).Find(&grs).Error; err != nil {
- return nil, err
- }
- return grs, nil
- }
- // UpdateGitRepo modifies an existing GitRepo in the database
- func (repo *GitRepoRepository) UpdateGitRepo(
- gr *models.GitRepo,
- ) (*models.GitRepo, error) {
- if err := repo.db.Save(gr).Error; err != nil {
- return nil, err
- }
- return gr, nil
- }
- // DeleteGitRepo removes a git repo from the db
- func (repo *GitRepoRepository) DeleteGitRepo(
- gr *models.GitRepo,
- ) error {
- if err := repo.db.Where("id = ?", gr.ID).Delete(&models.GitRepo{}).Error; err != nil {
- return err
- }
- return nil
- }
|