Move UserTableHandler and User model to own packages

master
link 2024-02-14 16:52:46 +10:00
parent f4a6a1d761
commit 2b26d6e334
4 changed files with 35 additions and 18 deletions

10
handlers/render.go Normal file
View File

@ -0,0 +1,10 @@
package handlers
import (
"github.com/labstack/echo/v4"
"github.com/a-h/templ"
)
func render(ctx echo.Context, cmp templ.Component) error {
return cmp.Render(ctx.Request().Context(), ctx.Response())
}

10
handlers/user_handler.go Normal file
View File

@ -0,0 +1,10 @@
package handlers
import (
"github.com/labstack/echo/v4"
"git.duckylabs.xyz/duckbox/echo-todo/partials"
)
func UserTableHandler(c echo.Context) error {
return render(c, partials.AddUserTable())
}

25
main.go
View File

@ -14,18 +14,13 @@ import (
"github.com/a-h/templ"
"git.duckylabs.xyz/duckbox/echo-todo/partials"
"git.duckylabs.xyz/duckbox/echo-todo/handlers"
"git.duckylabs.xyz/duckbox/echo-todo/models"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
type User struct {
ID int
Username string
Email string
Role string
}
func main() {
err := godotenv.Load(".env")
@ -69,7 +64,7 @@ func main() {
e.GET("/api/allUsers", AllUserHandler)
e.GET("/api/addUserTable", UserTableHandler)
e.GET("/api/addUserTable", handlers.UserTableHandler)
e.Logger.Fatal(e.Start(":1234"))
}
@ -83,13 +78,7 @@ func dbMiddleware(db *sql.DB) echo.MiddlewareFunc {
}
}
func render(ctx echo.Context, cmp templ.Component) error {
return cmp.Render(ctx.Request().Context(), ctx.Response())
}
func UserTableHandler(c echo.Context) error {
return render(c, partials.AddUserTable())
}
func HomeHandler(c echo.Context) error {
return c.String(http.StatusOK, "Hello from the home route")
@ -111,10 +100,10 @@ func AllUserHandler(c echo.Context) error {
defer rows.Close()
var users []User
var users []models.User
for rows.Next() {
var user User
var user models.User
if err := rows.Scan(&user.ID, &user.Username, &user.Email, &user.Role); err != nil {
logger.Fatalf("Error scanning row: %v", err)
@ -148,7 +137,7 @@ func AddUserHandler(c echo.Context) error {
return c.String(http.StatusBadRequest, "<h4>Role is required</h4>")
}
user := User{
user := models.User{
Username: username,
Email: email,
Role: role,
@ -161,7 +150,7 @@ func AddUserHandler(c echo.Context) error {
return c.String(http.StatusOK, "<h4>Successfully added " + username + "</h4>")
}
func insertUser(db *sql.DB, user User) (int64, error) {
func insertUser(db *sql.DB, user models.User) (int64, error) {
result, err := db.Exec("INSERT INTO users (username, email, role) VALUES (?, ?, ?)", user.Username, user.Email, user.Role)
if err != nil {
log.Fatalf("failed to insert user: %v", err)

8
models/user.go Normal file
View File

@ -0,0 +1,8 @@
package models
type User struct {
ID int
Username string
Email string
Role string
}