added handler stubs

This commit is contained in:
SwiftyOS
2024-09-12 13:59:52 +02:00
parent 3af26a9379
commit 12f40596b3
6 changed files with 193 additions and 38 deletions

View File

@@ -0,0 +1,63 @@
package handlers
import (
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"github.com/jackc/pgx/v4/pgxpool"
)
func CreateAgentEntry(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement CreateAgentEntry
c.JSON(501, gin.H{"message": "Not Implemented: CreateAgentEntry"})
}
}
func SetAgentFeatured(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement SetAgentFeatured
c.JSON(501, gin.H{"message": "Not Implemented: SetAgentFeatured"})
}
}
func GetAgentFeatured(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetAgentFeatured
c.JSON(501, gin.H{"message": "Not Implemented: GetAgentFeatured"})
}
}
func UnsetAgentFeatured(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement UnsetAgentFeatured
c.JSON(501, gin.H{"message": "Not Implemented: UnsetAgentFeatured"})
}
}
func GetNotFeaturedAgents(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetNotFeaturedAgents
c.JSON(501, gin.H{"message": "Not Implemented: GetNotFeaturedAgents"})
}
}
func GetAgentSubmissions(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetAgentSubmissions
c.JSON(501, gin.H{"message": "Not Implemented: GetAgentSubmissions"})
}
}
func ReviewSubmission(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement ReviewSubmission
c.JSON(501, gin.H{"message": "Not Implemented: ReviewSubmission"})
}
}
func GetCategories(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetCategories
c.JSON(501, gin.H{"message": "Not Implemented: GetCategories"})
}
}

View File

@@ -1,37 +0,0 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v4/pgxpool"
"go.uber.org/zap"
"github.com/swiftyos/market/database"
"github.com/swiftyos/market/models"
)
func SubmitAgent(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
var request models.AddAgentRequest
if err := c.ShouldBindJSON(&request); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
user, exists := c.Get("user")
if !exists {
c.JSON(http.StatusUnauthorized, gin.H{"error": "User not authenticated"})
return
}
agent, err := database.CreateAgentEntry(c.Request.Context(), db, request, user)
if err != nil {
logger.Error("Failed to create agent entry", zap.Error(err))
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create agent entry"})
return
}
c.JSON(http.StatusOK, agent)
}
}

View File

@@ -0,0 +1,78 @@
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v4/pgxpool"
"go.uber.org/zap"
"github.com/swiftyos/market/database"
"github.com/swiftyos/market/models"
)
func ListAgents(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement ListAgents
c.JSON(501, gin.H{"message": "Not Implemented: ListAgents"})
}
}
func SubmitAgent(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
var request models.AddAgentRequest
if err := c.ShouldBindJSON(&request); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
user, exists := c.Get("user")
if !exists {
c.JSON(http.StatusUnauthorized, gin.H{"error": "User not authenticated"})
return
}
agent, err := database.CreateAgentEntry(c.Request.Context(), db, request, user)
if err != nil {
logger.Error("Failed to create agent entry", zap.Error(err))
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create agent entry"})
return
}
c.JSON(http.StatusOK, agent)
}
}
func GetAgentDetails(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetAgentDetails
c.JSON(501, gin.H{"message": "Not Implemented: GetAgentDetails"})
}
}
func DownloadAgent(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement DownloadAgent
c.JSON(501, gin.H{"message": "Not Implemented: DownloadAgent"})
}
}
func DownloadAgentFile(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement DownloadAgentFile
c.JSON(501, gin.H{"message": "Not Implemented: DownloadAgentFile"})
}
}
func TopAgentsByDownloads(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement TopAgentsByDownloads
c.JSON(501, gin.H{"message": "Not Implemented: TopAgentsByDownloads"})
}
}
func GetFeaturedAgents(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement GetFeaturedAgents
c.JSON(501, gin.H{"message": "Not Implemented: GetFeaturedAgents"})
}
}

View File

@@ -0,0 +1,14 @@
package handlers
import (
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"github.com/jackc/pgx/v4/pgxpool"
)
func AgentInstalled(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement AgentInstalled
c.JSON(501, gin.H{"message": "Not Implemented: AgentInstalled"})
}
}

View File

@@ -0,0 +1,14 @@
package handlers
import (
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v4/pgxpool"
"go.uber.org/zap"
)
func Search(db *pgxpool.Pool, logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// TODO: Implement Search
c.JSON(501, gin.H{"message": "Not Implemented: Search"})
}
}

View File

@@ -43,12 +43,35 @@ func main() {
{
agents := api.Group("/agents")
{
agents.GET("", handlers.ListAgents(db, logger))
agents.GET("/:agent_id", handlers.GetAgentDetails(db, logger))
agents.GET("/:agent_id/download", handlers.DownloadAgent(db, logger))
agents.GET("/:agent_id/download-file", handlers.DownloadAgentFile(db, logger))
agents.GET("/top-downloads", handlers.TopAgentsByDownloads(db, logger))
agents.GET("/featured", handlers.GetFeaturedAgents(db, logger))
agents.GET("/search", handlers.Search(db, logger))
agents.POST("/submit", middleware.Auth(cfg), handlers.SubmitAgent(db, logger))
}
// Admin routes
admin := api.Group("/admin")
{
admin.POST("/agent", middleware.Auth(cfg), handlers.CreateAgentEntry(db, logger))
admin.POST("/agent/featured/:agent_id", middleware.Auth(cfg), handlers.SetAgentFeatured(db, logger))
admin.GET("/agent/featured/:agent_id", middleware.Auth(cfg), handlers.GetAgentFeatured(db, logger))
admin.DELETE("/agent/featured/:agent_id", middleware.Auth(cfg), handlers.UnsetAgentFeatured(db, logger))
admin.GET("/agent/not-featured", middleware.Auth(cfg), handlers.GetNotFeaturedAgents(db, logger))
admin.GET("/agent/submissions", middleware.Auth(cfg), handlers.GetAgentSubmissions(db, logger))
admin.POST("/agent/submissions", middleware.Auth(cfg), handlers.ReviewSubmission(db, logger))
admin.GET("/categories", handlers.GetCategories(db, logger))
}
// Analytics routes
api.POST("/agent-installed", handlers.AgentInstalled(db, logger))
}
// Start server
if err := r.Run(cfg.ServerAddress); err != nil {
logger.Fatal("Failed to start server", zap.Error(err))
logger.Fatal("Failed to start server", zap.Error(err))
}
}