Added ability to create projects
This commit is contained in:
6
web/forms/project.go
Normal file
6
web/forms/project.go
Normal file
@ -0,0 +1,6 @@
|
||||
package forms
|
||||
|
||||
type ProjectForm struct {
|
||||
Name string `form:"project_name" validate:"required"`
|
||||
Description string `form:"project_description"`
|
||||
}
|
@ -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)
|
||||
})
|
||||
}
|
||||
|
@ -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))
|
||||
}
|
||||
|
Reference in New Issue
Block a user