From af80d8c7f6b9a7b48c5b60c6762823ae0ccdb935 Mon Sep 17 00:00:00 2001 From: renaldybrada Date: Thu, 19 Feb 2026 11:42:57 +0700 Subject: [PATCH] refactor reference repository --- .../antrian_operasi/requestValidation.go | 4 ++-- internal/domain/reference/diagnosa/handler.go | 4 +++- .../domain/reference/diagnosa/repository.go | 11 ++++----- internal/domain/reference/dokter/handler.go | 10 +++++--- .../domain/reference/dokter/repository.go | 15 +++++------- internal/domain/reference/kategori/handler.go | 3 ++- .../domain/reference/kategori/repository.go | 11 ++++----- internal/domain/reference/pasien/handler.go | 4 +++- .../domain/reference/pasien/repository.go | 11 ++++----- .../domain/reference/spesialis/handler.go | 8 +++++-- .../domain/reference/spesialis/repository.go | 23 +++++++++---------- internal/domain/reference/tindakan/handler.go | 4 +++- .../domain/reference/tindakan/repository.go | 11 ++++----- 13 files changed, 63 insertions(+), 56 deletions(-) diff --git a/internal/domain/antrian_operasi/requestValidation.go b/internal/domain/antrian_operasi/requestValidation.go index 6ed177d..0e6f479 100644 --- a/internal/domain/antrian_operasi/requestValidation.go +++ b/internal/domain/antrian_operasi/requestValidation.go @@ -3,10 +3,10 @@ package antrianoperasi import ( "log" - "github.com/gin-gonic/gin" + "context" ) -func (req CreatePasienOperasiRequest) DataValidation(c *gin.Context, handler AntrianOperasiHandler) (bool, []string) { +func (req CreatePasienOperasiRequest) DataValidation(c context.Context, handler AntrianOperasiHandler) (bool, []string) { isValid := false var errValidation []string diff --git a/internal/domain/reference/diagnosa/handler.go b/internal/domain/reference/diagnosa/handler.go index 84376b1..7e8bcff 100644 --- a/internal/domain/reference/diagnosa/handler.go +++ b/internal/domain/reference/diagnosa/handler.go @@ -24,7 +24,9 @@ func NewDiagnosaHandler(repo IDiagnosaRepository) DiagnosaHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/diagnosa/ [get] func (h DiagnosaHandler) ListDiagnosa(c *gin.Context) { - list, err := h.repo.SearchableListDiagnosa(c) + search := c.Query("search") + + list, err := h.repo.SearchableListDiagnosa(c, search) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/diagnosa/repository.go b/internal/domain/reference/diagnosa/repository.go index f3f7089..be1ebe8 100644 --- a/internal/domain/reference/diagnosa/repository.go +++ b/internal/domain/reference/diagnosa/repository.go @@ -8,15 +8,15 @@ import ( "errors" - "github.com/gin-gonic/gin" + "context" ) const DB_NAME = "db_simrs" const TBL_NAME = "icd" type IDiagnosaRepository interface { - SearchableListDiagnosa(c *gin.Context) (ListDiagnosaModel, error) - GetDiagnosaByKode(c *gin.Context, kode string) (DiagnosaModel, error) + SearchableListDiagnosa(c context.Context, search string) (ListDiagnosaModel, error) + GetDiagnosaByKode(c context.Context, kode string) (DiagnosaModel, error) } type diagnosaRepo struct { @@ -37,9 +37,8 @@ func NewRepository(dbService database.Service) IDiagnosaRepository { } } -func (r diagnosaRepo) SearchableListDiagnosa(c *gin.Context) (ListDiagnosaModel, error) { +func (r diagnosaRepo) SearchableListDiagnosa(c context.Context, search string) (ListDiagnosaModel, error) { var result ListDiagnosaModel - search := c.Query("search") query := queryUtils.DynamicQuery{ From: TBL_NAME, @@ -74,7 +73,7 @@ func (r diagnosaRepo) SearchableListDiagnosa(c *gin.Context) (ListDiagnosaModel, return result, nil } -func (r diagnosaRepo) GetDiagnosaByKode(c *gin.Context, kode string) (DiagnosaModel, error) { +func (r diagnosaRepo) GetDiagnosaByKode(c context.Context, kode string) (DiagnosaModel, error) { var resultQuery []DiagnosaModel var result DiagnosaModel diff --git a/internal/domain/reference/dokter/handler.go b/internal/domain/reference/dokter/handler.go index ffb16bc..72dd4be 100644 --- a/internal/domain/reference/dokter/handler.go +++ b/internal/domain/reference/dokter/handler.go @@ -1,11 +1,11 @@ package dokter import ( + "antrian-operasi/internal/shared" + baseResponse "antrian-operasi/internal/shared" "log" "net/http" - baseResponse "antrian-operasi/internal/shared" - "github.com/gin-gonic/gin" ) @@ -27,7 +27,11 @@ func NewDokterHandler(repo IDokterRepository) DokterHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/dokter/ [get] func (h DokterHandler) ListDokter(c *gin.Context) { - result, err := h.repo.SearchableListDokter(c) + limit := shared.ParseQueryLimit(c) + offset := shared.ParseQueryOffset(c) + search := c.Query("search") + + result, err := h.repo.SearchableListDokter(c, search, limit, offset) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/dokter/repository.go b/internal/domain/reference/dokter/repository.go index 62751ce..eb42612 100644 --- a/internal/domain/reference/dokter/repository.go +++ b/internal/domain/reference/dokter/repository.go @@ -2,21 +2,21 @@ package dokter import ( "antrian-operasi/internal/database" - "antrian-operasi/internal/shared" + "errors" "log" queryUtils "antrian-operasi/internal/utils/query" - "github.com/gin-gonic/gin" + "context" ) const DB_NAME = "db_antrian" const TBL_NAME = "data_pegawai" type IDokterRepository interface { - SearchableListDokter(c *gin.Context) (ListDokterModelPaginate, error) - GetDokterById(c *gin.Context, id string) (DokterModel, error) + SearchableListDokter(c context.Context, search string, limit int, offset int) (ListDokterModelPaginate, error) + GetDokterById(c context.Context, id string) (DokterModel, error) } type dokterRepo struct { @@ -74,11 +74,8 @@ func baseSelectQuery() queryUtils.DynamicQuery { return query } -func (r dokterRepo) SearchableListDokter(c *gin.Context) (ListDokterModelPaginate, error) { +func (r dokterRepo) SearchableListDokter(c context.Context, search string, limit int, offset int) (ListDokterModelPaginate, error) { var result ListDokterModelPaginate - limit := shared.ParseQueryLimit(c) - offset := shared.ParseQueryOffset(c) - search := c.Query("search") // base query query := baseSelectQuery() @@ -134,7 +131,7 @@ func (r dokterRepo) SearchableListDokter(c *gin.Context) (ListDokterModelPaginat return result, nil } -func (r dokterRepo) GetDokterById(c *gin.Context, id string) (DokterModel, error) { +func (r dokterRepo) GetDokterById(c context.Context, id string) (DokterModel, error) { var resultQuery []DokterModel var result DokterModel diff --git a/internal/domain/reference/kategori/handler.go b/internal/domain/reference/kategori/handler.go index 7b285c6..bc94596 100644 --- a/internal/domain/reference/kategori/handler.go +++ b/internal/domain/reference/kategori/handler.go @@ -24,7 +24,8 @@ func NewKategoriHandler(repo IKategoriRepository) KategoriHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/kategori/ [get] func (h KategoriHandler) ListKategoriOperasi(c *gin.Context) { - list, err := h.repo.SearchableListKategori(c) + search := c.Query("search") + list, err := h.repo.SearchableListKategori(c, search) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/kategori/repository.go b/internal/domain/reference/kategori/repository.go index 253982b..d9f4fcd 100644 --- a/internal/domain/reference/kategori/repository.go +++ b/internal/domain/reference/kategori/repository.go @@ -6,15 +6,15 @@ import ( queryUtils "antrian-operasi/internal/utils/query" - "github.com/gin-gonic/gin" + "context" ) 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) + SearchableListKategori(c context.Context, search string) ([]KategoriOperasiModel, error) + GetKategoriById(c context.Context, id int) (KategoriOperasiModel, error) } type kategoriRepo struct { @@ -55,9 +55,8 @@ func baseSelectQuery() queryUtils.DynamicQuery { } } -func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiModel, error) { +func (r kategoriRepo) SearchableListKategori(c context.Context, search string) ([]KategoriOperasiModel, error) { var result []KategoriOperasiModel - search := c.Query("search") query := baseSelectQuery() @@ -84,7 +83,7 @@ func (r kategoriRepo) SearchableListKategori(c *gin.Context) ([]KategoriOperasiM return result, nil } -func (r kategoriRepo) GetKategoriById(c *gin.Context, id int) (KategoriOperasiModel, error) { +func (r kategoriRepo) GetKategoriById(c context.Context, id int) (KategoriOperasiModel, error) { var resultQuery []KategoriOperasiModel var result KategoriOperasiModel diff --git a/internal/domain/reference/pasien/handler.go b/internal/domain/reference/pasien/handler.go index a6d4996..f060949 100644 --- a/internal/domain/reference/pasien/handler.go +++ b/internal/domain/reference/pasien/handler.go @@ -24,7 +24,9 @@ func NewPasienHandler(repo IPasienRepository) PasienHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/pasien/ [get] func (h PasienHandler) ListPasienOperasi(c *gin.Context) { - list, err := h.repo.SearchableListPasien(c) + search := c.Query("search") + + list, err := h.repo.SearchableListPasien(c, search) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/pasien/repository.go b/internal/domain/reference/pasien/repository.go index f88095a..9a908b0 100644 --- a/internal/domain/reference/pasien/repository.go +++ b/internal/domain/reference/pasien/repository.go @@ -6,15 +6,15 @@ import ( queryUtils "antrian-operasi/internal/utils/query" - "github.com/gin-gonic/gin" + "context" ) const DB_NAME = "db_simrs" const TBL_NAME = "m_pasien" type IPasienRepository interface { - SearchableListPasien(c *gin.Context) (ListPasienModel, error) - GetPasienByNoMr(c *gin.Context, noMr string) (PasienModel, error) + SearchableListPasien(c context.Context, search string) (ListPasienModel, error) + GetPasienByNoMr(c context.Context, noMr string) (PasienModel, error) } type pasienRepo struct { @@ -61,9 +61,8 @@ func baseSelectQuery() queryUtils.DynamicQuery { } } -func (r pasienRepo) SearchableListPasien(c *gin.Context) (ListPasienModel, error) { +func (r pasienRepo) SearchableListPasien(c context.Context, search string) (ListPasienModel, error) { var result ListPasienModel - search := c.Query("search") query := baseSelectQuery() query.Limit = 10 // default limit @@ -93,7 +92,7 @@ func (r pasienRepo) SearchableListPasien(c *gin.Context) (ListPasienModel, error return result, nil } -func (r pasienRepo) GetPasienByNoMr(c *gin.Context, noMr string) (PasienModel, error) { +func (r pasienRepo) GetPasienByNoMr(c context.Context, noMr string) (PasienModel, error) { var resultQuery ListPasienModel var result PasienModel diff --git a/internal/domain/reference/spesialis/handler.go b/internal/domain/reference/spesialis/handler.go index b703a73..65c3502 100644 --- a/internal/domain/reference/spesialis/handler.go +++ b/internal/domain/reference/spesialis/handler.go @@ -24,7 +24,8 @@ func NewSpesialisHandler(repo ISpesialisRepository) SpesialisHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/spesialis/ [get] func (h SpesialisHandler) ListSpesialis(c *gin.Context) { - list, err := h.repo.SearchableListSpesialis(c) + search := c.Query("search") + list, err := h.repo.SearchableListSpesialis(c, search) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, @@ -49,7 +50,10 @@ func (h SpesialisHandler) ListSpesialis(c *gin.Context) { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/sub-spesialis/ [get] func (h SpesialisHandler) ListSubSpesialis(c *gin.Context) { - list, err := h.repo.SearchableListSubSpesialis(c) + search := c.Query("search") + idSpesialis := c.Query("id_spesialis") + + list, err := h.repo.SearchableListSubSpesialis(c, search, idSpesialis) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/spesialis/repository.go b/internal/domain/reference/spesialis/repository.go index fec566f..c412ecd 100644 --- a/internal/domain/reference/spesialis/repository.go +++ b/internal/domain/reference/spesialis/repository.go @@ -6,16 +6,16 @@ import ( queryUtils "antrian-operasi/internal/utils/query" - "github.com/gin-gonic/gin" + "context" ) 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) + SearchableListSpesialis(c context.Context, search string) ([]SpesialisModel, error) + SearchableListSubSpesialis(c context.Context, search string, idSpesialis string) ([]SubSpesialisModel, error) + GetSpesialisById(c context.Context, id int) (SpesialisModel, error) + GetSubSpesialisById(c context.Context, id int) (SubSpesialisModel, error) } type spesialisRepo struct { @@ -83,9 +83,8 @@ func baseQueryListSubSpesialis() queryUtils.DynamicQuery { return query } -func (r spesialisRepo) SearchableListSpesialis(c *gin.Context) ([]SpesialisModel, error) { +func (r spesialisRepo) SearchableListSpesialis(c context.Context, search string) ([]SpesialisModel, error) { var result []SpesialisModel - search := c.Query("search") query := baseQueryListSpesialis() @@ -113,10 +112,10 @@ func (r spesialisRepo) SearchableListSpesialis(c *gin.Context) ([]SpesialisModel return result, nil } -func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesialisModel, error) { +func (r spesialisRepo) SearchableListSubSpesialis(c context.Context, search string, idSpesialis string) ([]SubSpesialisModel, error) { var result []SubSpesialisModel - search := c.Query("search") - idSpesialis := c.Query("id_spesialis") + // search := c.Query("search") + // idSpesialis := c.Query("id_spesialis") query := baseQueryListSubSpesialis() @@ -153,7 +152,7 @@ func (r spesialisRepo) SearchableListSubSpesialis(c *gin.Context) ([]SubSpesiali return result, nil } -func (r spesialisRepo) GetSpesialisById(c *gin.Context, id int) (SpesialisModel, error) { +func (r spesialisRepo) GetSpesialisById(c context.Context, id int) (SpesialisModel, error) { var resultQuery []SpesialisModel var result SpesialisModel @@ -182,7 +181,7 @@ func (r spesialisRepo) GetSpesialisById(c *gin.Context, id int) (SpesialisModel, return resultQuery[0], nil } -func (r spesialisRepo) GetSubSpesialisById(c *gin.Context, id int) (SubSpesialisModel, error) { +func (r spesialisRepo) GetSubSpesialisById(c context.Context, id int) (SubSpesialisModel, error) { var resultQuery []SubSpesialisModel var result SubSpesialisModel diff --git a/internal/domain/reference/tindakan/handler.go b/internal/domain/reference/tindakan/handler.go index edefadd..2786f79 100644 --- a/internal/domain/reference/tindakan/handler.go +++ b/internal/domain/reference/tindakan/handler.go @@ -24,7 +24,9 @@ func NewTindakanHandler(repo ITindakanRepository) TindakanHandler { // @Failure 500 {object} shared.BaseErrorResponse // @Router /reference/tindakan/ [get] func (h TindakanHandler) ListDiagnosa(c *gin.Context) { - list, err := h.repo.SearchableListTindakan(c) + search := c.Query("search") + + list, err := h.repo.SearchableListTindakan(c, search) if err != nil { errorResponse := baseResponse.BaseErrorResponse{ Success: false, diff --git a/internal/domain/reference/tindakan/repository.go b/internal/domain/reference/tindakan/repository.go index d111071..228a9d0 100644 --- a/internal/domain/reference/tindakan/repository.go +++ b/internal/domain/reference/tindakan/repository.go @@ -7,15 +7,15 @@ import ( "errors" - "github.com/gin-gonic/gin" + "context" ) const DB_NAME = "db_simrs" const TBL_NAME = "icd_cm" type ITindakanRepository interface { - SearchableListTindakan(c *gin.Context) (ListTindakanModel, error) - GetTindakanByKode(c *gin.Context, kode string) (TindakanModel, error) + SearchableListTindakan(c context.Context, search string) (ListTindakanModel, error) + GetTindakanByKode(c context.Context, kode string) (TindakanModel, error) } type tindakanRepo struct { @@ -36,9 +36,8 @@ func NewRepository(dbService database.Service) ITindakanRepository { } } -func (r tindakanRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel, error) { +func (r tindakanRepo) SearchableListTindakan(c context.Context, search string) (ListTindakanModel, error) { var result ListTindakanModel - search := c.Query("search") query := queryUtils.DynamicQuery{ From: TBL_NAME, @@ -71,7 +70,7 @@ func (r tindakanRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel, return result, nil } -func (r tindakanRepo) GetTindakanByKode(c *gin.Context, kode string) (TindakanModel, error) { +func (r tindakanRepo) GetTindakanByKode(c context.Context, kode string) (TindakanModel, error) { var resultQuery []TindakanModel var result TindakanModel