Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

That's awesome, thanks for linking it to me. I don't think I have seen this library before, looks like its fairly new. I have to admit from the signature I can't tell if I can nest these arbitrarily deep, it looks like I can?


Arbitrary nesting is supported

    module Main where
    
    import Rel8
    import Data.Int
    import Hasql.Statement
    import Hasql.Session
    import Hasql.Connection
    import Database.Postgres.Temp
    
    main = Database.Postgres.Temp.with $ \db -> do
      Right conn <- acquire (toConnectionString db)
    
      flip run conn $ statement () $ select $ do
        q1 <- many $ do
          r1 <- many (values [1 , 2 :: Expr Int16])
          r2 <- many (values [3 , 4 :: Expr Int16])
    
          values [(litExpr "one", r1), (litExpr "two", r2)]
    
        q2 <- many $ do
          r1 <- many (values [10 , 20 :: Expr Int16])
          r2 <- many (values [30 , 40 :: Expr Int16])
    
          values [(litExpr "ten", r1), (litExpr "twenty", r2)]
    
        values [(litExpr "X", q1), (litExpr "Y", q2)]
    

    > main
    Right (Right [("X",[("one",[1,2]),("two",[3,4])]),("Y",[("ten",[10,20]),("twenty",[30,40])])])


Having said that, Postgres supports JSON fine, and Opaleye and Rel8 support Postgres's JSON fine, so you can just use that if you want arbitrarily structured and nested stuff.


Rel8 is pretty new, but it's built on top of opaleye which is much older.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: