{-# LANGUAGE OverloadedStrings #-} module Database.PostgreSQL.Cube (Cube(..))where import Database.PostgreSQL.Simple.ToField import Data.List (intersperse, intercalate) import Data.ByteString.Builder (byteString, char8) data Cube = Cube [[Float]] instance ToField Cube where toField (Cube cs) = Many $ Plain (byteString "CUBE('") : (intercalate [comma] $ map point cs) ++ [Plain (byteString "')")] where comma = Plain (char8 ',') point lst = Plain (char8 '(') : (intersperse comma $ map toField lst) ++ [Plain (char8 ')')]