Spaces:
Runtime error
Runtime error
| package controllers | |
| import ( | |
| "github.com/gin-gonic/gin" | |
| entity "abdanhafidz.com/go-boilerplate/models/entity" | |
| "abdanhafidz.com/go-boilerplate/services" | |
| ) | |
| type RegionController interface { | |
| SeedProvinces(ctx *gin.Context) | |
| SeedCities(ctx *gin.Context) | |
| ListProvinces(ctx *gin.Context) | |
| ListCitiesByProvince(ctx *gin.Context) | |
| } | |
| type regionController struct { | |
| regionService services.RegionService | |
| } | |
| func NewRegionController(regionService services.RegionService) RegionController { | |
| return ®ionController{regionService: regionService} | |
| } | |
| func (c *regionController) SeedProvinces(ctx *gin.Context) { | |
| req := RequestJSON[[]entity.RegionProvince](ctx) | |
| err := c.regionService.SeedProvinces(ctx.Request.Context(), req) | |
| ResponseJSON[any](ctx, gin.H{"count": len(req)}, gin.H{"status": "ok"}, err) | |
| } | |
| func (c *regionController) SeedCities(ctx *gin.Context) { | |
| req := RequestJSON[[]entity.RegionCity](ctx) | |
| err := c.regionService.SeedCities(ctx.Request.Context(), req) | |
| ResponseJSON[any](ctx, gin.H{"count": len(req)}, gin.H{"status": "ok"}, err) | |
| } | |
| func (c *regionController) ListProvinces(ctx *gin.Context) { | |
| res, err := c.regionService.ListProvinces(ctx.Request.Context()) | |
| ResponseJSON(ctx, gin.H{}, res, err) | |
| } | |
| func (c *regionController) ListCitiesByProvince(ctx *gin.Context) { | |
| type q struct { | |
| ProvinceID uint `json:"province_id" binding:"required"` | |
| } | |
| req := RequestJSON[q](ctx) | |
| res, err := c.regionService.ListCitiesByProvince(ctx.Request.Context(), req.ProvinceID) | |
| ResponseJSON(ctx, req, res, err) | |
| } | |