perbaikan

This commit is contained in:
2025-08-26 22:46:21 +07:00
parent 7c16fd17f8
commit e118b20129
5 changed files with 34 additions and 992 deletions

View File

@@ -134,7 +134,7 @@ func main() {
// Generate files
generateHandlerFile(data, handlerDir)
generateModelFile(data, modelDir)
updateRoutesFile(data)
// updateRoutesFile(data)
fmt.Printf("✅ Successfully generated handler: %s\n", entityName)
if category != "" {
@@ -186,19 +186,19 @@ import (
)
var (
db database.Service
once sync.Once
validate *validator.Validate
` + data.NameLower + `db database.Service
` + data.NameLower + `once sync.Once
` + data.NameLower + `validate *validator.Validate
)
// Initialize the database connection and validator
func init() {
once.Do(func() {
db = database.New(config.LoadConfig())
validate = validator.New()
` + data.NameLower + `once.Do(func() {
` + data.NameLower + `db = database.New(config.LoadConfig())
` + data.NameLower + `validate = validator.New()
// Register custom validations if needed
validate.RegisterValidation("` + data.NameLower + `_status", validate` + data.Name + `Status)
if db == nil {
` + data.NameLower + `validate.RegisterValidation("` + data.NameLower + `_status", validate` + data.Name + `Status)
if ` + data.NameLower + `db == nil {
log.Fatal("Failed to initialize database connection")
}
})
@@ -217,7 +217,7 @@ type ` + data.Name + `Handler struct {
// New` + data.Name + `Handler creates a new ` + data.Name + `Handler
func New` + data.Name + `Handler() *` + data.Name + `Handler {
return &` + data.Name + `Handler{
db: db,
db: ` + data.NameLower + `db,
}
}`
@@ -578,7 +578,7 @@ func (h *` + data.Name + `Handler) Create` + data.Name + `(c *gin.Context) {
}
// Validate request
if err := validate.Struct(&req); err != nil {
if err := ` + data.NameLower + `validate.Struct(&req); err != nil {
h.respondError(c, "Validation failed", err, http.StatusBadRequest)
return
}
@@ -648,7 +648,7 @@ func (h *` + data.Name + `Handler) Update` + data.Name + `(c *gin.Context) {
req.ID = id
// Validate request
if err := validate.Struct(&req); err != nil {
if err := ` + data.NameLower + `validate.Struct(&req); err != nil {
h.respondError(c, "Validation failed", err, http.StatusBadRequest)
return
}
@@ -967,18 +967,28 @@ func (h *` + data.Name + `Handler) fetch` + data.Name + `sDynamic(ctx context.Co
return items, total, nil
}
// Optimized scanning function yang menggunakan sql.Null* types langsung
func (h *` + data.Name + `Handler) scan` + data.Name + `(rows *sql.Rows) (models` + data.NameLower + `.` + data.Name + `, error) {
var item models` + data.NameLower + `.` + data.Name + `
return item, rows.Scan(
&item.ID, &item.Status, &item.Sort, &item.UserCreated,
&item.DateCreated, &item.UserUpdated, &item.DateUpdated, &item.Name,
)
}`
`
}
helperMethods += `
// Optimized scanning function
func (h *` + data.Name + `Handler) scan` + data.Name + `(rows *sql.Rows) (models` + data.NameLower + `.` + data.Name + `, error) {
var item models` + data.NameLower + `.` + data.Name + `
// Scan into individual fields to handle nullable types properly
err := rows.Scan(
&item.ID,
&item.Status,
&item.Sort.Int32, &item.Sort.Valid, // models.NullableInt32
&item.UserCreated.String, &item.UserCreated.Valid, // sql.NullString
&item.DateCreated.Time, &item.DateCreated.Valid, // sql.NullTime
&item.UserUpdated.String, &item.UserUpdated.Valid, // sql.NullString
&item.DateUpdated.Time, &item.DateUpdated.Valid, // sql.NullTime
&item.Name.String, &item.Name.Valid, // sql.NullString
)
return item, err
}
func (h *` + data.Name + `Handler) getTotalCount(ctx context.Context, dbConn *sql.DB, filter models` + data.NameLower + `.` + data.Name + `Filter, total *int) error {
whereClause, args := h.buildWhereClause(filter)