public PublicCalendarQuery( CalendarRequestDecorator requestDecorator, IUserOwnedGenericRepository <Tab> tabRepository, IUserOwnedGenericRepository <Event> eventRepository, IUserOwnedGenericRepository <UserPreference> userPreferenceRepository, IGenericRepository <User> userRepository) : base(requestDecorator) { AddFieldAsync <Tab, GraphQLTab>("tab", "tabs", tabRepository); AddFieldAsync <Event, GraphQLEvent>("event", "events", eventRepository); AddFieldAsync <User, GraphQLUser>("user", "users", userRepository); AddSingleFieldAsync <UserPreference, GraphQLUserPreference>("userPreference", userPreferenceRepository); }
/// <summary> /// Add single user owned field like UserPrefeneces /// </summary> protected void AddSingleFieldAsync <TDomain, TGraphQL>(string singleName, IUserOwnedGenericRepository <TDomain> repository) where TDomain : class, IUserOwnedElement where TGraphQL : ObjectGraphType <TDomain> { FieldAsync <NonNullGraphType <TGraphQL> >( singleName, resolve: async resolveContext => { return(await _requestDecorator.Run(resolveContext, async context => { return await repository.GetSingleUserOwnedAsync(); })); }); }
public PublicCalendarMutation( CalendarDbFactory dbFactory, CalendarRequestDecorator requestDecorator, IUserOwnedGenericRepository <Tab> tabRepository, IUserOwnedGenericRepository <Event> eventRepository, IUserOwnedGenericRepository <UserPreference> userPreferenceRepository, IUserRepository userRepository, CognitoService cognitoService) : base(requestDecorator) { AddFieldAsync <Tab, GraphQLTab, GraphQLTabInput>("Tab", tabRepository); AddFieldAsync <Event, GraphQLEvent, GraphQLEventInput>("Event", eventRepository); AddSingleFieldAsync <UserPreference, GraphQLUserPreference, GraphQLUserPreferenceInput>("UserPreference", userPreferenceRepository); AddUserAsync(userRepository, cognitoService, dbFactory); }
/// <summary> /// Add single user owned field like UserPrefeneces /// </summary> protected void AddSingleFieldAsync <TDomain, TGraphQL, TInputType>(string singleName, IUserOwnedGenericRepository <TDomain> repository) where TDomain : class, IUserOwnedElement where TGraphQL : ObjectGraphType <TDomain> where TInputType : InputObjectGraphType { FieldAsync <NonNullGraphType <BooleanGraphType> >( $"addOrUpdate{singleName}", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <TInputType> > { Name = "updateData" } ), resolve: async resolveContext => { return(await _requestDecorator.Run(resolveContext, async context => { var updateData = context.GetArgument <TDomain>("updateData"); await repository.AddOrUpdateSingleUserOwnedAsync(updateData); return true; })); }); }