From 10ef340d635f2a0b9e3ea2a2e1ab419ca2f80e4d Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Sat, 4 Oct 2025 15:42:40 +0700 Subject: [PATCH] feat (infra): add filter data that only have children --- internal/domain/main-entities/infra/dto.go | 9 +++++---- internal/use-case/main-use-case/infra/lib.go | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/internal/domain/main-entities/infra/dto.go b/internal/domain/main-entities/infra/dto.go index 33b4fe62..fda399e5 100644 --- a/internal/domain/main-entities/infra/dto.go +++ b/internal/domain/main-entities/infra/dto.go @@ -21,10 +21,11 @@ type CreateDto struct { type ReadListDto struct { FilterDto - Includes string `json:"includes"` - Preloads []string `json:"-"` - Search string `json:"search"` - Pagination ecore.Pagination + Includes string `json:"includes"` + Preloads []string `json:"-"` + Search string `json:"search"` + Pagination ecore.Pagination + OnlyHaveChildren bool `json:"only-have-children"` } type FilterDto struct { diff --git a/internal/use-case/main-use-case/infra/lib.go b/internal/use-case/main-use-case/infra/lib.go index 656aec39..303fce88 100644 --- a/internal/use-case/main-use-case/infra/lib.go +++ b/internal/use-case/main-use-case/infra/lib.go @@ -55,6 +55,16 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.In plh.SearchCodeOrName(input.Search, tx) + if input.OnlyHaveChildren { + tx = tx.Where(` + EXISTS ( + SELECT 1 + FROM "Infra" c + WHERE c."Parent_Id" = "Infra"."Id" + ) + `) + } + tx = tx. Model(&e.Infra{}). Scopes(gh.Filter(input.FilterDto)).