import { Arg, Args, Mutation, Query, Resolver, Info } from 'type-graphql';
import { Inject } from 'typedi';
import { Fields, StandardDeleteResponse, UserId } from '@joystream/warthog';
import { GraphQLResolveInfo } from 'graphql';

import {
  {{className}}CreateInput,
  {{className}}CreateManyArgs,
  {{className}}UpdateArgs,
  {{className}}WhereArgs,
  {{className}}WhereInput,
  {{className}}WhereUniqueInput
} from '{{{generatedFolderRelPath}}}';

import { {{className}} } from './{{kebabName}}.model';
import { {{className}}Service } from './{{kebabName}}.service';

@Resolver()
export class {{className}}Resolver {
  constructor(@Inject('{{className}}Service') public readonly service: {{className}}Service) {}

  @Query(() => [{{className}}])
  async {{camelNamePlural}}(
    @Args() { where, orderBy, limit, offset }: {{className}}WhereArgs,
    @Fields() fields: string[],
    @Info() info?: GraphQLResolveInfo | string
  ): Promise<{{className}}[]> {
    return this.service.find<{{className}}WhereInput>(where, orderBy, limit, offset, fields, info);
  }

  
}
