Explorar o código

gorm repo implementation

Alexander Belanger %!s(int64=5) %!d(string=hai) anos
pai
achega
84020598fe
Modificáronse 1 ficheiros con 15 adicións e 5 borrados
  1. 15 5
      internal/repository/gorm/project.go

+ 15 - 5
internal/repository/gorm/project.go

@@ -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
 }