Skip to content

Commit 3948430

Browse files
committed
update datamodel
1 parent 891cba7 commit 3948430

File tree

6 files changed

+273
-42
lines changed

6 files changed

+273
-42
lines changed

CsDataModel/CsNone.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"_id": {
3+
"$oid": "676d75484d113e517dc7828b"
4+
},
5+
"Int": 42,
6+
"IntOpt": null,
7+
"String": "String",
8+
"StringOpt": null,
9+
"Array": [
10+
1,
11+
2,
12+
3
13+
],
14+
"ArrayOpt": null,
15+
"Value": {
16+
"_t": "IntValue",
17+
"Value": 42
18+
},
19+
"ValueOpt": null,
20+
"ValueArray": [
21+
{
22+
"_t": "IntValue",
23+
"Value": 42
24+
},
25+
{
26+
"_t": "StringValue",
27+
"Value": "String"
28+
},
29+
{
30+
"_t": "PairValue",
31+
"Value": {
32+
"First": 99,
33+
"Second": "SecondPair"
34+
}
35+
}
36+
],
37+
"ValueArrayOpt": null,
38+
"Record": {
39+
"First": 1,
40+
"Second": "Second"
41+
},
42+
"RecordOpt": null,
43+
"Map": {
44+
"1": 1,
45+
"2": 2
46+
}
47+
}

CsDataModel/CsSome.json

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{
2+
"_id": {
3+
"$oid": "676d75484d113e517dc7828d"
4+
},
5+
"Int": 42,
6+
"IntOpt": 666,
7+
"String": "String",
8+
"StringOpt": "StringOpt",
9+
"Array": [
10+
1,
11+
2,
12+
3
13+
],
14+
"ArrayOpt": [
15+
5,
16+
6,
17+
7,
18+
8
19+
],
20+
"Value": {
21+
"_t": "IntValue",
22+
"Value": 42
23+
},
24+
"ValueOpt": {
25+
"_t": "StringValue",
26+
"Value": "ValueStringOpt"
27+
},
28+
"ValueArray": [
29+
{
30+
"_t": "IntValue",
31+
"Value": 42
32+
},
33+
{
34+
"_t": "StringValue",
35+
"Value": "String"
36+
},
37+
{
38+
"_t": "PairValue",
39+
"Value": {
40+
"First": 99,
41+
"Second": "SecondPair"
42+
}
43+
}
44+
],
45+
"ValueArrayOpt": [
46+
{
47+
"_t": "IntValue",
48+
"Value": 101
49+
}
50+
],
51+
"Record": {
52+
"First": 1,
53+
"Second": "Second"
54+
},
55+
"RecordOpt": {
56+
"First": -1,
57+
"Second": "SecondOpt"
58+
},
59+
"Map": {
60+
"1": 1,
61+
"2": 2
62+
}
63+
}

FSharp.MongoDB.Driver.Tests/Isomorphic.fs

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@ let init() =
1515
let dbname = "FSharp-MongoDB-Driver"
1616
client <- new MongoClient(connectionString)
1717
db <- client.GetDatabase(dbname)
18-
db.DropCollection("IsomophicDataModel")
18+
db.DropCollection("IsomophicDataModelCs")
19+
db.DropCollection("IsomophicDataModelFs")
1920
FSharp.MongoDB.Driver.Register()
2021

2122
[<OneTimeTearDown>]
2223
let teardown() =
2324
client.Dispose()
2425

25-
[<Test>]
26-
let ``Isomorphic Some``() =
2726

27+
let ModelSome() =
2828
let csModel =
2929
let map =
3030
let map = System.Collections.Generic.Dictionary<string, int>()
@@ -35,60 +35,39 @@ let ``Isomorphic Some``() =
3535
RecordDataModel(
3636
Int = 42,
3737
IntOpt = 666,
38-
3938
String = "String",
4039
StringOpt = "StringOpt",
41-
4240
Array = [| 1; 2; 3 |],
4341
ArrayOpt = [| 5; 6; 7; 8 |],
44-
4542
Value = CsDataModel.Value.IntValue(42),
4643
ValueOpt = CsDataModel.Value.StringValue("ValueStringOpt"),
47-
4844
ValueArray = [| CsDataModel.Value.IntValue(42)
4945
CsDataModel.Value.StringValue("String")
5046
CsDataModel.Value.PairValue(CsDataModel.Pair(First = 99, Second = "SecondPair")) |],
5147
ValueArrayOpt = [| CsDataModel.Value.IntValue(101) |],
52-
5348
Record = CsDataModel.Pair(First = 1, Second = "Second"),
5449
RecordOpt = CsDataModel.Pair(First = -1, Second = "SecondOpt"),
55-
5650
Map = map)
5751

58-
5952
let fsModel =
6053
{ Id = ObjectId()
61-
6254
Int = 42
6355
IntOpt = Some 666
64-
6556
String = "String"
6657
StringOpt = Some "StringOpt"
67-
6858
Array = [| 1; 2; 3 |]
6959
ArrayOpt = Some [| 5; 6; 7; 8 |]
70-
7160
Value = Value.IntValue 42
7261
ValueOpt = Some <| Value.StringValue "ValueStringOpt"
73-
7462
ValueArray = [| Value.IntValue 42; Value.StringValue "String"; Value.PairValue { First = 99; Second = Some "SecondPair" } |]
7563
ValueArrayOpt = Some [| Value.IntValue 101 |]
76-
7764
Record = { First = 1; Second = Some "Second" }
7865
RecordOpt = Some { First = -1; Second = Some "SecondOpt" }
79-
8066
Map = Map [ "1", 1; "2", 2 ] }
8167

