fix: images in child items (#623)

* support parentID search

* fetch images for item children

Former-commit-id: afbc6a49ac
This commit is contained in:
Hayden 2023-11-15 21:41:24 -06:00 committed by GitHub
parent a26ea3bac5
commit 798d873f76
4 changed files with 27 additions and 10 deletions

View file

@ -27,6 +27,7 @@ import (
// @Param pageSize query int false "items per page" // @Param pageSize query int false "items per page"
// @Param labels query []string false "label Ids" collectionFormat(multi) // @Param labels query []string false "label Ids" collectionFormat(multi)
// @Param locations query []string false "location Ids" collectionFormat(multi) // @Param locations query []string false "location Ids" collectionFormat(multi)
// @Param parentIds query []string false "parent Ids" collectionFormat(multi)
// @Success 200 {object} repo.PaginationResult[repo.ItemSummary]{} // @Success 200 {object} repo.PaginationResult[repo.ItemSummary]{}
// @Router /v1/items [GET] // @Router /v1/items [GET]
// @Security Bearer // @Security Bearer
@ -56,6 +57,7 @@ func (ctrl *V1Controller) HandleItemsGetAll() errchain.HandlerFunc {
Search: params.Get("q"), Search: params.Get("q"),
LocationIDs: queryUUIDList(params, "locations"), LocationIDs: queryUUIDList(params, "locations"),
LabelIDs: queryUUIDList(params, "labels"), LabelIDs: queryUUIDList(params, "labels"),
ParentItemIDs: queryUUIDList(params, "parentIds"),
IncludeArchived: queryBool(params.Get("includeArchived")), IncludeArchived: queryBool(params.Get("includeArchived")),
Fields: filterFieldItems(params["fields"]), Fields: filterFieldItems(params["fields"]),
OrderBy: params.Get("orderBy"), OrderBy: params.Get("orderBy"),

View file

@ -36,6 +36,7 @@ type (
AssetID AssetID `json:"assetId"` AssetID AssetID `json:"assetId"`
LocationIDs []uuid.UUID `json:"locationIds"` LocationIDs []uuid.UUID `json:"locationIds"`
LabelIDs []uuid.UUID `json:"labelIds"` LabelIDs []uuid.UUID `json:"labelIds"`
ParentItemIDs []uuid.UUID `json:"parentIds"`
SortBy string `json:"sortBy"` SortBy string `json:"sortBy"`
IncludeArchived bool `json:"includeArchived"` IncludeArchived bool `json:"includeArchived"`
Fields []FieldQuery `json:"fields"` Fields []FieldQuery `json:"fields"`
@ -159,7 +160,6 @@ type (
Attachments []ItemAttachment `json:"attachments"` Attachments []ItemAttachment `json:"attachments"`
Fields []ItemField `json:"fields"` Fields []ItemField `json:"fields"`
Children []ItemSummary `json:"children"`
} }
) )
@ -240,11 +240,6 @@ func mapItemOut(item *ent.Item) ItemOut {
fields = mapFields(item.Edges.Fields) fields = mapFields(item.Edges.Fields)
} }
var children []ItemSummary
if item.Edges.Children != nil {
children = mapEach(item.Edges.Children, mapItemSummary)
}
var parent *ItemSummary var parent *ItemSummary
if item.Edges.Parent != nil { if item.Edges.Parent != nil {
v := mapItemSummary(item.Edges.Parent) v := mapItemSummary(item.Edges.Parent)
@ -278,7 +273,6 @@ func mapItemOut(item *ent.Item) ItemOut {
Notes: item.Notes, Notes: item.Notes,
Attachments: attachments, Attachments: attachments,
Fields: fields, Fields: fields,
Children: children,
} }
} }
@ -296,7 +290,6 @@ func (e *ItemsRepository) getOne(ctx context.Context, where ...predicate.Item) (
WithLabel(). WithLabel().
WithLocation(). WithLocation().
WithGroup(). WithGroup().
WithChildren().
WithParent(). WithParent().
WithAttachments(func(aq *ent.AttachmentQuery) { WithAttachments(func(aq *ent.AttachmentQuery) {
aq.WithDocument() aq.WithDocument()
@ -398,6 +391,10 @@ func (e *ItemsRepository) QueryByGroup(ctx context.Context, gid uuid.UUID, q Ite
andPredicates = append(andPredicates, item.Or(fieldPredicates...)) andPredicates = append(andPredicates, item.Or(fieldPredicates...))
} }
if len(q.ParentItemIDs) > 0 {
andPredicates = append(andPredicates, item.HasParentWith(item.IDIn(q.ParentItemIDs...)))
}
} }
if len(andPredicates) > 0 { if len(andPredicates) > 0 {

View file

@ -22,6 +22,7 @@ export type ItemsQuery = {
pageSize?: number; pageSize?: number;
locations?: string[]; locations?: string[];
labels?: string[]; labels?: string[];
parentIds?: string[];
q?: string; q?: string;
fields?: string[]; fields?: string[];
}; };

View file

@ -404,6 +404,23 @@
}, },
]; ];
}); });
const items = computedAsync(async () => {
if (!item.value) {
return [];
}
const resp = await api.items.getAll({
parentIds: [item.value.id],
});
if (resp.error) {
toast.error("Failed to load items");
return [];
}
return resp.data.items;
});
</script> </script>
<template> <template>
@ -565,8 +582,8 @@
</div> </div>
</section> </section>
<section v-if="!hasNested && item.children.length > 0" class="my-6"> <section v-if="items && items.length > 0" class="my-6">
<ItemViewSelectable :items="item.children" /> <ItemViewSelectable :items="items" />
</section> </section>
</BaseContainer> </BaseContainer>
</template> </template>