mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00
feat(web): search releases (#302)
* feat(releases): search in ui * refactor(releases): optimize query recent releases
This commit is contained in:
parent
38addb99e6
commit
258754643d
9 changed files with 153 additions and 13 deletions
|
@ -12,6 +12,7 @@ import (
|
|||
|
||||
type releaseService interface {
|
||||
Find(ctx context.Context, query domain.ReleaseQueryParams) (res []*domain.Release, nextCursor int64, count int64, err error)
|
||||
FindRecent(ctx context.Context) (res []*domain.Release, err error)
|
||||
GetIndexerOptions(ctx context.Context) ([]string, error)
|
||||
Stats(ctx context.Context) (*domain.ReleaseStats, error)
|
||||
Delete(ctx context.Context) error
|
||||
|
@ -31,6 +32,7 @@ func newReleaseHandler(encoder encoder, service releaseService) *releaseHandler
|
|||
|
||||
func (h releaseHandler) Routes(r chi.Router) {
|
||||
r.Get("/", h.findReleases)
|
||||
r.Get("/recent", h.findRecentReleases)
|
||||
r.Get("/stats", h.getStats)
|
||||
r.Get("/indexers", h.getIndexerOptions)
|
||||
r.Delete("/all", h.deleteReleases)
|
||||
|
@ -86,6 +88,7 @@ func (h releaseHandler) findReleases(w http.ResponseWriter, r *http.Request) {
|
|||
indexer := vals["indexer"]
|
||||
|
||||
pushStatus := r.URL.Query().Get("push_status")
|
||||
search := r.URL.Query().Get("q")
|
||||
|
||||
query := domain.ReleaseQueryParams{
|
||||
Limit: uint64(limit),
|
||||
|
@ -96,6 +99,7 @@ func (h releaseHandler) findReleases(w http.ResponseWriter, r *http.Request) {
|
|||
Indexers []string
|
||||
PushStatus string
|
||||
}{Indexers: indexer, PushStatus: pushStatus},
|
||||
Search: search,
|
||||
}
|
||||
|
||||
releases, nextCursor, count, err := h.service.Find(r.Context(), query)
|
||||
|
@ -117,6 +121,23 @@ func (h releaseHandler) findReleases(w http.ResponseWriter, r *http.Request) {
|
|||
h.encoder.StatusResponse(r.Context(), w, ret, http.StatusOK)
|
||||
}
|
||||
|
||||
func (h releaseHandler) findRecentReleases(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
releases, err := h.service.FindRecent(r.Context())
|
||||
if err != nil {
|
||||
h.encoder.StatusNotFound(r.Context(), w)
|
||||
return
|
||||
}
|
||||
|
||||
ret := struct {
|
||||
Data []*domain.Release `json:"data"`
|
||||
}{
|
||||
Data: releases,
|
||||
}
|
||||
|
||||
h.encoder.StatusResponse(r.Context(), w, ret, http.StatusOK)
|
||||
}
|
||||
|
||||
func (h releaseHandler) getIndexerOptions(w http.ResponseWriter, r *http.Request) {
|
||||
stats, err := h.service.GetIndexerOptions(r.Context())
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue