adding rest-api

This commit is contained in:
2026-07-08 06:59:16 -05:00
parent 0ef9b90bcd
commit 60c2f20fea
20 changed files with 524 additions and 0 deletions

110
rest-api/routes/events.go Normal file
View File

@@ -0,0 +1,110 @@
package routes
import (
"net/http"
"strconv"
"example.com/rest-api/models"
"github.com/gin-gonic/gin"
)
func getEvents(context *gin.Context) {
events, err := models.GetAllEvents()
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch events."})
}
context.JSON(http.StatusOK, events)
}
func getEvent(context *gin.Context) {
eventId, err := strconv.ParseInt(context.Param("id"), 10, 64)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse event id."})
return
}
event, err := models.GetEventByID(eventId)
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch event."})
return
}
context.JSON(http.StatusOK, event)
}
func createEvent(context *gin.Context) {
var event models.Event
err := context.ShouldBindJSON(&event)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse request data"})
return
}
event.ID = 1
event.UserID = 1
err = event.Save()
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not create event."})
}
context.JSON(http.StatusCreated, gin.H{"message": "Event created!", "event": event})
}
func updateEvent(context *gin.Context) {
eventId, err := strconv.ParseInt(context.Param("id"), 10, 64)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse event id."})
return
}
_, err = models.GetEventByID(eventId)
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch the event."})
return
}
var updatedEvent models.Event
err = context.ShouldBindJSON(&updatedEvent)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse request data"})
return
}
updatedEvent.ID = eventId
err = updatedEvent.Update()
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not update the event."})
return
}
context.JSON(http.StatusOK, gin.H{"message": "Event updated successfully."})
}
func deleteEvent(context *gin.Context) {
eventId, err := strconv.ParseInt(context.Param("id"), 10, 64)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse event id."})
return
}
event, err := models.GetEventByID(eventId)
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch the event."})
return
}
err = event.Delete()
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not delete the event."})
return
}
context.JSON(http.StatusOK, gin.H{"message": "Event deleted successfully."})
}

12
rest-api/routes/routes.go Normal file
View File

@@ -0,0 +1,12 @@
package routes
import "github.com/gin-gonic/gin"
func RegisterRoutes(server *gin.Engine) {
server.GET("/events", getEvents)
server.GET("/events/:id", getEvent)
server.POST("/events", createEvent)
server.PUT("/events/:id", updateEvent)
server.DELETE("/events/:id", deleteEvent)
server.POST("/signup", signup)
}

28
rest-api/routes/users.go Normal file
View File

@@ -0,0 +1,28 @@
package routes
import (
"net/http"
"example.com/rest-api/models"
"github.com/gin-gonic/gin"
)
func signup(context *gin.Context) {
var user models.User
err := context.ShouldBindJSON(&user)
if err != nil {
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse request data."})
return
}
err = user.Save()
if err != nil {
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not save user."})
return
}
context.JSON(http.StatusCreated, gin.H{"message": "User created successfully"})
}