37 lines
1021 B
Haskell
37 lines
1021 B
Haskell
{-# LANGUAGE FlexibleContexts
|
|
, GADTs
|
|
, GeneralizedNewtypeDeriving
|
|
, DerivingStrategies
|
|
, StandaloneDeriving
|
|
, MultiParamTypeClasses
|
|
, OverloadedStrings
|
|
, QuasiQuotes
|
|
, RankNTypes
|
|
, ScopedTypeVariables
|
|
, TemplateHaskell
|
|
, TypeFamilies
|
|
, UndecidableInstances
|
|
#-}
|
|
module PostgreSQL.MigrateJSON where
|
|
|
|
import Control.Monad.Trans.Resource (ResourceT)
|
|
import Data.Aeson (Value)
|
|
import Database.Esqueleto (SqlExpr, delete, from)
|
|
import Database.Esqueleto.PostgreSQL.JSON (JSONB)
|
|
import Database.Persist (Entity)
|
|
import Database.Persist.Sql (SqlPersistT)
|
|
import Database.Persist.TH
|
|
|
|
import Common.Test (RunDbMonad)
|
|
|
|
-- JSON Table for PostgreSQL
|
|
share [mkPersist sqlSettings, mkMigrate "migrateJSON"] [persistUpperCase|
|
|
Json
|
|
value (JSONB Value)
|
|
|]
|
|
|
|
cleanJSON
|
|
:: (forall m. RunDbMonad m
|
|
=> SqlPersistT (ResourceT m) ())
|
|
cleanJSON = delete $ from $ \(_ :: SqlExpr (Entity Json)) -> return ()
|