129 lines
2.9 KiB
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
|
|
}
|