WIP on field enhancements
This commit is contained in:
		
							parent
							
								
									039761fcca
								
							
						
					
					
						commit
						433302d995
					
				@ -45,43 +45,57 @@ type Field = {
 | 
			
		||||
    
 | 
			
		||||
    /// The value of the field
 | 
			
		||||
    Value: obj
 | 
			
		||||
    
 | 
			
		||||
    /// The name of the parameter for this field
 | 
			
		||||
    ParameterName: string option
 | 
			
		||||
    
 | 
			
		||||
    /// The table qualifier for this field
 | 
			
		||||
    Qualifier: string option
 | 
			
		||||
} with
 | 
			
		||||
    
 | 
			
		||||
    /// Create an equals (=) field criterion
 | 
			
		||||
    static member EQ name (value: obj) =
 | 
			
		||||
        { Name = name; Op = EQ; Value = value }
 | 
			
		||||
        { Name = name; Op = EQ; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a greater than (>) field criterion
 | 
			
		||||
    static member GT name (value: obj) =
 | 
			
		||||
        { Name = name; Op = GT; Value = value }
 | 
			
		||||
        { Name = name; Op = GT; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a greater than or equal to (>=) field criterion
 | 
			
		||||
    static member GE name (value: obj) =
 | 
			
		||||
        { Name = name; Op = GE; Value = value }
 | 
			
		||||
        { Name = name; Op = GE; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a less than (<) field criterion
 | 
			
		||||
    static member LT name (value: obj) =
 | 
			
		||||
        { Name = name; Op = LT; Value = value }
 | 
			
		||||
        { Name = name; Op = LT; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a less than or equal to (<=) field criterion
 | 
			
		||||
    static member LE name (value: obj) =
 | 
			
		||||
        { Name = name; Op = LE; Value = value }
 | 
			
		||||
        { Name = name; Op = LE; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a not equals (<>) field criterion
 | 
			
		||||
    static member NE name (value: obj) =
 | 
			
		||||
        { Name = name; Op = NE; Value = value }
 | 
			
		||||
        { Name = name; Op = NE; Value = value; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a BETWEEN field criterion
 | 
			
		||||
    static member BT name (min: obj) (max: obj) =
 | 
			
		||||
        { Name = name; Op = BT; Value = [ min; max ] }
 | 
			
		||||
        { Name = name; Op = BT; Value = [ min; max ]; ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create an exists (IS NOT NULL) field criterion
 | 
			
		||||
    static member EX name =
 | 
			
		||||
        { Name = name; Op = EX; Value = obj () }
 | 
			
		||||
        { Name = name; Op = EX; Value = obj (); ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Create a not exists (IS NULL) field criterion
 | 
			
		||||
    static member NEX name =
 | 
			
		||||
        { Name = name; Op = NEX; Value = obj () }
 | 
			
		||||
        { Name = name; Op = NEX; Value = obj (); ParameterName = None; Qualifier = None }
 | 
			
		||||
    
 | 
			
		||||
    /// Specify the name of the parameter for this field
 | 
			
		||||
    member this.WithParameterName name =
 | 
			
		||||
        { this with ParameterName = Some name }
 | 
			
		||||
    
 | 
			
		||||
    /// Specify a qualifier (alias) for the table from which this field will be referenced
 | 
			
		||||
    member this.WithQualifier alias =
 | 
			
		||||
        { this with Qualifier = Some alias }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// The required document serialization implementation
 | 
			
		||||
 | 
			
		||||
@ -44,52 +44,80 @@ let all =
 | 
			
		||||
                Expect.equal field.Name "Test" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op EQ "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value 14 "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "GT succeeds" {
 | 
			
		||||
                let field = Field.GT "Great" "night"
 | 
			
		||||
                Expect.equal field.Name "Great" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op GT "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value "night" "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "GE succeeds" {
 | 
			
		||||
                let field = Field.GE "Nice" 88L
 | 
			
		||||
                Expect.equal field.Name "Nice" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op GE "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value 88L "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "LT succeeds" {
 | 
			
		||||
                let field = Field.LT "Lesser" "seven"
 | 
			
		||||
                Expect.equal field.Name "Lesser" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op LT "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value "seven" "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "LE succeeds" {
 | 
			
		||||
                let field = Field.LE "Nobody" "KNOWS";
 | 
			
		||||
                Expect.equal field.Name "Nobody" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op LE "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value "KNOWS" "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "NE succeeds" {
 | 
			
		||||
                let field = Field.NE "Park" "here"
 | 
			
		||||
                Expect.equal field.Name "Park" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op NE "Operator incorrect"
 | 
			
		||||
                Expect.equal field.Value "here" "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "BT succeeds" {
 | 
			
		||||
                let field = Field.BT "Age" 18 49
 | 
			
		||||
                Expect.equal field.Name "Age" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op BT "Operator incorrect"
 | 
			
		||||
                Expect.sequenceEqual (field.Value :?> obj list) [ 18; 49 ] "Value incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "EX succeeds" {
 | 
			
		||||
                let field = Field.EX "Groovy"
 | 
			
		||||
                Expect.equal field.Name "Groovy" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op EX "Operator incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "NEX succeeds" {
 | 
			
		||||
                let field = Field.NEX "Rad"
 | 
			
		||||
                Expect.equal field.Name "Rad" "Field name incorrect"
 | 
			
		||||
                Expect.equal field.Op NEX "Operator incorrect"
 | 
			
		||||
                Expect.isNone field.ParameterName "The default parameter name should be None"
 | 
			
		||||
                Expect.isNone field.Qualifier "The default table qualifier should be None"
 | 
			
		||||
            }
 | 
			
		||||
            test "WithParameterName succeeds" {
 | 
			
		||||
                let field = (Field.EQ "Bob" "Tom").WithParameterName "@name"
 | 
			
		||||
                Expect.isSome field.ParameterName "The parameter name should have been filled"
 | 
			
		||||
                Expect.equal "@name" field.ParameterName.Value "The parameter name is incorrect"
 | 
			
		||||
            }
 | 
			
		||||
            test "WithQualifier succeeds" {
 | 
			
		||||
                let field = (Field.EQ "Bill" "Matt").WithParameterName "@joe"
 | 
			
		||||
                Expect.isSome field.Qualifier "The table qualifier should have been filled"
 | 
			
		||||
                Expect.equal "@joe" field.Qualifier.Value "The table qualifier is incorrect"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
        testList "Query" [
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user