perbaikan
This commit is contained in:
@@ -3,8 +3,7 @@ package handlers
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"api-service/internal/models/employee"
|
||||
|
||||
"api-service/internal/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
@@ -14,66 +13,70 @@ type EmployeeHandler struct{}
|
||||
|
||||
// NewEmployeeHandler creates a new EmployeeHandler
|
||||
func NewEmployeeHandler() *EmployeeHandler {
|
||||
// return &%!s(MISSING)Handler{}
|
||||
return &EmployeeHandler{}
|
||||
}
|
||||
|
||||
// GetEmployee godoc
|
||||
// @Summary Get employee
|
||||
// @Description Returns a list of employees
|
||||
// @Tags employee
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 200 {object} employee.EmployeeGetResponse "Employee GET response"
|
||||
// @Success 200 {object} models.EmployeeGetResponse "Employee GET response"
|
||||
// @Router /api/v1/employees [get]
|
||||
func (h *EmployeeHandler) GetEmployee(c *gin.Context) {
|
||||
response := employee.EmployeeGetResponse{
|
||||
Message: "List of Employee",
|
||||
response := models.EmployeeGetResponse{
|
||||
Message: "List of employees",
|
||||
Data: []string{"Employee 1", "Employee 2"},
|
||||
}
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// GetemployeeByID godoc
|
||||
// GetEmployeeByID godoc
|
||||
// @Summary Get employee by ID
|
||||
// @Description Returns a single employee by ID
|
||||
// @Tags Employee
|
||||
// @Tags employee
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "employee ID"
|
||||
// @Success 200 {object} Employee.EmployeeGetByIDResponse "employee GET by ID response"
|
||||
// @Failure 404 {object} Employee.ErrorResponse "Employee not found"
|
||||
// @Router /api/v1/employee/{id} [get]
|
||||
func (h *EmployeeHandler) GetemployeeByID(c *gin.Context) {
|
||||
// @Param id path string true "Employee ID"
|
||||
// @Success 200 {object} models.EmployeeGetByIDResponse "Employee GET by ID response"
|
||||
// @Failure 404 {object} models.ErrorResponse "employee not found"
|
||||
// @Router /api/v1/Employee/{id} [get]
|
||||
func (h *EmployeeHandler) GetEmployeeByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
response := Employee.%!s(MISSING)GetByIDResponse{
|
||||
response := models.EmployeeGetByIDResponse{
|
||||
ID: id,
|
||||
Message: "%!s(MISSING) details",
|
||||
Message: "employee details",
|
||||
}
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
}%!(EXTRA string=Employee)
|
||||
|
||||
// CreateEmployee godoc
|
||||
// @Summary Create employee
|
||||
// @Description Creates a new employee
|
||||
// @Tags employee
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param request body employee.EmployeeCreateRequest true "Employee creation request"
|
||||
// @Success 201 {object} employee.EmployeeCreateResponse "Employee created successfully"
|
||||
// @Failure 400 {object} employee.ErrorResponse "Bad request"
|
||||
// @Router /api/v1/Employee [post]
|
||||
func (h *EmployeeHandler) Createemployee(c *gin.Context) {
|
||||
var req Employee.EmployeeCreateRequest
|
||||
// @Param request body models.EmployeeCreateRequest true "Employee creation request"
|
||||
// @Success 201 {object} models.EmployeeCreateResponse "Employee created successfully"
|
||||
// @Failure 400 {object} models.ErrorResponse "Bad request"
|
||||
// @Router /api/v1/employees [post]
|
||||
func (h *EmployeeHandler) CreateEmployee(c *gin.Context) {
|
||||
var req models.EmployeeCreateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
response := %!s(MISSING).%!s(MISSING)CreateResponse{
|
||||
response := models.EmployeeCreateResponse{
|
||||
ID: uuid.NewString(),
|
||||
Message: "%!s(MISSING) created successfully",
|
||||
Message: "Employee created successfully",
|
||||
Data: req,
|
||||
}
|
||||
c.JSON(http.StatusCreated, response)
|
||||
}
|
||||
|
||||
// UpdateEmployee godoc
|
||||
// @Summary Update employee
|
||||
// @Description Updates an existing employee
|
||||
@@ -81,26 +84,27 @@ func (h *EmployeeHandler) Createemployee(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "Employee ID"
|
||||
// @Param request body employee.EmployeeUpdateRequest true "Employee update request"
|
||||
// @Success 200 {object} Employee.employeeUpdateResponse "Employee updated successfully"
|
||||
// @Failure 400 {object} employee.ErrorResponse "Bad request"
|
||||
// @Failure 404 {object} Employee.ErrorResponse "employee not found"
|
||||
// @Param request body models.employeeUpdateRequest true "Employee update request"
|
||||
// @Success 200 {object} models.EmployeeUpdateResponse "Employee updated successfully"
|
||||
// @Failure 400 {object} models.ErrorResponse "Bad request"
|
||||
// @Failure 404 {object} models.ErrorResponse "employee not found"
|
||||
// @Router /api/v1/Employee/{id} [put]
|
||||
func (h *EmployeeHandler) UpdateEmployee(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req Employee.%!s(MISSING)UpdateRequest
|
||||
var req models.employeeUpdateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
response := %!s(MISSING).%!s(MISSING)UpdateResponse{
|
||||
response := models.EmployeeUpdateResponse{
|
||||
ID: id,
|
||||
Message: "%!s(MISSING) updated successfully",
|
||||
Message: "Employee updated successfully",
|
||||
Data: req,
|
||||
}
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
}%!(EXTRA string=Employee, string=Employee)
|
||||
|
||||
// DeleteEmployee godoc
|
||||
// @Summary Delete employee
|
||||
// @Description Deletes a employee by ID
|
||||
@@ -108,14 +112,14 @@ func (h *EmployeeHandler) UpdateEmployee(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "Employee ID"
|
||||
// @Success 200 {object} employee.EmployeeDeleteResponse "Employee deleted successfully"
|
||||
// @Failure 404 {object} employee.ErrorResponse "Employee not found"
|
||||
// @Router /api/v1/Employee/{id} [delete]
|
||||
func (h *employeeHandler) DeleteEmployee(c *gin.Context) {
|
||||
// @Success 200 {object} models.employeeDeleteResponse "Employee deleted successfully"
|
||||
// @Failure 404 {object} models.ErrorResponse "Employee not found"
|
||||
// @Router /api/v1/employee/{id} [delete]
|
||||
func (h *EmployeeHandler) DeleteEmployee(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
response := Employee.%!s(MISSING)DeleteResponse{
|
||||
response := models.EmployeeDeleteResponse{
|
||||
ID: id,
|
||||
Message: "%!s(MISSING) deleted successfully",
|
||||
Message: "Employee deleted successfully",
|
||||
}
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
@@ -11,36 +11,36 @@ type EmployeeGetByIDResponse struct {
|
||||
ID string `json:"id"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
%!(EXTRA string=employee, string=Employee)// EmployeeCreateRequest represents the request for creating employee
|
||||
// EmployeeCreateRequest represents the request for creating employee
|
||||
type EmployeeCreateRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
// Add more fields as needed
|
||||
}
|
||||
|
||||
// employeeCreateResponse represents the response for creating Employee
|
||||
type employeeCreateResponse struct {
|
||||
// EmployeeCreateResponse represents the response for creating employee
|
||||
type EmployeeCreateResponse struct {
|
||||
ID string `json:"id"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
%!(EXTRA string=Employee)// EmployeeUpdateRequest represents the request for updating employee
|
||||
// EmployeeUpdateRequest represents the request for updating employee
|
||||
type EmployeeUpdateRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
// Add more fields as needed
|
||||
}
|
||||
|
||||
// employeeUpdateResponse represents the response for updating Employee
|
||||
type employeeUpdateResponse struct {
|
||||
// EmployeeUpdateResponse represents the response for updating employee
|
||||
type EmployeeUpdateResponse struct {
|
||||
ID string `json:"id"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
%!(EXTRA string=Employee)// EmployeeDeleteResponse represents the response for deleting employee
|
||||
// EmployeeDeleteResponse represents the response for deleting employee
|
||||
type EmployeeDeleteResponse struct {
|
||||
ID string `json:"id"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
%!(EXTRA string=employee)// ErrorResponse represents an error response
|
||||
// ErrorResponse represents an error response
|
||||
type ErrorResponse struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
@@ -56,6 +56,8 @@ func RegisterRoutes(cfg *config.Config) *gin.Engine {
|
||||
|
||||
// Protected routes (require authentication)
|
||||
|
||||
|
||||
|
||||
// Employee endpoints
|
||||
employeeHandler := employeeHandlers.NewEmployeeHandler()
|
||||
v1.GET("/employees", employeeHandler.GetEmployee)
|
||||
|
||||
@@ -107,8 +107,7 @@ func generateHandlerFile(data HandlerData, handlerDir string) {
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"api-service/internal/models/%s"
|
||||
|
||||
"api-service/internal/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
@@ -119,23 +118,24 @@ type %sHandler struct{}
|
||||
// New%sHandler creates a new %sHandler
|
||||
func New%sHandler() *%sHandler {
|
||||
return &%sHandler{}
|
||||
}`, data.NameLower, data.Name, data.NameLower, data.Name, data.Name, data.Name, data.Name, data.Name)
|
||||
}`, data.Name, data.NameLower, data.Name, data.Name, data.Name, data.Name, data.Name)
|
||||
|
||||
// Add methods based on requested operations
|
||||
var methodsContent string
|
||||
|
||||
if data.HasGet {
|
||||
methodsContent += fmt.Sprintf(`
|
||||
|
||||
// Get%s godoc
|
||||
// @Summary Get %s
|
||||
// @Description Returns a list of %s
|
||||
// @Tags %s
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 200 {object} %s.%sGetResponse "%s GET response"
|
||||
// @Success 200 {object} models.%sGetResponse "%s GET response"
|
||||
// @Router /api/v1/%s [get]
|
||||
func (h *%sHandler) Get%s(c *gin.Context) {
|
||||
response := %s.%sGetResponse{
|
||||
response := models.%sGetResponse{
|
||||
Message: "List of %s",
|
||||
Data: []string{"%s 1", "%s 2"},
|
||||
}
|
||||
@@ -149,45 +149,46 @@ func (h *%sHandler) Get%s(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "%s ID"
|
||||
// @Success 200 {object} %s.%sGetByIDResponse "%s GET by ID response"
|
||||
// @Failure 404 {object} %s.ErrorResponse "%s not found"
|
||||
// @Success 200 {object} models.%sGetByIDResponse "%s GET by ID response"
|
||||
// @Failure 404 {object} models.ErrorResponse "%s not found"
|
||||
// @Router /api/v1/%s/{id} [get]
|
||||
func (h *%sHandler) Get%sByID(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
response := %s.%sGetByIDResponse{
|
||||
response := models.%sGetByIDResponse{
|
||||
ID: id,
|
||||
Message: "%s details",
|
||||
}
|
||||
c.JSON(http.StatusOK, response)
|
||||
}`,
|
||||
data.Name, data.NameLower, data.NamePlural, data.NameLower,
|
||||
data.NameLower, data.Name, data.Name, data.NamePlural,
|
||||
data.Name, data.Name, data.NameLower, data.Name, data.Name, data.Name,
|
||||
data.Name, data.Name, data.NamePlural,
|
||||
data.Name, data.Name, data.Name, data.NamePlural, data.Name, data.Name,
|
||||
data.Name, data.NameLower, data.NameLower, data.NameLower,
|
||||
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
|
||||
data.Name, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
|
||||
data.Name, data.Name, data.Name, data.NameLower, data.Name,
|
||||
data.Name, data.Name, data.Name, data.NameLower, data.Name)
|
||||
}
|
||||
|
||||
if data.HasPost {
|
||||
methodsContent += fmt.Sprintf(`
|
||||
|
||||
// Create%s godoc
|
||||
// @Summary Create %s
|
||||
// @Description Creates a new %s
|
||||
// @Tags %s
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param request body %s.%sCreateRequest true "%s creation request"
|
||||
// @Success 201 {object} %s.%sCreateResponse "%s created successfully"
|
||||
// @Failure 400 {object} %s.ErrorResponse "Bad request"
|
||||
// @Param request body models.%sCreateRequest true "%s creation request"
|
||||
// @Success 201 {object} models.%sCreateResponse "%s created successfully"
|
||||
// @Failure 400 {object} models.ErrorResponse "Bad request"
|
||||
// @Router /api/v1/%s [post]
|
||||
func (h *%sHandler) Create%s(c *gin.Context) {
|
||||
var req %s.%sCreateRequest
|
||||
var req models.%sCreateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
response := %s.%sCreateResponse{
|
||||
response := models.%sCreateResponse{
|
||||
ID: uuid.NewString(),
|
||||
Message: "%s created successfully",
|
||||
Data: req,
|
||||
@@ -195,13 +196,13 @@ func (h *%sHandler) Create%s(c *gin.Context) {
|
||||
c.JSON(http.StatusCreated, response)
|
||||
}`,
|
||||
data.Name, data.NameLower, data.NameLower, data.NameLower,
|
||||
data.NameLower, data.Name, data.Name, data.NameLower, data.Name,
|
||||
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
|
||||
data.Name, data.Name)
|
||||
data.Name, data.Name, data.Name, data.Name, data.NamePlural,
|
||||
data.Name, data.Name, data.Name, data.Name, data.Name)
|
||||
}
|
||||
|
||||
if data.HasPut {
|
||||
methodsContent += fmt.Sprintf(`
|
||||
|
||||
// Update%s godoc
|
||||
// @Summary Update %s
|
||||
// @Description Updates an existing %s
|
||||
@@ -209,20 +210,20 @@ func (h *%sHandler) Create%s(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "%s ID"
|
||||
// @Param request body %s.%sUpdateRequest true "%s update request"
|
||||
// @Success 200 {object} %s.%sUpdateResponse "%s updated successfully"
|
||||
// @Failure 400 {object} %s.ErrorResponse "Bad request"
|
||||
// @Failure 404 {object} %s.ErrorResponse "%s not found"
|
||||
// @Param request body models.%sUpdateRequest true "%s update request"
|
||||
// @Success 200 {object} models.%sUpdateResponse "%s updated successfully"
|
||||
// @Failure 400 {object} models.ErrorResponse "Bad request"
|
||||
// @Failure 404 {object} models.ErrorResponse "%s not found"
|
||||
// @Router /api/v1/%s/{id} [put]
|
||||
func (h *%sHandler) Update%s(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req %s.%sUpdateRequest
|
||||
var req models.%sUpdateRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
response := %s.%sUpdateResponse{
|
||||
response := models.%sUpdateResponse{
|
||||
ID: id,
|
||||
Message: "%s updated successfully",
|
||||
Data: req,
|
||||
@@ -231,12 +232,13 @@ func (h *%sHandler) Update%s(c *gin.Context) {
|
||||
}`,
|
||||
data.Name, data.NameLower, data.NameLower, data.NameLower,
|
||||
data.Name, data.NameLower, data.Name, data.Name, data.Name,
|
||||
data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower,
|
||||
data.NameLower, data.Name, data.Name, data.Name, data.NameLower,
|
||||
data.Name, data.Name, data.Name, data.Name)
|
||||
}
|
||||
|
||||
if data.HasDelete {
|
||||
methodsContent += fmt.Sprintf(`
|
||||
|
||||
// Delete%s godoc
|
||||
// @Summary Delete %s
|
||||
// @Description Deletes a %s by ID
|
||||
@@ -244,12 +246,12 @@ func (h *%sHandler) Update%s(c *gin.Context) {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "%s ID"
|
||||
// @Success 200 {object} %s.%sDeleteResponse "%s deleted successfully"
|
||||
// @Failure 404 {object} %s.ErrorResponse "%s not found"
|
||||
// @Success 200 {object} models.%sDeleteResponse "%s deleted successfully"
|
||||
// @Failure 404 {object} models.ErrorResponse "%s not found"
|
||||
// @Router /api/v1/%s/{id} [delete]
|
||||
func (h *%sHandler) Delete%s(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
response := %s.%sDeleteResponse{
|
||||
response := models.%sDeleteResponse{
|
||||
ID: id,
|
||||
Message: "%s deleted successfully",
|
||||
}
|
||||
@@ -257,7 +259,7 @@ func (h *%sHandler) Delete%s(c *gin.Context) {
|
||||
}`,
|
||||
data.Name, data.NameLower, data.NameLower, data.NameLower,
|
||||
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
|
||||
data.Name, data.Name, data.NameLower, data.Name, data.Name)
|
||||
data.Name, data.Name, data.Name, data.Name)
|
||||
}
|
||||
|
||||
fullContent := handlerContent + methodsContent
|
||||
@@ -280,10 +282,11 @@ type %sGetByIDResponse struct {
|
||||
ID string `+"`json:\"id\"`"+`
|
||||
Message string `+"`json:\"message\"`"+`
|
||||
}
|
||||
`, data.Name, data.NamePlural, data.Name, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
|
||||
`, data.Name, data.NamePlural, data.Name, data.Name, data.NameLower, data.Name)
|
||||
}
|
||||
|
||||
if data.HasPost {
|
||||
modelContent += fmt.Sprintf(`// %sCreateRequest represents the request for creating %s
|
||||
type %sCreateRequest struct {
|
||||
Name string `+"`json:\"name\" binding:\"required\"`"+`
|
||||
// Add more fields as needed
|
||||
@@ -295,7 +298,7 @@ type %sCreateResponse struct {
|
||||
Message string `+"`json:\"message\"`"+`
|
||||
Data interface{} `+"`json:\"data\"`"+`
|
||||
}
|
||||
`, data.Name, data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
|
||||
`, data.Name, data.NameLower, data.Name, data.Name, data.NameLower, data.Name)
|
||||
}
|
||||
|
||||
if data.HasPut {
|
||||
@@ -311,7 +314,7 @@ type %sUpdateResponse struct {
|
||||
Message string `+"`json:\"message\"`"+`
|
||||
Data interface{} `+"`json:\"data\"`"+`
|
||||
}
|
||||
`, data.Name, data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
|
||||
`, data.Name, data.NameLower, data.Name, data.Name, data.NameLower, data.Name)
|
||||
}
|
||||
|
||||
if data.HasDelete {
|
||||
@@ -320,7 +323,7 @@ type %sDeleteResponse struct {
|
||||
ID string `+"`json:\"id\"`"+`
|
||||
Message string `+"`json:\"message\"`"+`
|
||||
}
|
||||
`, data.Name, data.NameLower, data.Name, data.NameLower)
|
||||
`, data.Name, data.NameLower, data.Name)
|
||||
}
|
||||
|
||||
modelContent += `// ErrorResponse represents an error response
|
||||
|
||||
Reference in New Issue
Block a user