| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package gorm
- import (
- "context"
- "github.com/porter-dev/porter/internal/models"
- "github.com/porter-dev/porter/internal/repository"
- "gorm.io/gorm"
- )
- // PorterAppRepository uses gorm.DB for querying the database
- type PorterAppRepository struct {
- db *gorm.DB
- }
- // NewPorterAppRepository returns a PorterAppRepository which uses
- // gorm.DB for querying the database
- func NewPorterAppRepository(db *gorm.DB) repository.PorterAppRepository {
- return &PorterAppRepository{db}
- }
- func (repo *PorterAppRepository) CreatePorterApp(a *models.PorterApp) (*models.PorterApp, error) {
- if err := repo.db.Create(a).Error; err != nil {
- return nil, err
- }
- return a, nil
- }
- func (repo *PorterAppRepository) ListPorterAppByClusterID(clusterID uint) ([]*models.PorterApp, error) {
- apps := []*models.PorterApp{}
- if err := repo.db.Where("cluster_id = ?", clusterID).Find(&apps).Error; err != nil {
- return nil, err
- }
- return apps, nil
- }
- // ReadPorterAppByID returns a PorterApp by its ID
- func (repo *PorterAppRepository) ReadPorterAppByID(ctx context.Context, id uint) (*models.PorterApp, error) {
- app := &models.PorterApp{}
- if err := repo.db.Where("id = ?", id).Limit(1).Find(&app).Error; err != nil {
- return nil, err
- }
- return app, nil
- }
- func (repo *PorterAppRepository) ReadPorterAppByName(clusterID uint, name string) (*models.PorterApp, error) {
- app := &models.PorterApp{}
- if err := repo.db.Where("cluster_id = ? AND name = ?", clusterID, name).Limit(1).Find(&app).Error; err != nil {
- return nil, err
- }
- return app, nil
- }
- // ReadPorterAppsByProjectIDAndName returns a list of PorterApps by project ID and name. Multiple apps can have the same name and project id
- // if they are in different clusters.
- func (repo *PorterAppRepository) ReadPorterAppsByProjectIDAndName(projectID uint, name string) ([]*models.PorterApp, error) {
- apps := []*models.PorterApp{}
- if err := repo.db.Where("project_id = ? AND name = ?", projectID, name).Find(&apps).Error; err != nil {
- return nil, err
- }
- return apps, nil
- }
- func (repo *PorterAppRepository) UpdatePorterApp(app *models.PorterApp) (*models.PorterApp, error) {
- if err := repo.db.Save(app).Error; err != nil {
- return nil, err
- }
- return app, nil
- }
- func (repo *PorterAppRepository) DeletePorterApp(app *models.PorterApp) (*models.PorterApp, error) {
- if err := repo.db.Delete(&app).Error; err != nil {
- return nil, err
- }
- return app, nil
- }
|