package queries import ( "context" "errors" "git.aiterp.net/rpdata/api/graphql/loader" "git.aiterp.net/rpdata/api/graphql/resolver/types" "git.aiterp.net/rpdata/api/model/log" ) // LogsArgs is args for the logs query type LogsArgs struct { Filter *log.Filter } // Logs resolves the logs query func (r *QueryResolver) Logs(ctx context.Context, args *LogsArgs) ([]*types.LogResolver, error) { var logs []log.Log filter := args.Filter if filter == nil { filter = log.NewFilter().WithLimit(100) } logs, err := log.List(filter) if err != nil { return nil, err } if len(logs) >= 100 { loader := loader.FromContext(ctx) if loader == nil { return nil, errors.New("no loader") } for _, log := range logs { loader.PrimeCharacters("id", log.CharacterIDs...) loader.PrimeChannels("name", log.Channel) } } resolvers := make([]*types.LogResolver, len(logs)) for i := range logs { resolvers[i] = &types.LogResolver{L: logs[i]} } return resolvers, nil }