82-
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModel"
83-
csCollection.InsertOne(csModel)
84-
85-
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModel"
86-
let fromDb = fsCollection.Find(fun x -> x.Id = csModel.Id).First()
87-
fromDb |> should equal fsModel
88-
89-
[<Test>]
90-
let ``Isomorphic None``() =
68+
csModel, fsModel
9169

70+
let ModelNone() =
9271
let csModel =
9372
let map =
9473
let map = System.Collections.Generic.Dictionary<string, int>()
@@ -98,48 +77,77 @@ let ``Isomorphic None``() =
9877

9978
RecordDataModel(
10079
Int = 42,
101-
10280
String = "String",
103-
10481
Array = [| 1; 2; 3 |],
105-
10682
Value = CsDataModel.Value.IntValue(42),
107-
10883
ValueArray = [| CsDataModel.Value.IntValue(42)
10984
CsDataModel.Value.StringValue("String")
11085
CsDataModel.Value.PairValue(CsDataModel.Pair(First = 99, Second = "SecondPair")) |],
111-
11286
Record = CsDataModel.Pair(First = 1, Second = "Second"),
113-
11487
Map = map)
11588

116-
11789
let fsModel =
11890
{ Id = ObjectId()
119-
12091
Int = 42
12192
IntOpt = None
122-
12393
String = "String"
12494
StringOpt = None
125-
12695
Array = [| 1; 2; 3 |]
12796
ArrayOpt = None
128-
12997
Value = Value.IntValue 42
13098
ValueOpt = None
131-
13299
ValueArray = [| Value.IntValue 42; Value.StringValue "String"; Value.PairValue { First = 99; Second = Some "SecondPair" } |]
133100
ValueArrayOpt = None
134-
135101
Record = { First = 1; Second = Some "Second" }
136102
RecordOpt = None
137-
138103
Map = Map [ "1", 1; "2", 2 ] }
139104

140-
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModel"
105+
csModel, fsModel
106+
107+
108+
[<Test>]
109+
let ``Isomorphic Some cs -> fs``() =
110+
let csModel, fsModel = ModelSome()
111+
112+
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModelCs"
113+
csCollection.InsertOne(csModel)
114+
115+
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModelCs"
116+
let fromDb = fsCollection.Find(fun x -> x.Id = csModel.Id).First()
117+
fromDb |> should equal fsModel
118+
119+
[<Test>]
120+
let ``Isomorphic None cs -> fs``() =
121+
let csModel, fsModel = ModelNone()
122+
123+
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModelCs"
141124
csCollection.InsertOne(csModel)
142125

143-
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModel"
126+
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModelCs"
144127
let fromDb = fsCollection.Find(fun x -> x.Id = csModel.Id).First()
145128
fromDb |> should equal fsModel
129+
130+
131+
132+
[<Test>]
133+
let ``Isomorphic Some fs -> cs``() =
134+
let csModel, fsModel = ModelSome()
135+
136+
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModelFs"
137+
fsCollection.InsertOne(fsModel)
138+
139+
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModelFs"
140+
let fromDb = csCollection.Find(fun x -> x.Id = csModel.Id).First()
141+
fromDb |> should equal fsModel
142+
143+
144+
[<Test>]
145+
let ``Isomorphic None fs -> cs``() =
146+
let csModel, fsModel = ModelNone()
147+
148+
let fsCollection = db.GetCollection<FsDataModel.RecordDataModel> "IsomophicDataModelFs"
149+
fsCollection.InsertOne(fsModel)
150+
151+
let csCollection = db.GetCollection<CsDataModel.RecordDataModel> "IsomophicDataModelFs"
152+
let fromDb = csCollection.Find(fun x -> x.Id = csModel.Id).First()
153+
fromDb |> should equal csModel

FsDataModel/DataModel.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type Value =
1111
| StringValue of Value: string
1212
| PairValue of Value:Pair
1313

14+
[<CLIMutable>]
1415
type RecordDataModel =
1516
{ Id: ObjectId
1617

FsDataModel/FsNone.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"_id": {
3+
"$oid": "676d75484d113e517dc7828c"
4+
},
5+
"Int": 42,
6+
"IntOpt": null,
7+
"String": "String",
8+
"StringOpt": null,
9+
"Array": [
10+
1,
11+
2,
12+
3
13+
],
14+
"ArrayOpt": null,
15+
"Value": {
16+
"_t": "IntValue",
17+
"Value": 42
18+
},
19+
"ValueOpt": null,
20+
"ValueArray": [
21+
{
22+
"_t": "IntValue",
23+
"Value": 42
24+
},
25+
{
26+
"_t": "StringValue",
27+
"Value": "String"
28+
},
29+
{
30+
"_t": "PairValue",
31+
"Value": {
32+
"_t": "Pair",
33+
"First": 99,
34+
"Second": "SecondPair"
35+
}
36+
}
37+
],
38+
"ValueArrayOpt": null,
39+
"Record": {
40+
"First": 1,
41+
"Second": "Second"
42+
},
43+
"RecordOpt": null,
44+
"Map": {
45+
"1": 1,
46+
"2": 2
47+
}
48+
}

0 commit comments

Comments
 (0)