GraphQL API and utilities for the rpdata project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
674 B

  1. package queries
  2. import (
  3. "context"
  4. "errors"
  5. "git.aiterp.net/rpdata/api/internal/loader"
  6. "git.aiterp.net/rpdata/api/model/log"
  7. )
  8. func (r *resolver) Log(ctx context.Context, id string) (log.Log, error) {
  9. return log.FindID(id)
  10. }
  11. func (r *resolver) Logs(ctx context.Context, filter *log.Filter) ([]log.Log, error) {
  12. logs, err := log.List(filter)
  13. if err != nil {
  14. return nil, err
  15. }
  16. if len(logs) >= 100 {
  17. loader := loader.FromContext(ctx)
  18. if loader == nil {
  19. return nil, errors.New("no loader")
  20. }
  21. for _, log := range logs {
  22. loader.PrimeCharacters("id", log.CharacterIDs...)
  23. loader.PrimeChannels("name", log.ChannelName)
  24. }
  25. }
  26. return logs, nil
  27. }