Skip to content

Попытка перевести целочисленное значение Aeson.Number во Float или Double при обработке NodeResult или RelResult вызывает исключение  #48

@VKFisher

Description

@VKFisher

Как воспроизвести

import qualified Data.Aeson.Types as Aeson
import qualified Data.Map as Map
import Database.Bolt.Extras (NodeLike (fromNode, toNode))
import Database.Bolt.Extras.Graph 
import Database.Bolt.Extras.Template (makeNodeLike)

newtype Data = Data {value :: Double} deriving (Show)

makeNodeLike ''Data

reproduce :: IO ()
reproduce =
  let dataNodeResultWhole =
        NodeResult
          { nresId = 1,
            nresLabels = ["Data"],
            nresProps = Map.fromList [("value", Aeson.Number 3.0)]
          }  
  in print @Data $ fromNode . toNode $ dataNodeResultWhole

Ожидаемый результат

Data {value = 3.0}

Реальный результат

example: Database.Bolt.Extras.Internal.Instances:80: could not unpack I 3 into Double

Варианты решения

  • конвертировать из I x через fromIntegral в инстансах FromValue для Float и Double

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions