From 682f15e63d7f7c6b44b80897ccafa81dd70375bd Mon Sep 17 00:00:00 2001 From: stashcoder42 Date: Tue, 1 Jul 2025 09:35:17 -0400 Subject: [PATCH] Fix make generate-dataloaders and the extra time import --- internal/api/loaders/dataloaders.go | 56 +++++++++++++++++++++++----- internal/api/resolver_model_scene.go | 16 ++++---- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/internal/api/loaders/dataloaders.go b/internal/api/loaders/dataloaders.go index 1d9416417..e8edfe1df 100644 --- a/internal/api/loaders/dataloaders.go +++ b/internal/api/loaders/dataloaders.go @@ -32,7 +32,34 @@ import ( // Work around bug in dataloaden https://github.com/vektah/dataloaden/issues/54 type Time struct { - time.Time + time.Time +} + +// Helper functions for time conversion +func timeToTime(t *time.Time) *Time { + if t == nil { + return nil + } + return &Time{*t} +} + +func timesToTimes(times []*time.Time) []*Time { + result := make([]*Time, len(times)) + for i, t := range times { + result[i] = timeToTime(t) + } + return result +} + +func timeSlicesToTimeSlices(timeSlices [][]time.Time) [][]Time { + result := make([][]Time, len(timeSlices)) + for i, slice := range timeSlices { + result[i] = make([]Time, len(slice)) + for j, t := range slice { + result[i][j] = Time{t} + } + } + return result } type contextKey struct{ name string } @@ -357,35 +384,44 @@ func (m Middleware) fetchScenesPlayCount(ctx context.Context) func(keys []int) ( } } -func (m Middleware) fetchScenesOHistory(ctx context.Context) func(keys []int) ([][]time.Time, []error) { - return func(keys []int) (ret [][]time.Time, errs []error) { +func (m Middleware) fetchScenesOHistory(ctx context.Context) func(keys []int) ([][]Time, []error) { + return func(keys []int) (ret [][]Time, errs []error) { + var timeRet [][]time.Time err := m.Repository.WithDB(ctx, func(ctx context.Context) error { var err error - ret, err = m.Repository.Scene.GetManyODates(ctx, keys) + timeRet, err = m.Repository.Scene.GetManyODates(ctx, keys) return err }) + + ret = timeSlicesToTimeSlices(timeRet) return ret, toErrorSlice(err) } } -func (m Middleware) fetchScenesPlayHistory(ctx context.Context) func(keys []int) ([][]time.Time, []error) { - return func(keys []int) (ret [][]time.Time, errs []error) { +func (m Middleware) fetchScenesPlayHistory(ctx context.Context) func(keys []int) ([][]Time, []error) { + return func(keys []int) (ret [][]Time, errs []error) { + var timeRet [][]time.Time err := m.Repository.WithDB(ctx, func(ctx context.Context) error { var err error - ret, err = m.Repository.Scene.GetManyViewDates(ctx, keys) + timeRet, err = m.Repository.Scene.GetManyViewDates(ctx, keys) return err }) + + ret = timeSlicesToTimeSlices(timeRet) return ret, toErrorSlice(err) } } -func (m Middleware) fetchScenesLastPlayed(ctx context.Context) func(keys []int) ([]*time.Time, []error) { - return func(keys []int) (ret []*time.Time, errs []error) { +func (m Middleware) fetchScenesLastPlayed(ctx context.Context) func(keys []int) ([]*Time, []error) { + return func(keys []int) (ret []*Time, errs []error) { + var timeRet []*time.Time err := m.Repository.WithDB(ctx, func(ctx context.Context) error { var err error - ret, err = m.Repository.Scene.GetManyLastViewed(ctx, keys) + timeRet, err = m.Repository.Scene.GetManyLastViewed(ctx, keys) return err }) + + ret = timesToTimes(timeRet) return ret, toErrorSlice(err) } } diff --git a/internal/api/resolver_model_scene.go b/internal/api/resolver_model_scene.go index 2600c9538..6b6931e1c 100644 --- a/internal/api/resolver_model_scene.go +++ b/internal/api/resolver_model_scene.go @@ -367,7 +367,11 @@ func (r *sceneResolver) LastPlayedAt(ctx context.Context, obj *models.Scene) (*t return nil, err } - return ret, nil + if ret == nil { + return nil, nil + } + + return &ret.Time, nil } func (r *sceneResolver) PlayCount(ctx context.Context, obj *models.Scene) (*int, error) { @@ -385,11 +389,10 @@ func (r *sceneResolver) PlayHistory(ctx context.Context, obj *models.Scene) ([]* return nil, err } - // convert to pointer slice + // convert to pointer slice of time.Time ptrRet := make([]*time.Time, len(ret)) for i, t := range ret { - tt := t - ptrRet[i] = &tt + ptrRet[i] = &t.Time } return ptrRet, nil @@ -401,11 +404,10 @@ func (r *sceneResolver) OHistory(ctx context.Context, obj *models.Scene) ([]*tim return nil, err } - // convert to pointer slice + // convert to pointer slice of time.Time ptrRet := make([]*time.Time, len(ret)) for i, t := range ret { - tt := t - ptrRet[i] = &tt + ptrRet[i] = &t.Time } return ptrRet, nil