Make Field constructor functions generic (#8)
F# can upcast types to `obj` if those types are used in place. However, a `string seq` (`IEnumerable<string>` in C#) cannot be upcast to an `obj seq` (`IEnumerable<object>`) without mapping each item in the sequence. Making the `Field` constructor functions generic will allow them to take any object type, and these functions handle the conversion to `obj` (for `In` and `InArray`; others work transparently). Reviewed-on: #8
This commit was merged in pull request #8.
This commit is contained in:
@@ -75,68 +75,68 @@ type Field =
|
||||
with
|
||||
|
||||
/// Create a comparison against a field
|
||||
static member Where name comparison =
|
||||
static member Where name (comparison: Comparison) =
|
||||
{ Name = name; Comparison = comparison; ParameterName = None; Qualifier = None }
|
||||
|
||||
/// Create an equals (=) field criterion
|
||||
static member Equal name (value: obj) =
|
||||
static member Equal<'T> name (value: 'T) =
|
||||
Field.Where name (Equal value)
|
||||
|
||||
/// Create an equals (=) field criterion (alias)
|
||||
static member EQ name (value: obj) = Field.Equal name value
|
||||
static member EQ<'T> name (value: 'T) = Field.Equal name value
|
||||
|
||||
/// Create a greater than (>) field criterion
|
||||
static member Greater name (value: obj) =
|
||||
static member Greater<'T> name (value: 'T) =
|
||||
Field.Where name (Greater value)
|
||||
|
||||
/// Create a greater than (>) field criterion (alias)
|
||||
static member GT name (value: obj) = Field.Greater name value
|
||||
static member GT<'T> name (value: 'T) = Field.Greater name value
|
||||
|
||||
/// Create a greater than or equal to (>=) field criterion
|
||||
static member GreaterOrEqual name (value: obj) =
|
||||
static member GreaterOrEqual<'T> name (value: 'T) =
|
||||
Field.Where name (GreaterOrEqual value)
|
||||
|
||||
/// Create a greater than or equal to (>=) field criterion (alias)
|
||||
static member GE name (value: obj) = Field.GreaterOrEqual name value
|
||||
static member GE<'T> name (value: 'T) = Field.GreaterOrEqual name value
|
||||
|
||||
/// Create a less than (<) field criterion
|
||||
static member Less name (value: obj) =
|
||||
static member Less<'T> name (value: 'T) =
|
||||
Field.Where name (Less value)
|
||||
|
||||
/// Create a less than (<) field criterion (alias)
|
||||
static member LT name (value: obj) = Field.Less name value
|
||||
static member LT<'T> name (value: 'T) = Field.Less name value
|
||||
|
||||
/// Create a less than or equal to (<=) field criterion
|
||||
static member LessOrEqual name (value: obj) =
|
||||
static member LessOrEqual<'T> name (value: 'T) =
|
||||
Field.Where name (LessOrEqual value)
|
||||
|
||||
/// Create a less than or equal to (<=) field criterion (alias)
|
||||
static member LE name (value: obj) = Field.LessOrEqual name value
|
||||
static member LE<'T> name (value: 'T) = Field.LessOrEqual name value
|
||||
|
||||
/// Create a not equals (<>) field criterion
|
||||
static member NotEqual name (value: obj) =
|
||||
static member NotEqual<'T> name (value: 'T) =
|
||||
Field.Where name (NotEqual value)
|
||||
|
||||
/// Create a not equals (<>) field criterion (alias)
|
||||
static member NE name (value: obj) = Field.NotEqual name value
|
||||
static member NE<'T> name (value: 'T) = Field.NotEqual name value
|
||||
|
||||
/// Create a Between field criterion
|
||||
static member Between name (min: obj) (max: obj) =
|
||||
static member Between<'T> name (min: 'T) (max: 'T) =
|
||||
Field.Where name (Between(min, max))
|
||||
|
||||
/// Create a Between field criterion (alias)
|
||||
static member BT name (min: obj) (max: obj) = Field.Between name min max
|
||||
static member BT<'T> name (min: 'T) (max: 'T) = Field.Between name min max
|
||||
|
||||
/// Create an In field criterion
|
||||
static member In name (values: obj seq) =
|
||||
Field.Where name (In values)
|
||||
static member In<'T> name (values: 'T seq) =
|
||||
Field.Where name (In (Seq.map box values))
|
||||
|
||||
/// Create an In field criterion (alias)
|
||||
static member IN name (values: obj seq) = Field.In name values
|
||||
static member IN<'T> name (values: 'T seq) = Field.In name values
|
||||
|
||||
/// Create an InArray field criterion
|
||||
static member InArray name tableName (values: obj seq) =
|
||||
Field.Where name (InArray(tableName, values))
|
||||
static member InArray<'T> name tableName (values: 'T seq) =
|
||||
Field.Where name (InArray(tableName, Seq.map box values))
|
||||
|
||||
/// Create an exists (IS NOT NULL) field criterion
|
||||
static member Exists name =
|
||||
|
||||
Reference in New Issue
Block a user