packages feed

scrapbook-core-0.5.0: src/ScrapBook/Write/Internal.hs

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE PolyKinds        #-}
{-# LANGUAGE TypeFamilies     #-}

module ScrapBook.Write.Internal
    ( Write (..)
    , throwWriteError
    ) where

import           RIO

import           Data.Extensible
import           ScrapBook.Collecter   (CollectError (..), Collecter)
import           ScrapBook.Data.Config (HasWriteConfigFields)
import           ScrapBook.Data.Site   (IsSiteFields, Post)

class Write kv where
  writeTo ::
    (IsSiteFields xs, HasWriteConfigFields ys) =>
    proxy kv -> Record ys -> [Post (Record xs)] -> Collecter Text
  fileName' ::
    HasWriteConfigFields ys =>
    proxy kv -> Record ys -> FilePath
  updateFileName' ::
    HasWriteConfigFields ys =>
    proxy kv -> FilePath -> Record ys -> Record ys

throwWriteError :: Text -> Collecter a
throwWriteError = throwM . WriteException