Added ability to create projects

This commit is contained in:
2023-11-28 16:36:11 -05:00
parent bae65994f8
commit 16704aeeb1
9 changed files with 80 additions and 19 deletions

6
web/forms/project.go Normal file
View File

@ -0,0 +1,6 @@
package forms
type ProjectForm struct {
Name string `form:"project_name" validate:"required"`
Description string `form:"project_description"`
}

View File

@ -1,8 +1,10 @@
package web
import (
"github.com/flamego/binding"
"github.com/flamego/flamego"
"git.metaunix.net/bitgoblin/blt/web/forms"
"git.metaunix.net/bitgoblin/blt/web/routes"
)
@ -19,5 +21,6 @@ func RegisterRoutes(f *flamego.Flame) {
f.Get("/list", routes.ProjectGetList)
f.Get("/create", routes.ProjectGetCreate)
f.Post("/create", binding.Form(forms.ProjectForm{}), routes.ProjectPostCreate)
})
}

View File

@ -1,11 +1,17 @@
package routes
import (
"fmt"
"log"
"net/http"
"github.com/flamego/binding"
"github.com/flamego/flamego"
"github.com/flamego/template"
"github.com/flamego/validator"
"git.metaunix.net/bitgoblin/blt/models"
"git.metaunix.net/bitgoblin/blt/web/forms"
)
func ProjectGetList(t template.Template, data template.Data) {
@ -22,3 +28,24 @@ func ProjectGetCreate(t template.Template, data template.Data) {
data["title"] = "Create a Project"
t.HTML(http.StatusOK, "project/create")
}
func ProjectPostCreate(c flamego.Context, form forms.ProjectForm, errs binding.Errors) {
if len(errs) > 0 {
var err error
switch errs[0].Category {
case binding.ErrorCategoryValidation:
err = errs[0].Err.(validator.ValidationErrors)[0]
default:
err = errs[0].Err
}
log.Fatal(err)
}
project := models.Project{
Name: form.Name,
Description: form.Description,
}
_ = models.DB.Create(&project)
c.Redirect(fmt.Sprintf("/project/%d", project.ID))
}