From 7940c895b1575c2ae529d55183d13181e99517c3 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Wed, 8 Oct 2025 12:21:42 +0700 Subject: [PATCH] fix pagination and search --- internal/domain/main-entities/diagnose-src/dto.go | 13 ++++++++++--- .../domain/main-entities/division-position/dto.go | 1 + internal/domain/main-entities/ethnic/dto.go | 12 +++++++++--- .../domain/main-entities/insurance-company/dto.go | 1 + internal/domain/main-entities/item/dto.go | 1 + internal/domain/main-entities/language/dto.go | 10 ++++++++-- .../domain/main-entities/mcu-src-category/dto.go | 9 ++++++++- .../domain/main-entities/medicine-group/dto.go | 11 +++++++++-- .../domain/main-entities/medicine-method/dto.go | 11 +++++++++-- .../domain/main-entities/pharmacy-company/dto.go | 9 ++++++++- internal/domain/main-entities/procedure-src/dto.go | 14 ++++++++++---- internal/use-case/main-use-case/device/lib.go | 2 +- .../use-case/main-use-case/diagnose-src/case.go | 3 +++ .../use-case/main-use-case/diagnose-src/lib.go | 10 +++++++++- .../main-use-case/division-position/lib.go | 2 ++ internal/use-case/main-use-case/division/lib.go | 2 +- internal/use-case/main-use-case/ethnic/case.go | 3 +++ internal/use-case/main-use-case/ethnic/lib.go | 4 ++-- internal/use-case/main-use-case/infra/lib.go | 2 +- .../use-case/main-use-case/installation/lib.go | 2 +- .../main-use-case/insurance-company/lib.go | 2 ++ internal/use-case/main-use-case/item/lib.go | 2 ++ internal/use-case/main-use-case/language/case.go | 3 +++ internal/use-case/main-use-case/language/lib.go | 2 +- .../main-use-case/mcu-src-category/case.go | 3 +++ .../use-case/main-use-case/mcu-src-category/lib.go | 10 +++++++++- internal/use-case/main-use-case/mcu-src/lib.go | 2 +- internal/use-case/main-use-case/mcu-sub-src/lib.go | 2 +- .../main-use-case/medical-action-src/lib.go | 2 +- .../use-case/main-use-case/medicine-group/case.go | 3 +++ .../use-case/main-use-case/medicine-group/lib.go | 10 +++++++++- .../use-case/main-use-case/medicine-method/case.go | 3 +++ .../use-case/main-use-case/medicine-method/lib.go | 10 +++++++++- internal/use-case/main-use-case/medicine/lib.go | 4 ++-- .../main-use-case/pharmacy-company/case.go | 3 +++ .../use-case/main-use-case/pharmacy-company/lib.go | 10 +++++++++- .../use-case/main-use-case/procedure-src/case.go | 3 +++ .../use-case/main-use-case/procedure-src/lib.go | 4 ++-- internal/use-case/main-use-case/province/lib.go | 4 ++-- internal/use-case/main-use-case/regency/lib.go | 2 +- internal/use-case/main-use-case/specialist/lib.go | 2 +- .../use-case/main-use-case/subspecialist/lib.go | 2 +- internal/use-case/main-use-case/unit/lib.go | 2 +- internal/use-case/main-use-case/uom/lib.go | 2 +- internal/use-case/main-use-case/village/lib.go | 2 +- pkg/lib-helper/lib-helper.go | 6 ++++-- 46 files changed, 175 insertions(+), 47 deletions(-) diff --git a/internal/domain/main-entities/diagnose-src/dto.go b/internal/domain/main-entities/diagnose-src/dto.go index 2f135368..5182b522 100644 --- a/internal/domain/main-entities/diagnose-src/dto.go +++ b/internal/domain/main-entities/diagnose-src/dto.go @@ -11,12 +11,19 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` - IndName string `json:"indName"` + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` + IndName string `json:"indName"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code *string `json:"code"` diff --git a/internal/domain/main-entities/division-position/dto.go b/internal/domain/main-entities/division-position/dto.go index 5fefe554..d746d855 100644 --- a/internal/domain/main-entities/division-position/dto.go +++ b/internal/domain/main-entities/division-position/dto.go @@ -17,6 +17,7 @@ type ReadListDto struct { FilterDto Includes string `json:"includes"` Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } diff --git a/internal/domain/main-entities/ethnic/dto.go b/internal/domain/main-entities/ethnic/dto.go index a25ced65..2fac2e81 100644 --- a/internal/domain/main-entities/ethnic/dto.go +++ b/internal/domain/main-entities/ethnic/dto.go @@ -10,12 +10,18 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` - Search string `json:"search"` + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code *string `json:"code"` diff --git a/internal/domain/main-entities/insurance-company/dto.go b/internal/domain/main-entities/insurance-company/dto.go index 93966c71..b42137b5 100644 --- a/internal/domain/main-entities/insurance-company/dto.go +++ b/internal/domain/main-entities/insurance-company/dto.go @@ -17,6 +17,7 @@ type ReadListDto struct { FilterDto Includes string `json:"includes"` Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } diff --git a/internal/domain/main-entities/item/dto.go b/internal/domain/main-entities/item/dto.go index 3d48e2bb..7a7aba50 100644 --- a/internal/domain/main-entities/item/dto.go +++ b/internal/domain/main-entities/item/dto.go @@ -19,6 +19,7 @@ type ReadListDto struct { FilterDto Includes string `json:"includes"` Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } diff --git a/internal/domain/main-entities/language/dto.go b/internal/domain/main-entities/language/dto.go index 79ae648c..30bf9eaf 100644 --- a/internal/domain/main-entities/language/dto.go +++ b/internal/domain/main-entities/language/dto.go @@ -10,12 +10,18 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` + FilterDto + Includes string `json:"includes"` + Preloads []string Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code string `json:"code"` diff --git a/internal/domain/main-entities/mcu-src-category/dto.go b/internal/domain/main-entities/mcu-src-category/dto.go index bf2deb4a..34d6463c 100644 --- a/internal/domain/main-entities/mcu-src-category/dto.go +++ b/internal/domain/main-entities/mcu-src-category/dto.go @@ -13,10 +13,17 @@ type CreateDto struct { } type ReadListDto struct { + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` + Pagination ecore.Pagination +} + +type FilterDto struct { Code string `json:"code"` Name string `json:"name"` Scope_Code *ere.CheckupScopeCode `json:"scope-code"` - Pagination ecore.Pagination } type ReadDetailDto struct { diff --git a/internal/domain/main-entities/medicine-group/dto.go b/internal/domain/main-entities/medicine-group/dto.go index c392e46f..91b52eaa 100644 --- a/internal/domain/main-entities/medicine-group/dto.go +++ b/internal/domain/main-entities/medicine-group/dto.go @@ -10,11 +10,18 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code *string `json:"code"` diff --git a/internal/domain/main-entities/medicine-method/dto.go b/internal/domain/main-entities/medicine-method/dto.go index 337eb6e6..2c1018ac 100644 --- a/internal/domain/main-entities/medicine-method/dto.go +++ b/internal/domain/main-entities/medicine-method/dto.go @@ -10,11 +10,18 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code *string `json:"code"` diff --git a/internal/domain/main-entities/pharmacy-company/dto.go b/internal/domain/main-entities/pharmacy-company/dto.go index ed61fd61..19c128fa 100644 --- a/internal/domain/main-entities/pharmacy-company/dto.go +++ b/internal/domain/main-entities/pharmacy-company/dto.go @@ -11,10 +11,17 @@ type CreateDto struct { } type ReadListDto struct { + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` + Pagination ecore.Pagination +} + +type FilterDto struct { Code string `json:"code"` Name string `json:"name"` Regency_Code string `json:"regency-code"` - Pagination ecore.Pagination } type ReadDetailDto struct { diff --git a/internal/domain/main-entities/procedure-src/dto.go b/internal/domain/main-entities/procedure-src/dto.go index f047fba1..e608e7c7 100644 --- a/internal/domain/main-entities/procedure-src/dto.go +++ b/internal/domain/main-entities/procedure-src/dto.go @@ -11,13 +11,19 @@ type CreateDto struct { } type ReadListDto struct { - Code string `json:"code"` - Name string `json:"name"` - IndName string `json:"indName"` - Search string `json:"search"` + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` Pagination ecore.Pagination } +type FilterDto struct { + Code string `json:"code"` + Name string `json:"name"` + IndName string `json:"indName"` +} + type ReadDetailDto struct { Id uint16 `json:"id"` Code *string `json:"code"` diff --git a/internal/use-case/main-use-case/device/lib.go b/internal/use-case/main-use-case/device/lib.go index c606b645..a3455000 100644 --- a/internal/use-case/main-use-case/device/lib.go +++ b/internal/use-case/main-use-case/device/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.De } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Device{}). diff --git a/internal/use-case/main-use-case/diagnose-src/case.go b/internal/use-case/main-use-case/diagnose-src/case.go index 184e68a8..587305ba 100644 --- a/internal/use-case/main-use-case/diagnose-src/case.go +++ b/internal/use-case/main-use-case/diagnose-src/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/diagnose-src/lib.go b/internal/use-case/main-use-case/diagnose-src/lib.go index c572a35d..eedce90a 100644 --- a/internal/use-case/main-use-case/diagnose-src/lib.go +++ b/internal/use-case/main-use-case/diagnose-src/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Di tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.DiagnoseSrc{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/division-position/lib.go b/internal/use-case/main-use-case/division-position/lib.go index 322e5593..d7d191e9 100644 --- a/internal/use-case/main-use-case/division-position/lib.go +++ b/internal/use-case/main-use-case/division-position/lib.go @@ -53,6 +53,8 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Di } } + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.DivisionPosition{}). Preload("Division"). diff --git a/internal/use-case/main-use-case/division/lib.go b/internal/use-case/main-use-case/division/lib.go index e8713508..2d431013 100644 --- a/internal/use-case/main-use-case/division/lib.go +++ b/internal/use-case/main-use-case/division/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Di } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) if input.OnlyHaveChildren { tx = tx.Where(` diff --git a/internal/use-case/main-use-case/ethnic/case.go b/internal/use-case/main-use-case/ethnic/case.go index c8ca95a1..5885f742 100644 --- a/internal/use-case/main-use-case/ethnic/case.go +++ b/internal/use-case/main-use-case/ethnic/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/ethnic/lib.go b/internal/use-case/main-use-case/ethnic/lib.go index 716da183..294cf020 100644 --- a/internal/use-case/main-use-case/ethnic/lib.go +++ b/internal/use-case/main-use-case/ethnic/lib.go @@ -47,11 +47,11 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Et tx = dg.I } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Ethnic{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/infra/lib.go b/internal/use-case/main-use-case/infra/lib.go index 303fce88..2189ce89 100644 --- a/internal/use-case/main-use-case/infra/lib.go +++ b/internal/use-case/main-use-case/infra/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.In } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) if input.OnlyHaveChildren { tx = tx.Where(` diff --git a/internal/use-case/main-use-case/installation/lib.go b/internal/use-case/main-use-case/installation/lib.go index 7178cd18..b491bdb7 100644 --- a/internal/use-case/main-use-case/installation/lib.go +++ b/internal/use-case/main-use-case/installation/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.In } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Installation{}). diff --git a/internal/use-case/main-use-case/insurance-company/lib.go b/internal/use-case/main-use-case/insurance-company/lib.go index 4dc5bb6f..72d8185b 100644 --- a/internal/use-case/main-use-case/insurance-company/lib.go +++ b/internal/use-case/main-use-case/insurance-company/lib.go @@ -53,6 +53,8 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.In } } + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.InsuranceCompany{}). Scopes(gh.Filter(input.FilterDto)). diff --git a/internal/use-case/main-use-case/item/lib.go b/internal/use-case/main-use-case/item/lib.go index c5b937ce..c02dd4aa 100644 --- a/internal/use-case/main-use-case/item/lib.go +++ b/internal/use-case/main-use-case/item/lib.go @@ -53,6 +53,8 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.It } } + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.Item{}). Scopes(gh.Filter(input.FilterDto)). diff --git a/internal/use-case/main-use-case/language/case.go b/internal/use-case/main-use-case/language/case.go index 885bcfeb..24061c86 100644 --- a/internal/use-case/main-use-case/language/case.go +++ b/internal/use-case/main-use-case/language/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/language/lib.go b/internal/use-case/main-use-case/language/lib.go index 24544b3f..d6bfd489 100644 --- a/internal/use-case/main-use-case/language/lib.go +++ b/internal/use-case/main-use-case/language/lib.go @@ -51,7 +51,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.La tx = tx. Model(&e.Language{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/mcu-src-category/case.go b/internal/use-case/main-use-case/mcu-src-category/case.go index c105603c..c8e53edc 100644 --- a/internal/use-case/main-use-case/mcu-src-category/case.go +++ b/internal/use-case/main-use-case/mcu-src-category/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/mcu-src-category/lib.go b/internal/use-case/main-use-case/mcu-src-category/lib.go index aef1fcf5..86be685a 100644 --- a/internal/use-case/main-use-case/mcu-src-category/lib.go +++ b/internal/use-case/main-use-case/mcu-src-category/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Mc tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.McuSrcCategory{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/mcu-src/lib.go b/internal/use-case/main-use-case/mcu-src/lib.go index 246c4ccf..1d8016cb 100644 --- a/internal/use-case/main-use-case/mcu-src/lib.go +++ b/internal/use-case/main-use-case/mcu-src/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Mc } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.McuSrc{}). diff --git a/internal/use-case/main-use-case/mcu-sub-src/lib.go b/internal/use-case/main-use-case/mcu-sub-src/lib.go index 43433380..5c1f8057 100644 --- a/internal/use-case/main-use-case/mcu-sub-src/lib.go +++ b/internal/use-case/main-use-case/mcu-sub-src/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Mc } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.McuSubSrc{}). diff --git a/internal/use-case/main-use-case/medical-action-src/lib.go b/internal/use-case/main-use-case/medical-action-src/lib.go index 9bb9d762..2551cc16 100644 --- a/internal/use-case/main-use-case/medical-action-src/lib.go +++ b/internal/use-case/main-use-case/medical-action-src/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Me } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.MedicalActionSrc{}). diff --git a/internal/use-case/main-use-case/medicine-group/case.go b/internal/use-case/main-use-case/medicine-group/case.go index 180c6e00..f7d17e01 100644 --- a/internal/use-case/main-use-case/medicine-group/case.go +++ b/internal/use-case/main-use-case/medicine-group/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/medicine-group/lib.go b/internal/use-case/main-use-case/medicine-group/lib.go index ac269a85..0de470fb 100644 --- a/internal/use-case/main-use-case/medicine-group/lib.go +++ b/internal/use-case/main-use-case/medicine-group/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Me tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.MedicineGroup{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/medicine-method/case.go b/internal/use-case/main-use-case/medicine-method/case.go index 012b77b0..a6ed76c7 100644 --- a/internal/use-case/main-use-case/medicine-method/case.go +++ b/internal/use-case/main-use-case/medicine-method/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/medicine-method/lib.go b/internal/use-case/main-use-case/medicine-method/lib.go index 56907327..4e708a5b 100644 --- a/internal/use-case/main-use-case/medicine-method/lib.go +++ b/internal/use-case/main-use-case/medicine-method/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Me tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.MedicineMethod{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/medicine/lib.go b/internal/use-case/main-use-case/medicine/lib.go index b4ea21f6..f6b48196 100644 --- a/internal/use-case/main-use-case/medicine/lib.go +++ b/internal/use-case/main-use-case/medicine/lib.go @@ -53,9 +53,9 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Me } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) - tx = tx. + tx = tx.Debug(). Model(&e.Medicine{}). Scopes(gh.Filter(input.FilterDto)). Count(&count). diff --git a/internal/use-case/main-use-case/pharmacy-company/case.go b/internal/use-case/main-use-case/pharmacy-company/case.go index cce54750..1ef9a7bf 100644 --- a/internal/use-case/main-use-case/pharmacy-company/case.go +++ b/internal/use-case/main-use-case/pharmacy-company/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/pharmacy-company/lib.go b/internal/use-case/main-use-case/pharmacy-company/lib.go index b0e9c146..efc03283 100644 --- a/internal/use-case/main-use-case/pharmacy-company/lib.go +++ b/internal/use-case/main-use-case/pharmacy-company/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Ph tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + tx = plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.PharmacyCompany{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/procedure-src/case.go b/internal/use-case/main-use-case/procedure-src/case.go index 1b91f6bb..c41e47d6 100644 --- a/internal/use-case/main-use-case/procedure-src/case.go +++ b/internal/use-case/main-use-case/procedure-src/case.go @@ -87,6 +87,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + if len(input.Includes) > 0 { + input.Preloads = pu.GetPreloads(input.Includes) + } if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/procedure-src/lib.go b/internal/use-case/main-use-case/procedure-src/lib.go index 6cd2b7dd..cbf2e086 100644 --- a/internal/use-case/main-use-case/procedure-src/lib.go +++ b/internal/use-case/main-use-case/procedure-src/lib.go @@ -47,11 +47,11 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Pr tx = dg.I } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.ProcedureSrc{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)). Order("\"CreatedAt\" DESC") diff --git a/internal/use-case/main-use-case/province/lib.go b/internal/use-case/main-use-case/province/lib.go index 2314459d..c55dce15 100644 --- a/internal/use-case/main-use-case/province/lib.go +++ b/internal/use-case/main-use-case/province/lib.go @@ -53,9 +53,9 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Pr } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) - tx = tx. + tx = tx.Debug(). Model(&e.Province{}). Scopes(gh.Filter(input.FilterDto)). Count(&count). diff --git a/internal/use-case/main-use-case/regency/lib.go b/internal/use-case/main-use-case/regency/lib.go index fb049908..91c8007a 100644 --- a/internal/use-case/main-use-case/regency/lib.go +++ b/internal/use-case/main-use-case/regency/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Re } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Regency{}). diff --git a/internal/use-case/main-use-case/specialist/lib.go b/internal/use-case/main-use-case/specialist/lib.go index 04b1b552..caf2a34d 100644 --- a/internal/use-case/main-use-case/specialist/lib.go +++ b/internal/use-case/main-use-case/specialist/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Sp } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Specialist{}). diff --git a/internal/use-case/main-use-case/subspecialist/lib.go b/internal/use-case/main-use-case/subspecialist/lib.go index 428c0a5f..88849600 100644 --- a/internal/use-case/main-use-case/subspecialist/lib.go +++ b/internal/use-case/main-use-case/subspecialist/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Su } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Subspecialist{}). diff --git a/internal/use-case/main-use-case/unit/lib.go b/internal/use-case/main-use-case/unit/lib.go index 2924b7df..63cddccc 100644 --- a/internal/use-case/main-use-case/unit/lib.go +++ b/internal/use-case/main-use-case/unit/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Un } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Unit{}). diff --git a/internal/use-case/main-use-case/uom/lib.go b/internal/use-case/main-use-case/uom/lib.go index 9c524c8d..1cd00f62 100644 --- a/internal/use-case/main-use-case/uom/lib.go +++ b/internal/use-case/main-use-case/uom/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Uo } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Uom{}). diff --git a/internal/use-case/main-use-case/village/lib.go b/internal/use-case/main-use-case/village/lib.go index de30dc9d..0e29ff17 100644 --- a/internal/use-case/main-use-case/village/lib.go +++ b/internal/use-case/main-use-case/village/lib.go @@ -53,7 +53,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Vi } } - plh.SearchCodeOrName(input.Search, tx) + tx = plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Village{}). diff --git a/pkg/lib-helper/lib-helper.go b/pkg/lib-helper/lib-helper.go index b24c1004..1131447a 100644 --- a/pkg/lib-helper/lib-helper.go +++ b/pkg/lib-helper/lib-helper.go @@ -8,10 +8,12 @@ import ( "gorm.io/gorm" ) -func SearchCodeOrName(search string, tx *gorm.DB) { +func SearchCodeOrName(search string, tx *gorm.DB) *gorm.DB { if search != "" { - tx.Where("\"Code\" ILIKE ? OR \"Name\" ILIKE ?", "%"+search+"%", "%"+search+"%") + tx = tx.Where("\"Code\" ILIKE ? OR \"Name\" ILIKE ?", "%"+search+"%", "%"+search+"%") } + + return tx } func HandleCreateError(input any, event *pl.Event, err error) error {