fixing reference query get by id
This commit is contained in:
No files matched your search
@@ -2,7 +2,7 @@ package spesialis
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"log"
|
||||
"errors"
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
@@ -14,6 +14,8 @@ const DB_NAME = "db_antrian"
|
||||
type ISpesialisRepository interface {
|
||||
SearchableListSpesialis(c *gin.Context) ([]SpesialisModel, error)
|
||||
SearchableListSubSpesialis(c *gin.Context) ([]SubSpesialisModel, error)
|
||||
GetSpesialisById(c *gin.Context, id int) (SpesialisModel, error)
|
||||
GetSubSpesialisById(c *gin.Context, id int) (SubSpesialisModel, error)
|
||||
}
|
||||
|
||||
type spesialisRepo struct {
|
||||
@@ -38,11 +40,8 @@ func NewRepository(dbService database.Service) ISpesialisRepository {
|
||||
}
|
||||
}
|
||||
|
||||
func (r spesialisRepo) SearchableListSpesialis(c *gin.Context) ([]SpesialisModel, error) {
|
||||
var result []SpesialisModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
func baseQueryListSpesialis() queryUtils.DynamicQuery {
|
||||
return queryUtils.DynamicQuery{
|
||||
From: "daftar_spesialis",
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "id"},
|
||||
@@ -50,33 +49,9 @@ func (r spesialisRepo) SearchableListSpesialis(c *gin.Context) ([]SpesialisModel
|
||||
{Expression: "Spesialis"},
|
||||
},
|
||||
}
|
||||
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "Kode", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
{Column: "Spesialis", 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 {
|
||||
log.Fatalf("unable to connect db %s", err)
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
if err != nil {
|
||||
log.Fatalf("unable to execute query %s", err)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesialisModel, error) {
|
||||
var result []SubSpesialisModel
|
||||
search := c.Query("search")
|
||||
|
||||
func baseQueryListSubSpesialis() queryUtils.DynamicQuery {
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: "daftar_subspesialis",
|
||||
Aliases: "dss",
|
||||
@@ -105,6 +80,45 @@ func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesiali
|
||||
},
|
||||
}
|
||||
|
||||
return query
|
||||
}
|
||||
|
||||
func (r spesialisRepo) SearchableListSpesialis(c *gin.Context) ([]SpesialisModel, error) {
|
||||
var result []SpesialisModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := baseQueryListSpesialis()
|
||||
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "Kode", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
{Column: "Spesialis", 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 {
|
||||
// log.Fatalf("unable to connect db %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to execute query %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesialisModel, error) {
|
||||
var result []SubSpesialisModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := baseQueryListSubSpesialis()
|
||||
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "dss.Kode", Operator: queryUtils.OpILike, Value: "%" + search + "%"},
|
||||
@@ -115,14 +129,74 @@ func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesiali
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
log.Fatalf("unable to connect db %s", err)
|
||||
// log.Fatalf("unable to connect db %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
if err != nil {
|
||||
log.Fatalf("unable to execute query %s", err)
|
||||
// log.Fatalf("unable to execute query %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r spesialisRepo) GetSpesialisById(c *gin.Context, id int) (SpesialisModel, error) {
|
||||
var resultQuery []SpesialisModel
|
||||
var result SpesialisModel
|
||||
|
||||
query := baseQueryListSpesialis()
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "id", Operator: queryUtils.OpEqual, Value: id},
|
||||
}})
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("spesialis not found")
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
|
||||
func (r spesialisRepo) GetSubSpesialisById(c *gin.Context, id int) (SubSpesialisModel, error) {
|
||||
var resultQuery []SubSpesialisModel
|
||||
var result SubSpesialisModel
|
||||
|
||||
query := baseQueryListSubSpesialis()
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "dss.id", Operator: queryUtils.OpEqual, Value: id},
|
||||
}})
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("sub spesialisasi not found")
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
Reference in New Issue
Block a user