|
|
@@ -1,8 +1,6 @@
|
|
|
package gorm
|
|
|
|
|
|
import (
|
|
|
- "errors"
|
|
|
-
|
|
|
"github.com/porter-dev/porter/internal/models"
|
|
|
"github.com/porter-dev/porter/internal/repository"
|
|
|
"gorm.io/gorm"
|
|
|
@@ -21,15 +19,27 @@ func NewProjectRepository(db *gorm.DB) repository.ProjectRepository {
|
|
|
|
|
|
// CreateProject creates a new project
|
|
|
func (repo *ProjectRepository) CreateProject(project *models.Project) (*models.Project, error) {
|
|
|
- return nil, errors.New("UNIMPLEMENTED")
|
|
|
+ if err := repo.db.Create(project).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return project, nil
|
|
|
}
|
|
|
|
|
|
// CreateProjectRole appends a role to the existing array of roles
|
|
|
func (repo *ProjectRepository) CreateProjectRole(project *models.Project, role *models.Role) (*models.Role, error) {
|
|
|
- return nil, errors.New("UNIMPLEMENTED")
|
|
|
+ if err := repo.db.Model(&project).Association("Roles").Append([]models.Role{*role}); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return role, nil
|
|
|
}
|
|
|
|
|
|
// ReadProject gets a projects specified by a unique id
|
|
|
func (repo *ProjectRepository) ReadProject(id uint) (*models.Project, error) {
|
|
|
- return nil, errors.New("UNIMPLEMENTED")
|
|
|
+ project := &models.Project{}
|
|
|
+ if err := repo.db.Where("id = ?", id).First(&project).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return project, nil
|
|
|
}
|