fixing reference query get by id
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package dokter
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
baseResponse "antrian-operasi/internal/shared"
|
||||
@@ -32,3 +33,25 @@ func (h DokterHandler) ListDokter(c *gin.Context) {
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// Test repository GetDokterById, soon to be deleted
|
||||
func (h DokterHandler) GetDokterById(c *gin.Context) {
|
||||
var result DokterModel
|
||||
|
||||
idDokter := c.Param("id")
|
||||
|
||||
result, err := h.repo.GetDokterById(c, idDokter)
|
||||
if err != nil {
|
||||
log.Printf("something went wrong : %s", err)
|
||||
c.JSON(http.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
|
||||
response := baseResponse.ToBaseResponse(
|
||||
result.ToResponse(),
|
||||
true,
|
||||
200,
|
||||
"success get doctor's list")
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package dokter
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"log"
|
||||
"errors"
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
@@ -10,12 +10,14 @@ import (
|
||||
)
|
||||
|
||||
const DB_NAME = "db_antrian"
|
||||
const TBL_NAME = "data_pegawai"
|
||||
|
||||
type IDokterRepository interface {
|
||||
SearchableListDokter(c *gin.Context) ([]DokterModel, error)
|
||||
GetDokterById(c *gin.Context, id string) (DokterModel, error)
|
||||
}
|
||||
|
||||
type kategoriRepo struct {
|
||||
type dokterRepo struct {
|
||||
queryBuilder *queryUtils.QueryBuilder
|
||||
db database.Service
|
||||
}
|
||||
@@ -32,19 +34,15 @@ func NewRepository(dbService database.Service) IDokterRepository {
|
||||
})
|
||||
queryBuilder.SetSecurityOptions(false, 100)
|
||||
|
||||
return kategoriRepo{
|
||||
return dokterRepo{
|
||||
queryBuilder: queryBuilder,
|
||||
db: dbService,
|
||||
}
|
||||
}
|
||||
|
||||
func (r kategoriRepo) SearchableListDokter(c *gin.Context) ([]DokterModel, error) {
|
||||
var result []DokterModel
|
||||
search := c.Query("search")
|
||||
|
||||
// base query
|
||||
func baseSelectQuery() queryUtils.DynamicQuery {
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: "data_pegawai",
|
||||
From: TBL_NAME,
|
||||
Aliases: "dp",
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "dp.id", Alias: "id"},
|
||||
@@ -71,6 +69,16 @@ func (r kategoriRepo) SearchableListDokter(c *gin.Context) ([]DokterModel, error
|
||||
},
|
||||
}
|
||||
|
||||
return query
|
||||
}
|
||||
|
||||
func (r dokterRepo) SearchableListDokter(c *gin.Context) ([]DokterModel, error) {
|
||||
var result []DokterModel
|
||||
search := c.Query("search")
|
||||
|
||||
// base query
|
||||
query := baseSelectQuery()
|
||||
|
||||
// base filtering
|
||||
var baseFilter []queryUtils.DynamicFilter
|
||||
baseFilter = append(baseFilter, queryUtils.DynamicFilter{Column: "dp.KSM", Operator: queryUtils.OpNotNull})
|
||||
@@ -93,14 +101,56 @@ func (r kategoriRepo) SearchableListDokter(c *gin.Context) ([]DokterModel, error
|
||||
|
||||
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, nil
|
||||
}
|
||||
|
||||
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, nil
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r dokterRepo) GetDokterById(c *gin.Context, id string) (DokterModel, error) {
|
||||
var resultQuery []DokterModel
|
||||
var result DokterModel
|
||||
|
||||
// base query
|
||||
query := baseSelectQuery()
|
||||
|
||||
// LIMIT 1
|
||||
query.Limit = 1
|
||||
|
||||
// base filtering
|
||||
var baseFilter []queryUtils.DynamicFilter
|
||||
baseFilter = append(baseFilter, queryUtils.DynamicFilter{Column: "dp.KSM", Operator: queryUtils.OpNotNull})
|
||||
|
||||
// filter by id
|
||||
baseFilter = append(baseFilter, queryUtils.DynamicFilter{Column: "dp.id", Operator: queryUtils.OpEqual, Value: id})
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: baseFilter, LogicOp: "AND"})
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to connect db %s", err) // TODO : handling error
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to execute query %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("doctor not found")
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
dokterHandler := NewDokterHandler(dokterRepo)
|
||||
|
||||
r.GET("/dokter", dokterHandler.ListDokter)
|
||||
// r.GET("/dokter/:id", dokterHandler.GetDokterById)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package kategori
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"log"
|
||||
"errors"
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
@@ -10,9 +10,11 @@ import (
|
||||
)
|
||||
|
||||
const DB_NAME = "db_antrian"
|
||||
const TBL_NAME = "daftar_kategori_operasi"
|
||||
|
||||
type IKategoriRepository interface {
|
||||
SearchableListKategori(c *gin.Context) ([]KategoriOperasiModel, error)
|
||||
GetKategoriById(c *gin.Context, id int) (KategoriOperasiModel, error)
|
||||
}
|
||||
|
||||
type kategoriRepo struct {
|
||||
@@ -37,12 +39,9 @@ func NewRepository(dbService database.Service) IKategoriRepository {
|
||||
}
|
||||
}
|
||||
|
||||
func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiModel, error) {
|
||||
var result []KategoriOperasiModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: "daftar_kategori_operasi",
|
||||
func baseSelectQuery() queryUtils.DynamicQuery {
|
||||
return queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "id"},
|
||||
{Expression: "status"},
|
||||
@@ -54,6 +53,13 @@ func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiM
|
||||
{Column: "date_created", Order: "DESC"},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiModel, error) {
|
||||
var result []KategoriOperasiModel
|
||||
search := c.Query("search")
|
||||
|
||||
query := baseSelectQuery()
|
||||
|
||||
if search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
@@ -64,14 +70,47 @@ func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiM
|
||||
|
||||
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 kategoriRepo) GetKategoriById(c *gin.Context, id int) (KategoriOperasiModel, error) {
|
||||
var resultQuery []KategoriOperasiModel
|
||||
var result KategoriOperasiModel
|
||||
|
||||
query := baseSelectQuery()
|
||||
|
||||
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 {
|
||||
// log.Fatalf("unable to connect db %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to execute query %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("kategori not found")
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
|
||||
@@ -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