guesstimate/internal/graph/project_handler.go

129 lines
2.9 KiB
Go

package graph
import (
"context"
"forge.cadoles.com/Cadoles/guesstimate/internal/model"
model1 "forge.cadoles.com/Cadoles/guesstimate/internal/model"
"github.com/pkg/errors"
)
func handleProjects(ctx context.Context, filter *model1.ProjectsFilter) ([]*model1.Project, error) {
user, db, err := getSessionUser(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
if filter == nil {
filter = &model1.ProjectsFilter{
OwnerIds: make([]int64, 0, 1),
}
}
filter.OwnerIds = append(filter.OwnerIds, user.ID)
projects, err := repo.Search(ctx, filter)
if err != nil {
return nil, errors.WithStack(err)
}
return projects, nil
}
func handleCreateProject(ctx context.Context, input model.CreateProjectChanges) (*model.Project, error) {
user, db, err := getSessionUser(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
project, err := repo.Create(ctx, input.Title, user.ID)
if err != nil {
return nil, errors.WithStack(err)
}
return project, nil
}
func handleUpdateProjectTitle(ctx context.Context, projectID int64, title string) (*model.Project, error) {
db, err := getDB(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
project, err := repo.UpdateTitle(ctx, projectID, title)
if err != nil {
return nil, errors.WithStack(err)
}
return project, nil
}
func handleAddProjectTask(ctx context.Context, projectID int64, changes model.ProjectTaskChanges) (*model.Task, error) {
db, err := getDB(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
task, err := repo.AddTask(ctx, projectID, changes)
if err != nil {
return nil, errors.WithStack(err)
}
return task, nil
}
func handleRemoveProjectTask(ctx context.Context, projectID int64, taskID int64) (bool, error) {
db, err := getDB(ctx)
if err != nil {
return false, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
if err := repo.RemoveTask(ctx, projectID, taskID); err != nil {
return false, errors.WithStack(err)
}
return true, nil
}
func handleUpdateProjectTask(ctx context.Context, projectID, taskID int64, changes model.ProjectTaskChanges) (*model.Task, error) {
db, err := getDB(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
task, err := repo.UpdateTask(ctx, projectID, taskID, changes)
if err != nil {
return nil, errors.WithStack(err)
}
return task, nil
}
func handleUpdateProjectParams(ctx context.Context, projectID int64, changes model.ProjectParamsChanges) (*model.ProjectParams, error) {
db, err := getDB(ctx)
if err != nil {
return nil, errors.WithStack(err)
}
repo := model.NewProjectRepository(db)
project, err := repo.UpdateParams(ctx, projectID, changes)
if err != nil {
return nil, errors.WithStack(err)
}
return project.Params, nil
}