/// <summary> /// Filter's this route's dataset by a request parameter that is compared to the primary key of the model /// </summary> /// <typeparam name="TModel">The model type that the API is being built for</typeparam> /// <typeparam name="TUser">The type of authenticated user context</typeparam> /// <param name="builder">The options builder to perform the operation on</param> /// <param name="parameters">The parameters to filter by</param> /// <returns>This <see cref="SeltzrOptionsBuilder{TModel, TUser}" /> object, for chaining</returns> public static SeltzrOptionsBuilder <TModel, TUser> FilterByPrimaryKey <TModel, TUser>( this SeltzrOptionsBuilder <TModel, TUser> builder, params ParameterRetriever[] parameters) where TModel : class where TUser : class { return(builder.AddFilter(new PrimaryKeyFilter <TModel>(SeltzrOrmOptionsBuilderExtensions.GetPrimaryKey(builder), parameters))); }
/// <summary> /// Ensures that the primary key of the <typeparamref name="TModel" /> will be included in the response body /// </summary> /// <typeparam name="TModel">The model type that the API is being built for</typeparam> /// <typeparam name="TUser">The type of authenticated user context</typeparam> /// <param name="builder">The options builder to perform the operation on</param> /// <returns>This <see cref="SeltzrOptionsBuilder{TModel, TUser}" /> object, for chaining</returns> public static SeltzrOptionsBuilder <TModel, TUser> IncludePrimaryKey <TModel, TUser>( this SeltzrOptionsBuilder <TModel, TUser> builder) where TModel : class where TUser : class { foreach (KeyProperty Property in SeltzrOrmOptionsBuilderExtensions.GetPrimaryKey(builder)) { builder.Include(Property.PropertyInfo); } return(builder); }
/// <summary> /// Gets camelCased versions of the names of the primary key properties /// </summary> /// <typeparam name="TModel">The model type that the API is being built for</typeparam> /// <typeparam name="TUser">The type of authenticated user context</typeparam> /// <param name="builder">The builder containing the type of database context to get the keys for</param> /// <returns>camelCased versions of the primary key property names, in order</returns> private static string[] GetKeyNames <TModel, TUser>(SeltzrOptionsBuilder <TModel, TUser> builder) where TModel : class where TUser : class { List <KeyProperty> KeyProperties = SeltzrOrmOptionsBuilderExtensions.GetPrimaryKey(builder); IEnumerable <string> Names = KeyProperties.Select(p => SeltzrOrmOptionsBuilderExtensions.CamelCase(p.Name)); return(Names.ToArray()); }