module Network.IPFS.DAG.Node.Types (Node (..)) where import Network.IPFS.Prelude import Data.Vector import Network.IPFS.DAG.Link.Types as DAG data Node = Node { Node -> Text dataBlock :: Text , Node -> [Link] links :: [DAG.Link] } deriving (Int -> Node -> ShowS [Node] -> ShowS Node -> String (Int -> Node -> ShowS) -> (Node -> String) -> ([Node] -> ShowS) -> Show Node forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Node] -> ShowS $cshowList :: [Node] -> ShowS show :: Node -> String $cshow :: Node -> String showsPrec :: Int -> Node -> ShowS $cshowsPrec :: Int -> Node -> ShowS Show, Node -> Node -> Bool (Node -> Node -> Bool) -> (Node -> Node -> Bool) -> Eq Node forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Node -> Node -> Bool $c/= :: Node -> Node -> Bool == :: Node -> Node -> Bool $c== :: Node -> Node -> Bool Eq) instance ToJSON Node where toJSON :: Node -> Value toJSON (Node Text dataBlock [Link] links) = Object -> Value Object [ (Text "data", Text -> Value String Text dataBlock) , (Text "links", Array -> Value Array (Array -> Value) -> ([Value] -> Array) -> [Value] -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . [Value] -> Array forall a. [a] -> Vector a fromList ([Value] -> Value) -> [Value] -> Value forall a b. (a -> b) -> a -> b $ (Link -> Value) -> [Link] -> [Value] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Link -> Value forall a. ToJSON a => a -> Value toJSON [Link] links) ]