mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-07 21:48:18 -08:00
* feat: single SOT for themes + basic custom support * fix: adjust colors for yuu theme * feat: Allow loading of environment variables from file (#20) * feat: allow loading of environment variables from file * Panic if a file for an environment variable cannot be read * Use log.Fatalf + os.Exit instead of panic * fix: remove supurfluous call to os.Exit() --------- Co-authored-by: adaexec <nixos-git.s1pht@simplelogin.com> Co-authored-by: Gabe Farrell <90876006+gabehf@users.noreply.github.com> * chore: add pr test workflow * chore: changelog * feat: make all activity grids configurable * fix: adjust activity grid style * fix: make background gradient consistent size * revert: remove year from activity grid opts * style: adjust top item list min size to 200px * feat: add support for custom themes * fix: stabilized the order of top items * chore: update changelog * feat: native import & export * fix: use correct request body for alias requests * fix: clear input when closing edit modal * chore: changelog * docs: make endpoint clearer for some apps * feat: add ui and handler for export * fix: fix pr test workflow --------- Co-authored-by: adaexec <78047743+adaexec@users.noreply.github.com> Co-authored-by: adaexec <nixos-git.s1pht@simplelogin.com>
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package psql
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/gabehf/koito/internal/db"
|
|
"github.com/gabehf/koito/internal/models"
|
|
"github.com/gabehf/koito/internal/repository"
|
|
)
|
|
|
|
func (d *Psql) GetExportPage(ctx context.Context, opts db.GetExportPageOpts) ([]*db.ExportItem, error) {
|
|
rows, err := d.q.GetListensExportPage(ctx, repository.GetListensExportPageParams{
|
|
UserID: opts.UserID,
|
|
TrackID: opts.TrackID,
|
|
Limit: opts.Limit,
|
|
ListenedAt: opts.ListenedAt,
|
|
})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("GetExportPage: %w", err)
|
|
}
|
|
ret := make([]*db.ExportItem, len(rows))
|
|
for i, row := range rows {
|
|
|
|
var trackAliases []models.Alias
|
|
err = json.Unmarshal(row.TrackAliases, &trackAliases)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("GetExportPage: json.Unmarshal trackAliases: %w", err)
|
|
}
|
|
var albumAliases []models.Alias
|
|
err = json.Unmarshal(row.ReleaseAliases, &albumAliases)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("GetExportPage: json.Unmarshal albumAliases: %w", err)
|
|
}
|
|
var artists []models.ArtistWithFullAliases
|
|
err = json.Unmarshal(row.Artists, &artists)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("GetExportPage: json.Unmarshal artists: %w", err)
|
|
}
|
|
|
|
ret[i] = &db.ExportItem{
|
|
TrackID: row.TrackID,
|
|
ListenedAt: row.ListenedAt,
|
|
UserID: row.UserID,
|
|
Client: row.Client,
|
|
TrackMbid: row.TrackMbid,
|
|
TrackDuration: row.TrackDuration,
|
|
TrackAliases: trackAliases,
|
|
ReleaseID: row.ReleaseID,
|
|
ReleaseMbid: row.ReleaseMbid,
|
|
ReleaseImageSource: row.ReleaseImageSource.String,
|
|
VariousArtists: row.VariousArtists,
|
|
ReleaseAliases: albumAliases,
|
|
Artists: artists,
|
|
}
|
|
}
|
|
return ret, nil
|
|
}
|