Skip to content

Commit f9352d6

Browse files
Kerry Perretnatalie-o-perret
authored andcommitted
feat(loggers): add sql global conf
1 parent 3ce15a1 commit f9352d6

8 files changed

Lines changed: 246 additions & 196 deletions

‎Vp.FSharp.Sql.Tests/Mocks.fs‎

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@ let fakeData values columns =
4343
| _ -> sprintf "count rows: out of resultSetIndex %i" resultSetIndex |> failwith
4444
CountResultSets = List.length values }
4545

46-
let makeDependencies (valToParam: (string -> 'a -> 'b) option) logger =
46+
let makeDeps (valToParam: (string -> 'DbType -> 'DbParameter) option) =
4747
{ CreateCommand = (fun connection -> connection.CreateCommand())
48-
ExecuteReaderAsync = (fun cmd -> cmd.ExecuteReaderAsync())
49-
DbValueToParameter = valToParam |> Option.defaultValue (fun _ _ -> failwith "")
50-
GlobalLogger = logger }
48+
ExecuteReaderAsync = (fun cmd -> cmd.ExecuteReaderAsync)
49+
DbValueToParameter = valToParam |> Option.defaultValue (fun _ _ -> failwith "") }
50+
51+
let makeGlobalConf logger =
52+
{ DefaultLogger = logger }
5153

5254
let makeReader data _ =
5355
let mutable currentRowIndex = -1
@@ -62,35 +64,35 @@ let makeReader data _ =
6264
member this.IsClosed with get() = true
6365
member this.RecordsAffected with get() = 0
6466
member this.Item
65-
with get(ordinal: int):Object = null
67+
with get(ordinal: int32):Object = null
6668
member this.Item
6769
with get(name: string):Object = null
68-
member this.GetDataTypeName (ordinal: int) =
70+
member this.GetDataTypeName (ordinal: int32) =
6971
data.Columns.[currentResultSetIndex].[ordinal].NativeTypeName
7072
member this.GetEnumerator () = null
71-
member this.GetFieldType (ordinal: int) =
73+
member this.GetFieldType (ordinal: int32) =
7274
data.Columns.[currentResultSetIndex].[ordinal].FieldType
73-
member this.GetName (ordinal: int) =
75+
member this.GetName (ordinal: int32) =
7476
data.Columns.[currentResultSetIndex].[ordinal].Name
7577
member this.GetOrdinal (name: string) = 0
76-
member this.GetBoolean (ordinal: int) = true
77-
member this.GetByte (ordinal: int) = 0uy
78+
member this.GetBoolean (ordinal: int32) = true
79+
member this.GetByte (ordinal: int32) = 0uy
7880
member this.GetBytes (ordinal, dataOffset, buffer, bufferOffset, length) = 0L
79-
member this.GetChar (ordinal: int) = 'a'
81+
member this.GetChar (ordinal: int32) = 'a'
8082
member this.GetChars (ordinal, dataOffset, buffer, bufferOffset, length) = 0L
81-
member this.GetDateTime (ordinal: int) = DateTime.Today
82-
member this.GetDecimal (ordinal: int) = 0M
83-
member this.GetDouble (ordinal: int) = 0.0
84-
member this.GetFloat (ordinal: int) = 0F
85-
member this.GetGuid (ordinal: int) = Guid.Empty
86-
member this.GetInt16 (ordinal: int) = 0s
87-
member this.GetInt32 (ordinal: int) = 0
88-
member this.GetInt64 (ordinal: int) = 0L
89-
member this.GetString (ordinal: int) = ""
90-
member this.GetValue (ordinal: int) =
83+
member this.GetDateTime (ordinal: int32) = DateTime.Today
84+
member this.GetDecimal (ordinal: int32) = 0M
85+
member this.GetDouble (ordinal: int32) = 0.0
86+
member this.GetFloat (ordinal: int32) = 0F
87+
member this.GetGuid (ordinal: int32) = Guid.Empty
88+
member this.GetInt16 (ordinal: int32) = 0s
89+
member this.GetInt32 (ordinal: int32) = 0
90+
member this.GetInt64 (ordinal: int32) = 0L
91+
member this.GetString (ordinal: int32) = ""
92+
member this.GetValue (ordinal: int32) =
9193
(data.GetValues currentResultSetIndex currentRowIndex).[ordinal]
9294
member this.GetValues values = 0
93-
member this.IsDBNull (ordinal: int) =
95+
member this.IsDBNull (ordinal: int32) =
9496
(data.GetValues currentResultSetIndex currentRowIndex).[ordinal] = null
9597
member this.NextResult () =
9698
currentResultSetIndex <- currentResultSetIndex + 1

‎Vp.FSharp.Sql.Tests/SqlCommand for executeNonQuery should.fs‎

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ let ``open and then close the connection if initially closed`` () =
1818
use connection =
1919
Mocks.NonQuery 0
2020
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
21-
let! r =
21+
let deps = Mocks.makeDeps None
22+
let globalConf = Mocks.makeGlobalConf None
23+
let! outcome =
2224
SqlCommand.text "update"
2325
|> SqlCommand.noLogger
24-
|> SqlCommand.executeNonQuery connection (Mocks.makeDependencies None None)
25-
r =! 0
26+
|> SqlCommand.executeNonQuery connection deps globalConf
27+
outcome =! 0
2628
PartialCallCounter.assertEqual callCounter 1 1
2729
}
2830

@@ -34,11 +36,13 @@ let ``leave the connection open if initially open`` () =
3436
use connection =
3537
Mocks.NonQuery 1
3638
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
37-
let! r =
39+
let deps = Mocks.makeDeps None
40+
let globalConf = Mocks.makeGlobalConf None
41+
let! outcome =
3842
SqlCommand.text "update"
3943
|> SqlCommand.noLogger
40-
|> SqlCommand.executeNonQuery connection (Mocks.makeDependencies None None)
41-
r =! 1
44+
|> SqlCommand.executeNonQuery connection deps globalConf
45+
outcome =! 1
4246
PartialCallCounter.assertEqual callCounter 0 0
4347
}
4448

@@ -50,13 +54,12 @@ let ``log for all events on globalLogger if connection initially closed`` () =
5054
use connection =
5155
Mocks.NonQuery 2
5256
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
53-
let deps =
54-
Some loggerCallback
55-
|> Mocks.makeDependencies None
56-
let! r =
57+
let deps = Mocks.makeDeps None
58+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
59+
let! outcome =
5760
SqlCommand.text "update"
58-
|> SqlCommand.executeNonQuery connection deps
59-
r =! 2
61+
|> SqlCommand.executeNonQuery connection deps globalConf
62+
outcome =! 2
6063
FullCallCounter.assertEqual callCounter 1 1 1 1 1 1
6164
}
6265

@@ -68,12 +71,11 @@ let ``log just command events on globalLogger if connection initially not closed
6871
use connection =
6972
Mocks.NonQuery 3
7073
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
71-
let deps =
72-
Some loggerCallback
73-
|> Mocks.makeDependencies None
74-
let! r =
74+
let deps = Mocks.makeDeps None
75+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
76+
let! outcome =
7577
SqlCommand.text "update"
76-
|> SqlCommand.executeNonQuery connection deps
77-
r =! 3
78+
|> SqlCommand.executeNonQuery connection deps globalConf
79+
outcome =! 3
7880
FullCallCounter.assertEqual callCounter 0 0 0 0 1 1
7981
}

‎Vp.FSharp.Sql.Tests/SqlCommand for executeScalar should.fs‎

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ let ``open and then close the connection if initially closed`` () =
2828
use connection =
2929
Mocks.Reader (Mocks.makeReader data)
3030
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
31-
let! r = SqlCommand.text "select 1"
32-
|> SqlCommand.noLogger
33-
|> SqlCommand.executeScalar connection (Mocks.makeDependencies None None)
34-
r =! 14
31+
let deps = Mocks.makeDeps None
32+
let globalConf = Mocks.makeGlobalConf None
33+
let! outcome =
34+
SqlCommand.text "select 1"
35+
|> SqlCommand.noLogger
36+
|> SqlCommand.executeScalar connection deps globalConf
37+
outcome =! 14
3538
PartialCallCounter.assertEqual callCounter 1 1
3639
}
3740

@@ -53,10 +56,13 @@ let ``leave the connection open if initially open`` () =
5356
use connection =
5457
Mocks.Reader (Mocks.makeReader data)
5558
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
56-
let! r = SqlCommand.text "select 1"
57-
|> SqlCommand.noLogger
58-
|> SqlCommand.executeScalar connection (Mocks.makeDependencies None None)
59-
r =! 15
59+
let deps = Mocks.makeDeps None
60+
let globalConf = Mocks.makeGlobalConf None
61+
let! outcome =
62+
SqlCommand.text "select 1"
63+
|> SqlCommand.noLogger
64+
|> SqlCommand.executeScalar connection deps globalConf
65+
outcome =! 15
6066
PartialCallCounter.assertEqual callCounter 0 0
6167
}
6268

