Skip to content

Commit

Permalink
refactor(server): use a direct implementation of gin handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
bastean committed Aug 18, 2024
1 parent fb32f20 commit 19264a3
Show file tree
Hide file tree
Showing 29 changed files with 281 additions and 292 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package dashboard

var DeleteFormTagId = "delete"
const (
DeleteFormTagId = "delete"
)

script DeleteFormInit(formTagId string) {
$(`#${formTagId}`)
Expand Down Expand Up @@ -35,13 +37,13 @@ script DeleteFormInit(formTagId string) {
}
})
.api({
action: "delete user",
action: "user_delete",
method: "DELETE",
onSuccess: function(response, element, xhr) {
$.toast({
class: "success",
message: response.Message,
showProgress: "top",
showProgress: "top"
});

_.delay(function() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package dashboard

var UpdateFormTagId = "update"
const (
UpdateFormTagId = "update"
)

script UpdateFormInit(formTagId string) {
$(`#${formTagId}`)
Expand Down Expand Up @@ -72,13 +74,13 @@ script UpdateFormInit(formTagId string) {
}
})
.api({
action: "update user",
action: "user_update",
method: "PATCH",
onSuccess: function(response, element, xhr) {
$.toast({
class: "success",
message: response.Message,
showProgress: "top",
showProgress: "top"
});

_.delay(function() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ script PageInit() {
})
;

$(".ui.green.nag")
$(".ui.green.nag")
.nag({
key: "account-confirmed",
value: true
Expand Down
8 changes: 5 additions & 3 deletions internal/app/server/component/page/home/form.login.templ
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package home

var LoginFormTagId = "login"
const (
LoginFormTagId = "login"
)

script LoginFormInit(formTagId string) {
$(`#${formTagId}`)
Expand Down Expand Up @@ -31,13 +33,13 @@ script LoginFormInit(formTagId string) {
}
})
.api({
action: "login user",
action: "user_login",
method: "POST",
onSuccess: function(response, element, xhr) {
$.toast({
class: "success",
message: response.Message,
showProgress: "top",
showProgress: "top"
});

_.delay(function() {
Expand Down
8 changes: 5 additions & 3 deletions internal/app/server/component/page/home/form.register.templ
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package home

var RegisterFormTagId = "register"
const (
RegisterFormTagId = "register"
)

script RegisterFormInit(formTagId, loginTabTagId string) {
$(`#${formTagId}`)
Expand Down Expand Up @@ -61,7 +63,7 @@ script RegisterFormInit(formTagId, loginTabTagId string) {
}
})
.api({
action: "create user",
action: "user_create",
method: "PUT",
beforeSend: function(settings) {
settings.data.Id = crypto.randomUUID();
Expand All @@ -74,7 +76,7 @@ script RegisterFormInit(formTagId, loginTabTagId string) {
$.toast({
class: "success",
message: response.Message,
showProgress: "top",
showProgress: "top"
});

_.delay(function() {
Expand Down
4 changes: 3 additions & 1 deletion internal/app/server/component/page/home/modal.terms.templ
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package home

var TermsModalTagId = "terms"
const (
TermsModalTagId = "terms"
)

templ TermsModal() {
<div id={ TermsModalTagId } class="ui basic modal">
Expand Down
2 changes: 1 addition & 1 deletion internal/app/server/component/page/home/page.home.templ
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"github.com/bastean/codexgo/v4/internal/app/server/component/scripts"
)

var (
const (
RegisterTabTagId = "tab-register"
LoginTabTagId = "tab-login"
)
Expand Down
12 changes: 8 additions & 4 deletions internal/app/server/component/scripts/fomantic/fomantic.templ
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package fomantic

script Init() {
user = {
"user_create" : "/v4/account",
"user_login" : "/v4/account",
"user_update" : "/v4/account",
"user_delete" : "/v4/account",
};

$.api.settings.api = {
"create user" : "/v4/account",
"login user" : "/v4/account",
"update user" : "/v4/account",
"delete user" : "/v4/account",
...user,
};

$.api.settings.serializeForm = true;
Expand Down
6 changes: 2 additions & 4 deletions internal/app/server/handler/health/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"github.com/gin-gonic/gin"
)

func Check() gin.HandlerFunc {
return func(c *gin.Context) {
c.Status(http.StatusOK)
}
func Check(c *gin.Context) {
c.Status(http.StatusOK)
}
34 changes: 16 additions & 18 deletions internal/app/server/handler/page/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,28 @@ import (
"github.com/gin-gonic/gin"
)

func Dashboard() gin.HandlerFunc {
return func(c *gin.Context) {
id, exists := c.Get(key.UserId)
func Dashboard(c *gin.Context) {
id, exists := c.Get(key.UserId)

if !exists {
errs.AbortErrWithRedirect(c, errs.MissingKey(key.UserId, "Dashboard"), "/")
return
}
if !exists {
errs.AbortErrWithRedirect(c, errs.MissingKey(key.UserId, "Dashboard"), "/")
return
}

query := new(user.ReadQuery)
query := new(user.ReadQuery)

query.Id = id.(string)
query.Id = id.(string)

found, err := user.Read.Handle(query)
found, err := user.Read.Handle(query)

if err != nil {
errs.AbortErrWithRedirect(c, errors.BubbleUp(err, "Dashboard"), "/")
return
}
if err != nil {
errs.AbortErrWithRedirect(c, errors.BubbleUp(err, "Dashboard"), "/")
return
}

err = dashboard.Page(found).Render(c.Request.Context(), c.Writer)
err = dashboard.Page(found).Render(c.Request.Context(), c.Writer)

if err != nil {
errs.AbortErr(c, errs.Render(err, "Dashboard"))
}
if err != nil {
errs.AbortErr(c, errs.Render(err, "Dashboard"))
}
}
13 changes: 0 additions & 13 deletions internal/app/server/handler/page/default.go

This file was deleted.

8 changes: 3 additions & 5 deletions internal/app/server/handler/page/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@ import (
"github.com/gin-gonic/gin"
)

func Home() gin.HandlerFunc {
return func(c *gin.Context) {
if err := home.Page().Render(c.Request.Context(), c.Writer); err != nil {
errs.AbortErr(c, errs.Render(err, "Home"))
}
func Home(c *gin.Context) {
if err := home.Page().Render(c.Request.Context(), c.Writer); err != nil {
errs.AbortErr(c, errs.Render(err, "Home"))
}
}
11 changes: 11 additions & 0 deletions internal/app/server/handler/redirect/default.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package redirect

import (
"net/http"

"github.com/gin-gonic/gin"
)

func Default(c *gin.Context) {
c.Redirect(http.StatusFound, "/")
}
34 changes: 16 additions & 18 deletions internal/app/server/handler/user/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,25 @@ import (
"github.com/gin-gonic/gin"
)

func Create() gin.HandlerFunc {
return func(c *gin.Context) {
command := new(user.CreateCommand)
func Create(c *gin.Context) {
command := new(user.CreateCommand)

err := c.BindJSON(command)
err := c.BindJSON(command)

if err != nil {
errs.AbortErr(c, errs.BindingJSON(err, "Create"))
return
}

err = user.Create.Handle(command)
if err != nil {
errs.AbortErr(c, errs.BindingJSON(err, "Create"))
return
}

if err != nil {
errs.AbortErr(c, errors.BubbleUp(err, "Create"))
return
}
err = user.Create.Handle(command)

c.JSON(http.StatusCreated, &reply.JSON{
Success: true,
Message: "Account created",
})
if err != nil {
errs.AbortErr(c, errors.BubbleUp(err, "Create"))
return
}

c.JSON(http.StatusCreated, &reply.JSON{
Success: true,
Message: "Account created",
})
}
68 changes: 33 additions & 35 deletions internal/app/server/handler/user/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,52 +12,50 @@ import (
"github.com/gin-gonic/gin"
)

func Delete() gin.HandlerFunc {
return func(c *gin.Context) {
id, exists := c.Get(key.UserId)
func Delete(c *gin.Context) {
id, exists := c.Get(key.UserId)

if !exists {
errs.AbortErr(c, errs.MissingKey(key.UserId, "Delete"))
return
}

command := new(user.DeleteCommand)
if !exists {
errs.AbortErr(c, errs.MissingKey(key.UserId, "Delete"))
return
}

err := c.BindJSON(command)
command := new(user.DeleteCommand)

if err != nil {
errs.AbortErr(c, errs.BindingJSON(err, "Delete"))
return
}
err := c.BindJSON(command)

command.Id = id.(string)
if err != nil {
errs.AbortErr(c, errs.BindingJSON(err, "Delete"))
return
}

err = user.Delete.Handle(command)
command.Id = id.(string)

if err != nil {
errs.AbortErr(c, errors.BubbleUp(err, "Delete"))
return
}
err = user.Delete.Handle(command)

session := sessions.Default(c)
if err != nil {
errs.AbortErr(c, errors.BubbleUp(err, "Delete"))
return
}

session.Clear()
session := sessions.Default(c)

session.Options(sessions.Options{
Path: "/",
MaxAge: -1,
})
session.Clear()

err = session.Save()
session.Options(sessions.Options{
Path: "/",
MaxAge: -1,
})

if err != nil {
errs.AbortErr(c, errs.SessionSave(err, "Delete"))
return
}
err = session.Save()

c.JSON(http.StatusOK, &reply.JSON{
Success: true,
Message: "Account deleted",
})
if err != nil {
errs.AbortErr(c, errs.SessionSave(err, "Delete"))
return
}

c.JSON(http.StatusOK, &reply.JSON{
Success: true,
Message: "Account deleted",
})
}
Loading

0 comments on commit 19264a3

Please sign in to comment.