update thingys

This commit is contained in:
2025-05-25 23:27:42 +02:00
parent 6058a96258
commit 5d8aa468e8
13 changed files with 891 additions and 944 deletions

View File

@@ -340,16 +340,29 @@ func getRecent(db *sql.DB, limit, offset int) ([]Song, error) {
}
func getSearch(db *sql.DB, q string, limit, offset int) (ActiveSearch, error) {
rows, err := db.Query("SELECT BeatmapId, MD5Hash, Title, Artist, Creator, Folder, File, Audio, TotalTime FROM Beatmap WHERE MD5Hash FROM Songs WHERE Title LIKE ? OR Artist LIKE ? LIMIT ? OFFSET ?", "%"+q+"%", "%"+q+"%", limit, offset)
rows, err := db.Query(
`
SELECT
BeatmapId,
MD5Hash,
Title,
Artist,
Creator,
Folder,
File,
Audio,
TotalTime
FROM Beatmap WHERE Title LIKE ? OR Artist LIKE ? LIMIT ? OFFSET ?
`, "%"+q+"%", "%"+q+"%", limit, offset)
if err != nil {
return ActiveSearch{}, err
}
defer rows.Close()
_, err = scanSongs(rows)
s, err := scanSongs(rows)
if err != nil {
return ActiveSearch{}, err
}
return ActiveSearch{}, nil
return ActiveSearch{Songs: s}, nil
}
func getArtists(db *sql.DB, q string, limit, offset int) ([]Artist, error) {
@@ -471,13 +484,16 @@ func getCollectionByName(db *sql.DB, limit, offset int, name string) (Collection
func getCollections(db *sql.DB, q string, limit, offset int) ([]CollectionPreview, error) {
rows, err := db.Query(`
SELECT
c.Name, COUNT(b.MD5Hash), b.Folder, b.File
c.Name,
COUNT(b.MD5Hash) AS Count,
MIN(b.Folder) AS Folder,
MIN(b.File) AS File
FROM Collection c
Join Beatmap b ON c.MD5Hash = b.MD5Hash
JOIN Beatmap b ON c.MD5Hash = b.MD5Hash
WHERE c.Name LIKE ?
GROUP BY c.NAME
GROUP BY c.Name
LIMIT ?
OFFSET ?;`, "%"+q+"%", limit, offset)
OFFSET ?`, "%"+q+"%", limit, offset)
if err != nil {
return []CollectionPreview{}, err
}

View File

@@ -110,7 +110,6 @@ func (s *Server) Recent(ctx context.Context, req *v1.RecentRequest) (*v1.RecentR
func (s *Server) Favorite(ctx context.Context, req *v1.FavoriteRequest) (*v1.FavoriteResponse, error) {
limit := defaultLimit(int(req.Limit))
offset := int(req.Offset)
favorites, err := getFavorites(s.Db, req.Query, limit, offset)
@@ -125,10 +124,9 @@ func (s *Server) Favorite(ctx context.Context, req *v1.FavoriteRequest) (*v1.Fav
}
func (s *Server) Collections(ctx context.Context, req *v1.CollectionRequest) (*v1.CollectionResponse, error) {
limit := defaultLimit(int(req.Limit))
offset := int(req.Offset)
name := req.Name
if name != "" {
@@ -143,12 +141,13 @@ func (s *Server) Collections(ctx context.Context, req *v1.CollectionRequest) (*v
Name: c.Name,
}, nil
}
fmt.Println(limit, offset, req.Index)
c, err := getCollection(s.Db, limit, offset, int(req.Index))
if err != nil {
fmt.Println(err)
return nil, status.Errorf(codes.Internal, fmt.Sprintf("failed to fetch collection with index: %d", req.Index))
}
fmt.Println(c)
return &v1.CollectionResponse{
Songs: toProtoSongs(c.Songs),
Items: int32(c.Items),
@@ -163,10 +162,8 @@ func (s *Server) Search(ctx context.Context, req *v1.SearchSharedRequest) (*v1.S
return nil, status.Error(codes.InvalidArgument, "query cant be empty")
}
limit := defaultLimit(int(req.Limit))
offset := int(req.Offset)
search, err := getSearch(s.Db, q, limit, offset)
if err != nil {
@@ -182,15 +179,11 @@ func (s *Server) Search(ctx context.Context, req *v1.SearchSharedRequest) (*v1.S
func (s *Server) SearchCollections(ctx context.Context, req *v1.SearchCollectionRequest) (*v1.SearchCollectionResponse, error) {
q := req.Query
if q == "" {
return nil, status.Errorf(codes.InvalidArgument, "query is required")
}
limit := defaultLimit(int(req.Limit))
offset := int(req.Offset)
fmt.Println(req)
preview, err := getCollections(s.Db, q, limit, offset)
if err != nil {
fmt.Println(err)