diff --git a/internal/domain/main-entities/district/dto.go b/internal/domain/main-entities/district/dto.go index be0f6c01..ee81aeec 100644 --- a/internal/domain/main-entities/district/dto.go +++ b/internal/domain/main-entities/district/dto.go @@ -12,10 +12,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 { Regency_Code string `json:"regency-code"` Code string `json:"code"` Name string `json:"name"` - Pagination ecore.Pagination } type ReadDetailDto struct { diff --git a/internal/domain/main-entities/province/dto.go b/internal/domain/main-entities/province/dto.go index d2cfc1ca..595db5a4 100644 --- a/internal/domain/main-entities/province/dto.go +++ b/internal/domain/main-entities/province/dto.go @@ -2,6 +2,7 @@ package province import ( ecore "simrs-vx/internal/domain/base-entities/core" + er "simrs-vx/internal/domain/main-entities/regency" ) type CreateDto struct { @@ -10,11 +11,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 int16 `json:"id"` Code *string `json:"code"` @@ -36,17 +44,14 @@ type MetaDto struct { } type ResponseDto struct { - Id int16 `json:"id"` - Code string `json:"code"` - Name string `json:"name"` + Id int16 `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + Regencies []*er.Regency `json:"regencies,omitempty"` } func (d Province) ToResponse() ResponseDto { - resp := ResponseDto{ - Id: d.Id, - Code: d.Code, - Name: d.Name, - } + resp := ResponseDto(d) return resp } diff --git a/internal/domain/main-entities/regency/dto.go b/internal/domain/main-entities/regency/dto.go index 61c131fe..9408096b 100644 --- a/internal/domain/main-entities/regency/dto.go +++ b/internal/domain/main-entities/regency/dto.go @@ -12,10 +12,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 { Province_Code string `json:"province-code"` Code string `json:"code"` Name string `json:"name"` - Pagination ecore.Pagination } type ReadDetailDto struct { diff --git a/internal/domain/main-entities/uom/dto.go b/internal/domain/main-entities/uom/dto.go index ef50ea4b..30df9752 100644 --- a/internal/domain/main-entities/uom/dto.go +++ b/internal/domain/main-entities/uom/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/village/dto.go b/internal/domain/main-entities/village/dto.go index 842a1cb6..85448959 100644 --- a/internal/domain/main-entities/village/dto.go +++ b/internal/domain/main-entities/village/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 { District_Code string `json:"district-code"` Code string `json:"code"` Name string `json:"name"` - Pagination ecore.Pagination } type ReadDetailDto struct { diff --git a/internal/use-case/main-use-case/district/case.go b/internal/use-case/main-use-case/district/case.go index b7a4b1a0..8ab41024 100644 --- a/internal/use-case/main-use-case/district/case.go +++ b/internal/use-case/main-use-case/district/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/district/lib.go b/internal/use-case/main-use-case/district/lib.go index 26f6cf07..b0454716 100644 --- a/internal/use-case/main-use-case/district/lib.go +++ b/internal/use-case/main-use-case/district/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) + } + } + + plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.District{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)) diff --git a/internal/use-case/main-use-case/province/case.go b/internal/use-case/main-use-case/province/case.go index 50d5e7ab..8c29ab2c 100644 --- a/internal/use-case/main-use-case/province/case.go +++ b/internal/use-case/main-use-case/province/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/province/lib.go b/internal/use-case/main-use-case/province/lib.go index 9955b076..2314459d 100644 --- a/internal/use-case/main-use-case/province/lib.go +++ b/internal/use-case/main-use-case/province/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Pr tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.Province{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)) diff --git a/internal/use-case/main-use-case/regency/case.go b/internal/use-case/main-use-case/regency/case.go index c6ed4b4f..c0ca1475 100644 --- a/internal/use-case/main-use-case/regency/case.go +++ b/internal/use-case/main-use-case/regency/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/regency/lib.go b/internal/use-case/main-use-case/regency/lib.go index 4f66c9c0..fb049908 100644 --- a/internal/use-case/main-use-case/regency/lib.go +++ b/internal/use-case/main-use-case/regency/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Re tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.Regency{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination)) diff --git a/internal/use-case/main-use-case/uom/case.go b/internal/use-case/main-use-case/uom/case.go index 29c4516b..66b932c0 100644 --- a/internal/use-case/main-use-case/uom/case.go +++ b/internal/use-case/main-use-case/uom/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/uom/lib.go b/internal/use-case/main-use-case/uom/lib.go index 3658faf2..9c524c8d 100644 --- a/internal/use-case/main-use-case/uom/lib.go +++ b/internal/use-case/main-use-case/uom/lib.go @@ -47,11 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Uo tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + plh.SearchCodeOrName(input.Search, tx) tx = tx. Model(&e.Uom{}). - 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/village/case.go b/internal/use-case/main-use-case/village/case.go index 787fdb12..375cf605 100644 --- a/internal/use-case/main-use-case/village/case.go +++ b/internal/use-case/main-use-case/village/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/village/lib.go b/internal/use-case/main-use-case/village/lib.go index 1c6a48e3..de30dc9d 100644 --- a/internal/use-case/main-use-case/village/lib.go +++ b/internal/use-case/main-use-case/village/lib.go @@ -47,9 +47,17 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Vi tx = dg.I } + if len(input.Preloads) > 0 { + for _, preload := range input.Preloads { + tx = tx.Preload(preload) + } + } + + plh.SearchCodeOrName(input.Search, tx) + tx = tx. Model(&e.Village{}). - Scopes(gh.Filter(input)). + Scopes(gh.Filter(input.FilterDto)). Count(&count). Scopes(gh.Paginate(input, &pagination))