@@ -34,38 +34,52 @@ initialize newStore eventCount = do
3434 entity2IdText <- Uuid. generate |> Task. map toText
3535 let entity2Id = Event. EntityName entity2IdText
3636
37- let generateEvents :: Event. EntityName -> Task Text (Array (Event. InsertionPayload MyEvent ))
38- generateEvents entityName = do
39- Array. fromLinkedList [0 .. eventCount - 1 ] |> Task. mapArray \ index -> do
40- insertions <- Array. fromLinkedList [index] |> Task. mapArray newInsertion
41- Event. InsertionPayload
42- { streamId,
43- entityName,
44- insertionType = Event. AnyStreamState ,
45- insertions
46- }
47- |> Task. yield
37+ -- Generate all insertions for both entities
38+ entity1Insertions <- Array. fromLinkedList [0 .. eventCount - 1 ] |> Task. mapArray newInsertion
39+ entity2Insertions <- Array. fromLinkedList [0 .. eventCount - 1 ] |> Task. mapArray newInsertion
4840
49- entity1Events <- generateEvents entity1Id
50- entity2Events <- generateEvents entity2Id
41+ -- Insert entity1 events in chunks of 100 (batch size limit)
42+ entity1Insertions |> Array. chunksOf 100 |> Task. forEach \ chunk -> do
43+ let payload = Event. InsertionPayload {streamId, entityName = entity1Id, insertionType = Event. AnyStreamState , insertions = chunk}
44+ payload |> store. insert |> Task. mapError toText |> discard
5145
52- entity1Inserted <-
53- entity1Events
54- |> Task. mapArray ( \ payload -> payload |> store . insert)
55- |> Task. mapError toText
46+ -- Insert entity2 events in chunks of 100 (batch size limit)
47+ entity2Insertions |> Array. chunksOf 100 |> Task. forEach \ chunk -> do
48+ let payload = Event. InsertionPayload {streamId, entityName = entity2Id, insertionType = Event. AnyStreamState , insertions = chunk}
49+ payload |> store . insert |> Task. mapError toText |> discard
5650
57- let entity1Positions =
58- entity1Inserted
59- |> Array. map (\ result -> result. localPosition)
51+ -- Create payload wrappers for compatibility (not used in tests, but kept for API consistency)
52+ let entity1Events =
53+ entity1Insertions
54+ |> Array. map
55+ ( \ insertion ->
56+ Event. InsertionPayload
57+ { streamId,
58+ entityName = entity1Id,
59+ insertionType = Event. AnyStreamState ,
60+ insertions = Array. wrap insertion
61+ }
62+ )
63+
64+ let entity2Events =
65+ entity2Insertions
66+ |> Array. map
67+ ( \ insertion ->
68+ Event. InsertionPayload
69+ { streamId,
70+ entityName = entity2Id,
71+ insertionType = Event. AnyStreamState ,
72+ insertions = Array. wrap insertion
73+ }
74+ )
6075
61- entity2Inserted <-
62- entity2Events
63- |> Task. mapArray (\ payload -> payload |> store. insert)
64- |> Task. mapError toText
76+ let entity1Positions =
77+ Array. fromLinkedList [0 .. eventCount - 1 ]
78+ |> Array. map (fromIntegral .> Event. StreamPosition )
6579
6680 let entity2Positions =
67- entity2Inserted
68- |> Array. map (\ result -> result . localPosition )
81+ Array. fromLinkedList [ 0 .. eventCount - 1 ]
82+ |> Array. map (fromIntegral .> Event. StreamPosition )
6983
7084 let allEvents = entity1Events |> Array. append entity2Events
7185 let allPositions = entity1Positions |> Array. append entity2Positions
0 commit comments