diff --git a/src/Database/Esqueleto/Utils.hs b/src/Database/Esqueleto/Utils.hs index 8ee3ceab4..9dfd9eec9 100644 --- a/src/Database/Esqueleto/Utils.hs +++ b/src/Database/Esqueleto/Utils.hs @@ -52,7 +52,7 @@ module Database.Esqueleto.Utils , day, day', dayMaybe, interval, diffDays, diffTimes , exprLift , explicitUnsafeCoerceSqlExprValue - -- , truncateTable + , truncateTable , module Database.Esqueleto.Utils.TH ) where @@ -63,6 +63,8 @@ import qualified Data.Set as Set import qualified Data.List as List import qualified Data.Foldable as F import Data.List.NonEmpty (NonEmpty(..)) +import qualified Database.Persist as P +import qualified Database.Persist.EntityDef.Internal as P (entityDB) import qualified Database.Esqueleto.Legacy as E import qualified Database.Esqueleto.Experimental as Ex import qualified Database.Esqueleto.PostgreSQL as E @@ -775,4 +777,10 @@ instance (PersistField a1, PersistField a2, PersistField b, Finite a1, Finite a2 -- Suspected to cause trouble. Needs more testing! -- truncateTable :: (MonadIO m, BackendCompatible SqlBackend backend, PersistEntity record) -- => record -> ReaderT backend m () --- truncateTable tbl = E.rawExecute ("TRUNCATE TABLE " <> P.tableName tbl <> " RESTART IDENTITY") [] \ No newline at end of file +-- truncateTable tbl = E.rawExecute ("TRUNCATE TABLE " <> P.tableName tbl <> " RESTART IDENTITY") [] + +truncateTable :: (MonadIO m, BackendCompatible SqlBackend backend, PersistEntity record) -- TODO: test this code + => proxy record -> ReaderT backend m () +truncateTable tbl = + let tblName :: Text = P.unEntityNameDB $ P.entityDB $ P.entityDef tbl + in E.rawExecute ("TRUNCATE TABLE " <> tblName <> " RESTART IDENTITY") [] \ No newline at end of file