update doc list api antrian + pagination
This commit is contained in:
No files matched your search
@@ -81,6 +81,8 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
// @Tags Antrian Operasi
|
||||
// @Param search query string false "Search Keyword"
|
||||
// @Param type query string false "Type antrian : all, kategori, spesialis, sub-spesialis"
|
||||
// @Param limit query string false "Limit" default(10)
|
||||
// @Param offset query string false "Offset" default(0)
|
||||
// @Success 200 {object} []PasienOperasi
|
||||
// @Failure 500 {object} shared.BaseErrorResponse
|
||||
// @Router /antrian-operasi/ [get]
|
||||
@@ -95,5 +97,8 @@ func (h AntrianOperasiHandler) GetListAntrianOperasi(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200, shared.ToBaseResponse(res, true, 200, "success get list antrian operasi"))
|
||||
c.JSON(200,
|
||||
shared.ToBaseResponsePaginate(
|
||||
res.Data, res.Paging, true, 200, "success get list antrian operasi",
|
||||
))
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package antrianoperasi
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"antrian-operasi/internal/shared"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PasienOperasi struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
@@ -17,3 +20,8 @@ type PasienOperasi struct {
|
||||
NoUrutSpesialis int `db:"no_urut_spesialis"`
|
||||
NoUrutSubSpesialis int `db:"no_urut_sub_spesialis"`
|
||||
}
|
||||
|
||||
type ListPasienOperasiPaginate struct {
|
||||
Data []PasienOperasi
|
||||
Paging shared.PaginationInfo
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package antrianoperasi
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"antrian-operasi/internal/shared"
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
"log"
|
||||
"slices"
|
||||
@@ -16,7 +17,7 @@ const TBL_NAME = "data_pasien_operasi"
|
||||
|
||||
type IAntrianOperasiRepository interface {
|
||||
CreateAntrianOperasi(c *gin.Context, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error)
|
||||
SearchableListAntrianOperasi(c *gin.Context) ([]PasienOperasi, error)
|
||||
SearchableListAntrianOperasi(c *gin.Context) (ListPasienOperasiPaginate, error)
|
||||
}
|
||||
|
||||
type antrianOperasiRepo struct {
|
||||
@@ -267,8 +268,8 @@ func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasie
|
||||
return req, nil
|
||||
}
|
||||
|
||||
func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]PasienOperasi, error) {
|
||||
var result []PasienOperasi
|
||||
func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) (ListPasienOperasiPaginate, error) {
|
||||
var result ListPasienOperasiPaginate
|
||||
search := c.Query("search")
|
||||
availableType := []string{"all", "kategori", "spesialis", "sub-spesialis"}
|
||||
antrianType := c.Query("type")
|
||||
@@ -277,6 +278,9 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]Pasi
|
||||
antrianType = "all"
|
||||
}
|
||||
|
||||
limit := shared.ParseQueryLimit(c)
|
||||
offset := shared.ParseQueryOffset(c)
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Aliases: "dpo",
|
||||
@@ -292,7 +296,6 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]Pasi
|
||||
{Expression: "ddpo.Diagnosa", Alias: "diagnosa"},
|
||||
{Expression: "dko.Kategori", Alias: "kategori"},
|
||||
},
|
||||
Limit: 10,
|
||||
Sort: []queryUtils.SortField{
|
||||
{Column: "dpo.Tanggal_daftar", Order: "ASC"}},
|
||||
}
|
||||
@@ -390,16 +393,33 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c *gin.Context) ([]Pasi
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
|
||||
}
|
||||
|
||||
// TODO Filtering status
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
log.Printf("Unable to connect db : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &result)
|
||||
// query count
|
||||
countData, err := r.queryBuilder.ExecuteCount(c, dbconn, query)
|
||||
if err != nil {
|
||||
log.Printf("Unable to execute query : %s", err)
|
||||
log.Printf("Unable to execute query count : %s ", err)
|
||||
return result, err
|
||||
}
|
||||
result.Paging.Limit = limit
|
||||
result.Paging.Offset = offset
|
||||
result.Paging.Total = int(countData)
|
||||
result.Paging.CalculatePagingInfo()
|
||||
|
||||
// query data
|
||||
queryData := query
|
||||
queryData.Limit = limit
|
||||
queryData.Offset = offset
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, queryData, &result.Data)
|
||||
if err != nil {
|
||||
log.Printf("Unable to execute query data : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user