package graphql

import "context"

// resolveWorkContent uses the Work service to fetch preferred content for a work.
func (r *queryResolver) resolveWorkContent(ctx context.Context, workID uint, preferredLanguage string) *string {
	if r.App.Work == nil || r.App.Work.Queries == nil {
		return nil
	}

	work, err := r.App.Work.Queries.GetWorkWithTranslations(ctx, workID)
	if err != nil || work == nil {
		return nil
	}

	// Find the translation for the preferred language.
	for _, t := range work.Translations {
		if t.Language == preferredLanguage && t.Content != "" {
			return &t.Content
		}
	}

	// If no specific language match, find the original language content.
	for _, t := range work.Translations {
		if t.IsOriginalLanguage && t.Content != "" {
			return &t.Content
		}
	}

	// Fallback to the work's own description if no suitable translation content is found.
	if work.Description != "" {
		return &work.Description
	}

	return nil
}
