70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package tindakan
|
|
|
|
import (
|
|
"antrian-operasi/internal/database"
|
|
|
|
queryUtils "antrian-operasi/internal/utils/query"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const DB_NAME = "db_simrs"
|
|
const TBL_NAME = "icd_cm"
|
|
|
|
type ITindakanRepository interface {
|
|
SearchableListTindakan(c *gin.Context) (ListTindakanModel, error)
|
|
}
|
|
|
|
type diagnosaRepo struct {
|
|
queryBuilder *queryUtils.QueryBuilder
|
|
db database.Service
|
|
}
|
|
|
|
func NewRepository(dbService database.Service) ITindakanRepository {
|
|
queryBuilder := queryUtils.NewQueryBuilder(queryUtils.DBTypePostgreSQL).
|
|
SetAllowedColumns([]string{
|
|
"kode", "keterangan",
|
|
}).
|
|
SetSecurityOptions(false, 100)
|
|
|
|
return diagnosaRepo{
|
|
queryBuilder: queryBuilder,
|
|
db: dbService,
|
|
}
|
|
}
|
|
|
|
func (r diagnosaRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel, error) {
|
|
var result ListTindakanModel
|
|
search := c.Query("search")
|
|
|
|
query := queryUtils.DynamicQuery{
|
|
From: TBL_NAME,
|
|
Fields: []queryUtils.SelectField{
|
|
{Expression: "kode"},
|
|
{Expression: "keterangan"},
|
|
},
|
|
Limit: 10,
|
|
}
|
|
|
|
if search != "" {
|
|
searchFilters := []queryUtils.DynamicFilter{
|
|
{Column: "kode", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
|
{Column: "keterangan", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
|
}
|
|
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
|
|
}
|
|
|
|
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
|
if err != nil {
|
|
return result, err
|
|
}
|
|
|
|
err = r.queryBuilder.ExecuteQuery(
|
|
c, dbconn, query, &result)
|
|
if err != nil {
|
|
return result, err
|
|
}
|
|
|
|
return result, nil
|
|
}
|