Room CRUD working!
This commit is contained in:
parent
7cc7226dee
commit
4ad17de80a
5 changed files with 34 additions and 18 deletions
|
@ -36,7 +36,7 @@ func CreateRoomHandler(c echo.Context) error {
|
|||
// Start building the HTML content for the updated list of rooms
|
||||
htmlContent := "<div id='room-list'>"
|
||||
for _, room := range rooms {
|
||||
htmlContent += fmt.Sprintf("<div class='room-name'>%s</div>", room.RoomName)
|
||||
htmlContent += fmt.Sprintf("<div class='room-name'>%s <button hx-delete='/api/room/%s' hx-target='#room-list' hx-swap='outerHTML'>❌</button></div>", room.RoomName, room.ID)
|
||||
}
|
||||
htmlContent += "</div>"
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"pollo/lib"
|
||||
|
||||
|
@ -10,14 +11,35 @@ import (
|
|||
// DeleteRoomHandler handles the deletion of a room by ID.
|
||||
func DeleteRoomHandler(c echo.Context) error {
|
||||
roomID := c.Param("id")
|
||||
|
||||
currentSession, cookieError := lib.GetSessionCookie(c.Request(), "session")
|
||||
if cookieError != nil {
|
||||
return c.JSON(http.StatusUnauthorized, map[string]string{"error": "unauthorized"})
|
||||
}
|
||||
|
||||
if roomID == "" {
|
||||
return c.JSON(http.StatusBadRequest, map[string]string{"error": "room ID is required"})
|
||||
}
|
||||
|
||||
err := lib.DeleteRoom(lib.GetDBPool(), roomID)
|
||||
if err != nil {
|
||||
deletionError := lib.DeleteRoom(lib.GetDBPool(), roomID)
|
||||
if deletionError != nil {
|
||||
return c.JSON(http.StatusInternalServerError, map[string]string{"error": "failed to delete room"})
|
||||
}
|
||||
|
||||
return c.NoContent(http.StatusNoContent)
|
||||
// Retrieve the updated list of rooms for the user
|
||||
rooms, fetchError := lib.GetRoomsByUserID(lib.GetDBPool(), currentSession.UserID)
|
||||
if fetchError != nil {
|
||||
println("Error retrieving rooms: ", fetchError.Error())
|
||||
return c.JSON(http.StatusInternalServerError, map[string]string{"error": "failed to retrieve rooms"})
|
||||
}
|
||||
|
||||
// Start building the HTML content for the updated list of rooms
|
||||
htmlContent := "<div id='room-list'>"
|
||||
for _, room := range rooms {
|
||||
htmlContent += fmt.Sprintf("<div class='room-name'>%s <button hx-delete='/api/room/%s' hx-target='#room-list' hx-swap='outerHTML'>❌</button></div>", room.RoomName, room.ID)
|
||||
}
|
||||
htmlContent += "</div>"
|
||||
|
||||
// Return the dynamically generated HTML content
|
||||
return c.HTML(http.StatusOK, htmlContent)
|
||||
}
|
||||
|
|
|
@ -22,12 +22,10 @@ func GetAllRoomsHandler(c echo.Context) error {
|
|||
return c.JSON(http.StatusInternalServerError, map[string]string{"error": "failed to retrieve rooms"})
|
||||
}
|
||||
|
||||
// Start building the HTML content
|
||||
// Start building the HTML content for the updated list of rooms
|
||||
htmlContent := "<div id='room-list'>"
|
||||
for _, room := range rooms {
|
||||
// For each room, append an HTML element to htmlContent
|
||||
// Customize this HTML structure as needed to match your desired appearance
|
||||
htmlContent += fmt.Sprintf("<div class='room-name'>%s</div>", room.RoomName)
|
||||
htmlContent += fmt.Sprintf("<div class='room-name'>%s <button hx-delete='/api/room/%s' hx-target='#room-list' hx-swap='outerHTML'>❌</button></div>", room.RoomName, room.ID)
|
||||
}
|
||||
htmlContent += "</div>"
|
||||
|
||||
|
|
6
main.go
6
main.go
|
@ -90,9 +90,9 @@ func main() {
|
|||
apiGroup.POST("/signin", api.SignInUserHandler)
|
||||
apiGroup.POST("/signout", api.SignOutUserHandler)
|
||||
// Rooms routes
|
||||
apiGroup.POST("/room/create", api.CreateRoomHandler)
|
||||
apiGroup.GET("/room/list", api.GetAllRoomsHandler)
|
||||
apiGroup.POST("/room/delete", api.DeleteRoomHandler)
|
||||
apiGroup.POST("/room", api.CreateRoomHandler)
|
||||
apiGroup.GET("/room", api.GetAllRoomsHandler)
|
||||
apiGroup.DELETE("/room/:id", api.DeleteRoomHandler)
|
||||
|
||||
// Webhook Routes:
|
||||
webhookGroup := e.Group("/webhook")
|
||||
|
|
|
@ -16,16 +16,12 @@ Pollo // Dashboard
|
|||
Hi, {{.Name}}!
|
||||
</h1>
|
||||
<!-- Form to create a new room -->
|
||||
<form method="POST" hx-post="/api/room/create" hx-target="#room-list" hx-swap="outerHTML">
|
||||
<input type="text" name="roomName" placeholder="Room Name" required>
|
||||
<form class="flex flex-col gap-2" method="POST" hx-post="/api/room" hx-target="#room-list" hx-swap="outerHTML">
|
||||
<input class="input input-bordered input-primary w-full max-w-xs" type="text" name="roomName" placeholder="Room Name" required>
|
||||
<button type="submit" class="btn btn-primary">Create Room</button>
|
||||
</form>
|
||||
<!-- Section to list rooms -->
|
||||
<div class="flex flex-col gap-2" id="room-list" hx-get="/api/room/list" hx-trigger="load">
|
||||
<!-- Example of how rooms might be loaded -->
|
||||
<!-- <div class="room-name">Room 1</div>
|
||||
<div class="room-name">Room 2</div> -->
|
||||
<!-- Rooms will be loaded here -->
|
||||
<div class="flex flex-col gap-2" id="room-list" hx-get="/api/room" hx-trigger="load">
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
|
Loading…
Add table
Reference in a new issue