perbaikan queri
This commit is contained in:
@@ -403,7 +403,57 @@ func (h *RetribusiHandler) SearchRetribusiAdvanced(c *gin.Context) {
|
||||
// Parse complex search parameters
|
||||
searchQuery := c.Query("q")
|
||||
if searchQuery == "" {
|
||||
h.respondError(c, "Search query is required", fmt.Errorf("empty search query"), http.StatusBadRequest)
|
||||
// If no search query provided, return all records with default sorting
|
||||
query := utils.DynamicQuery{
|
||||
Fields: []string{"*"},
|
||||
Filters: []utils.FilterGroup{}, // Empty filters - fetchRetribusisDynamic will add default deleted filter
|
||||
Sort: []utils.SortField{{
|
||||
Column: "date_created",
|
||||
Order: "DESC",
|
||||
}},
|
||||
Limit: 20,
|
||||
Offset: 0,
|
||||
}
|
||||
|
||||
// Parse pagination if provided
|
||||
if limit := c.Query("limit"); limit != "" {
|
||||
if l, err := strconv.Atoi(limit); err == nil && l > 0 && l <= 100 {
|
||||
query.Limit = l
|
||||
}
|
||||
}
|
||||
|
||||
if offset := c.Query("offset"); offset != "" {
|
||||
if o, err := strconv.Atoi(offset); err == nil && o >= 0 {
|
||||
query.Offset = o
|
||||
}
|
||||
}
|
||||
|
||||
// Get database connection
|
||||
dbConn, err := h.db.GetDB("postgres_satudata")
|
||||
if err != nil {
|
||||
h.logAndRespondError(c, "Database connection failed", err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(c.Request.Context(), 30*time.Second)
|
||||
defer cancel()
|
||||
|
||||
// Execute query to get all records
|
||||
retribusis, total, err := h.fetchRetribusisDynamic(ctx, dbConn, query)
|
||||
if err != nil {
|
||||
h.logAndRespondError(c, "Failed to fetch data", err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// Build response
|
||||
meta := h.calculateMeta(query.Limit, query.Offset, total)
|
||||
response := retribusi.RetribusiGetResponse{
|
||||
Message: "All records retrieved (no search query provided)",
|
||||
Data: retribusis,
|
||||
Meta: meta,
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -412,11 +462,6 @@ func (h *RetribusiHandler) SearchRetribusiAdvanced(c *gin.Context) {
|
||||
Fields: []string{"*"},
|
||||
Filters: []utils.FilterGroup{{
|
||||
Filters: []utils.DynamicFilter{
|
||||
{
|
||||
Column: "status",
|
||||
Operator: utils.OpNotEqual,
|
||||
Value: "deleted",
|
||||
},
|
||||
{
|
||||
Column: "Jenis",
|
||||
Operator: utils.OpContains,
|
||||
|
||||
@@ -116,17 +116,17 @@ func RegisterRoutes(cfg *config.Config) *gin.Engine {
|
||||
searchGroup.GET("/bynokartu/:nokartu", searchHandler.GetBynokartu)
|
||||
|
||||
// // Retribusi endpoints
|
||||
// retribusiHandler := retribusiHandlers.NewRetribusiHandler()
|
||||
// retribusiGroup := v1.Group("/retribusi")
|
||||
// {
|
||||
// retribusiGroup.GET("", retribusiHandler.GetRetribusi)
|
||||
// retribusiGroup.GET("/dynamic", retribusiHandler.GetRetribusiDynamic) // Route baru
|
||||
// retribusiGroup.GET("/search", retribusiHandler.SearchRetribusiAdvanced) // Route pencarian
|
||||
// retribusiGroup.GET("/:id", retribusiHandler.GetRetribusiByID)
|
||||
// retribusiGroup.POST("", retribusiHandler.CreateRetribusi)
|
||||
// retribusiGroup.PUT("/:id", retribusiHandler.UpdateRetribusi)
|
||||
// retribusiGroup.DELETE("/:id", retribusiHandler.DeleteRetribusi)
|
||||
// }
|
||||
retribusiHandler := retribusiHandlers.NewRetribusiHandler()
|
||||
retribusiGroup := v1.Group("/retribusi")
|
||||
{
|
||||
retribusiGroup.GET("", retribusiHandler.GetRetribusi)
|
||||
retribusiGroup.GET("/dynamic", retribusiHandler.GetRetribusiDynamic) // Route baru
|
||||
retribusiGroup.GET("/search", retribusiHandler.SearchRetribusiAdvanced) // Route pencarian
|
||||
retribusiGroup.GET("/id/:id", retribusiHandler.GetRetribusiByID)
|
||||
retribusiGroup.POST("", retribusiHandler.CreateRetribusi)
|
||||
retribusiGroup.PUT("/id/:id", retribusiHandler.UpdateRetribusi)
|
||||
retribusiGroup.DELETE("/id/:id", retribusiHandler.DeleteRetribusi)
|
||||
}
|
||||
// =============================================================================
|
||||
// PROTECTED ROUTES (Authentication Required)
|
||||
// =============================================================================
|
||||
@@ -136,18 +136,18 @@ func RegisterRoutes(cfg *config.Config) *gin.Engine {
|
||||
protected.Use(middleware.ConfigurableAuthMiddleware(cfg)) // Use configurable authentication
|
||||
|
||||
// User profile (protected)
|
||||
protected.GET("/auth/me", authHandler.Me)
|
||||
// protected.GET("/auth/me", authHandler.Me)
|
||||
|
||||
// Retribusi endpoints (CRUD operations - should be protected)
|
||||
retribusiHandler := retribusiHandlers.NewRetribusiHandler()
|
||||
protectedRetribusi := protected.Group("/retribusi")
|
||||
{
|
||||
protectedRetribusi.GET("", retribusiHandler.GetRetribusi) // GET /api/v1/retribusi
|
||||
protectedRetribusi.GET("/:id", retribusiHandler.GetRetribusiByID) // GET /api/v1/retribusi/:id
|
||||
protectedRetribusi.POST("/", retribusiHandler.CreateRetribusi) // POST /api/v1/retribusi/
|
||||
protectedRetribusi.PUT("/:id", retribusiHandler.UpdateRetribusi) // PUT /api/v1/retribusi/:id
|
||||
protectedRetribusi.DELETE("/:id", retribusiHandler.DeleteRetribusi) // DELETE /api/v1/retribusi/:id
|
||||
}
|
||||
// // Retribusi endpoints (CRUD operations - should be protected)
|
||||
// retribusiHandler := retribusiHandlers.NewRetribusiHandler()
|
||||
// protectedRetribusi := protected.Group("/retribusi")
|
||||
// {
|
||||
// protectedRetribusi.GET("", retribusiHandler.GetRetribusi) // GET /api/v1/retribusi
|
||||
// protectedRetribusi.GET("/:id", retribusiHandler.GetRetribusiByID) // GET /api/v1/retribusi/:id
|
||||
// protectedRetribusi.POST("/", retribusiHandler.CreateRetribusi) // POST /api/v1/retribusi/
|
||||
// protectedRetribusi.PUT("/:id", retribusiHandler.UpdateRetribusi) // PUT /api/v1/retribusi/:id
|
||||
// protectedRetribusi.DELETE("/:id", retribusiHandler.DeleteRetribusi) // DELETE /api/v1/retribusi/:id
|
||||
// }
|
||||
|
||||
// // BPJS VClaim endpoints (require authentication)
|
||||
// // Peserta routes
|
||||
|
||||
Reference in New Issue
Block a user