| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package gorm
- import (
- "github.com/porter-dev/porter/internal/models"
- "github.com/porter-dev/porter/internal/repository"
- "gorm.io/gorm"
- )
- // ReleaseRepository uses gorm.DB for querying the database
- type ReleaseRepository struct {
- db *gorm.DB
- }
- // NewReleaseRepository returns a DefaultReleaseRepository which uses
- // gorm.DB for querying the database
- func NewReleaseRepository(db *gorm.DB) repository.ReleaseRepository {
- return &ReleaseRepository{db}
- }
- // CreateRelease adds a new Release row to the Releases table in the database
- func (repo *ReleaseRepository) CreateRelease(release *models.Release) (*models.Release, error) {
- if err := repo.db.Create(release).Error; err != nil {
- return nil, err
- }
- return release, nil
- }
- // ReadRelease finds a single release based on their unique name and namespace pair.
- func (repo *ReleaseRepository) ReadRelease(clusterID uint, name, namespace string) (*models.Release, error) {
- release := &models.Release{}
- if err := repo.db.Preload("GitActionConfig").Where("cluster_id = ?", clusterID).Where("name = ?", name).Where("namespace = ?", namespace).First(&release).Error; err != nil {
- return nil, err
- }
- return release, nil
- }
- // ReadReleaseByWebhookToken finds a single release based on their unique webhook token.
- func (repo *ReleaseRepository) ReadReleaseByWebhookToken(token string) (*models.Release, error) {
- release := &models.Release{}
- if err := repo.db.Preload("GitActionConfig").Where("webhook_token = ?", token).First(&release).Error; err != nil {
- return nil, err
- }
- return release, nil
- }
- // UpdateRelease modifies an existing Release in the database
- func (repo *ReleaseRepository) UpdateRelease(release *models.Release) (*models.Release, error) {
- if err := repo.db.Save(release).Error; err != nil {
- return nil, err
- }
- return release, nil
- }
- // DeleteRelease deletes a single user using their unique name and namespace pair
- func (repo *ReleaseRepository) DeleteRelease(release *models.Release) (*models.Release, error) {
- if err := repo.db.Delete(&release).Error; err != nil {
- return nil, err
- }
- return release, nil
- }
|