@@ -77,13 +83,12 @@ let ``log for all events on globalLogger if connection initially closed`` () =
7783
use connection =
7884
Mocks.Reader (Mocks.makeReader data)
7985
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
80-
let deps =
81-
Some loggerCallback
82-
|> Mocks.makeDependencies None
83-
let! r =
86+
let deps = Mocks.makeDeps None
87+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
88+
let! outcome =
8489
SqlCommand.text "select 1"
85-
|> SqlCommand.executeScalar connection deps
86-
r =! 16
90+
|> SqlCommand.executeScalar connection deps globalConf
91+
outcome =! 16
8792
FullCallCounter.assertEqual callCounter 1 1 1 1 1 1
8893
}
8994

@@ -104,12 +109,11 @@ let ``log for just command events on globalLogger if connection initially not cl
104109
use connection =
105110
Mocks.Reader (Mocks.makeReader data)
106111
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
107-
let deps =
108-
Some loggerCallback
109-
|> Mocks.makeDependencies None
110-
let! r =
112+
let deps = Mocks.makeDeps None
113+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
114+
let! outcome =
111115
SqlCommand.text "select 1"
112-
|> SqlCommand.executeScalar connection deps
113-
r =! 17
116+
|> SqlCommand.executeScalar connection deps globalConf
117+
outcome =! 17
114118
FullCallCounter.assertEqual callCounter 0 0 0 0 1 1
115119
}

‎Vp.FSharp.Sql.Tests/SqlCommand for executeScalarOrNone should.fs‎

Lines changed: 56 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ let ``open and then close the connection if initially closed`` () =
2929
use connection =
3030
Mocks.Reader (Mocks.makeReader data)
3131
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
32-
let! r = SqlCommand.text "select 1"
33-
|> SqlCommand.noLogger
34-
|> SqlCommand.executeScalarOrNone connection (Mocks.makeDependencies None None)
35-
r.IsSome =! true
36-
r
32+
let deps = Mocks.makeDeps None
33+
let globalConf = Mocks.makeGlobalConf None
34+
let! outcome =
35+
SqlCommand.text "select 1"
36+
|> SqlCommand.noLogger
37+
|> SqlCommand.executeScalarOrNone connection deps globalConf
38+
outcome.IsSome =! true
39+
outcome
3740
|> Option.defaultValue 42
3841
|> (=!) 14
3942
PartialCallCounter.assertEqual callCounter 1 1
@@ -58,11 +61,14 @@ let ``leave the connection open if initially not closed`` () =
5861
use connection =
5962
Mocks.Reader (Mocks.makeReader data)
6063
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
61-
let! r = SqlCommand.text "select 1"
62-
|> SqlCommand.noLogger
63-
|> SqlCommand.executeScalarOrNone connection (Mocks.makeDependencies None None)
64-
r.IsSome =! true
65-
r
64+
let deps = Mocks.makeDeps None
65+
let globalConf = Mocks.makeGlobalConf None
66+
let! outcome =
67+
SqlCommand.text "select 1"
68+
|> SqlCommand.noLogger
69+
|> SqlCommand.executeScalarOrNone connection deps globalConf
70+
outcome.IsSome =! true
71+
outcome
6672
|> Option.defaultValue 42
6773
|> (=!) 15
6874

@@ -86,12 +92,13 @@ let ``log for all events on globalLogger if connection initially closed`` () =
8692
use connection =
8793
Mocks.Reader (Mocks.makeReader data)
8894
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
89-
let deps = Some loggerCallback
90-
|> Mocks.makeDependencies None
91-
let! r = SqlCommand.text "select 1"
92-
|> SqlCommand.executeScalarOrNone connection deps
93-
r.IsSome =! true
94-
r
95+
let deps = Mocks.makeDeps None
96+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
97+
let! outcome =
98+
SqlCommand.text "select 1"
99+
|> SqlCommand.executeScalarOrNone connection deps globalConf
100+
outcome.IsSome =! true
101+
outcome
95102
|> Option.defaultValue 42
96103
|> (=!) 16
97104
FullCallCounter.assertEqual callCounter 1 1 1 1 1 1
@@ -114,12 +121,13 @@ let ``log for just command events on globalLogger if connection initially not cl
114121
use connection =
115122
Mocks.Reader (Mocks.makeReader data)
116123
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
117-
let deps = Some loggerCallback
118-
|> Mocks.makeDependencies None
119-
let! r = SqlCommand.text "select 1"
120-
|> SqlCommand.executeScalarOrNone connection deps
121-
r.IsSome =! true
122-
r
124+
let deps = Mocks.makeDeps None
125+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
126+
let! outcome =
127+
SqlCommand.text "select 1"
128+
|> SqlCommand.executeScalarOrNone connection deps globalConf
129+
outcome.IsSome =! true
130+
outcome
123131
|> Option.defaultValue 42
124132
|> (=!) 17
125133
FullCallCounter.assertEqual callCounter 0 0 0 0 1 1
@@ -144,10 +152,13 @@ let ``open and then close connection if initially closed and retrieve None`` ()
144152
use connection =
145153
Mocks.Reader (Mocks.makeReader data)
146154
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
147-
let! r = SqlCommand.text "select 1"
148-
|> SqlCommand.noLogger
149-
|> SqlCommand.executeScalarOrNone connection (Mocks.makeDependencies None None)
150-
r.IsNone =! true
155+
let deps = Mocks.makeDeps None
156+
let globalConf = Mocks.makeGlobalConf None
157+
let! outcome =
158+
SqlCommand.text "select 1"
159+
|> SqlCommand.noLogger
160+
|> SqlCommand.executeScalarOrNone connection deps globalConf
161+
outcome.IsNone =! true
151162
PartialCallCounter.assertEqual callCounter 1 1
152163
}
153164

@@ -169,10 +180,13 @@ let ``leave connection open if initially not closed and retrieve None`` () =
169180
use connection =
170181
Mocks.Reader (Mocks.makeReader data)
171182
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
172-
let! r = SqlCommand.text "select 1"
173-
|> SqlCommand.noLogger
174-
|> SqlCommand.executeScalarOrNone connection (Mocks.makeDependencies None None)
175-
r.IsNone =! true
183+
let deps = Mocks.makeDeps None
184+
let globalConf = Mocks.makeGlobalConf None
185+
let! outcome =
186+
SqlCommand.text "select 1"
187+
|> SqlCommand.noLogger
188+
|> SqlCommand.executeScalarOrNone connection deps globalConf
189+
outcome.IsNone =! true
176190
PartialCallCounter.assertEqual callCounter 0 0
177191
}
178192

@@ -193,11 +207,12 @@ let ``log for all events on globalLogger if connection initially closed and retr
193207
use connection =
194208
Mocks.Reader (Mocks.makeReader data)
195209
|> Mocks.makeConnection "toto" ConnectionState.Closed openCallback closeCallback
196-
let deps = Some loggerCallback
197-
|> Mocks.makeDependencies None
198-
let! r = SqlCommand.text "select 1"
199-
|> SqlCommand.executeScalarOrNone connection deps
200-
r.IsNone =! true
210+
let deps = Mocks.makeDeps None
211+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
212+
let! outcome =
213+
SqlCommand.text "select 1"
214+
|> SqlCommand.executeScalarOrNone connection deps globalConf
215+
outcome.IsNone =! true
201216
FullCallCounter.assertEqual callCounter 1 1 1 1 1 1
202217
}
203218

@@ -218,10 +233,11 @@ let ``log for just command events on globalLogger if connection initially not cl
218233
use connection =
219234
Mocks.Reader (Mocks.makeReader data)
220235
|> Mocks.makeConnection "toto" ConnectionState.Connecting openCallback closeCallback
221-
let deps = Some loggerCallback
222-
|> Mocks.makeDependencies None
223-
let! r = SqlCommand.text "select 1"
224-
|> SqlCommand.executeScalarOrNone connection deps
225-
r.IsNone =! true
236+
let deps = Mocks.makeDeps None
237+
let globalConf = Mocks.makeGlobalConf (Some loggerCallback)
238+
let! outcome =
239+
SqlCommand.text "select 1"
240+
|> SqlCommand.executeScalarOrNone connection deps globalConf
241+
outcome.IsNone =! true
226242
FullCallCounter.assertEqual callCounter 0 0 0 0 1 1
227243
}

0 commit comments

Comments
 (0)