mirror of
https://github.com/hay-kot/homebox.git
synced 2024-11-22 08:35:43 +00:00
fix: images in child items (#623)
* support parentID search
* fetch images for item children
Former-commit-id: afbc6a49ac
This commit is contained in:
parent
a26ea3bac5
commit
798d873f76
4 changed files with 27 additions and 10 deletions
|
@ -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"),
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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[];
|
||||||
};
|
};
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue