packages feed

proteome-0.9.9.9: lib/Proteome/Save.hs

module Proteome.Save where

import Conc (Lock)
import Ribosome (Reports, Handler, LogReport, PersistError, Rpc, RpcError, SettingError, Settings, resumeReport)
import Ribosome.Effect.Persist (Persist)

import Proteome.Data.Env (Env)
import Proteome.Data.PersistBuffers (PersistBuffers)
import Proteome.PersistBuffers (StoreBuffersLock, storeBuffers)
import Proteome.Tags.Gen (TagsLock, proGenTags)

proSave ::
  Member (Persist PersistBuffers !! PersistError) r =>
  Members [Settings !! SettingError, AtomicState Env, Lock @@ TagsLock, DataLog LogReport] r =>
  Members [Lock @@ StoreBuffersLock, AtomicState Env, Rpc !! RpcError, Reports, Resource, Log, Async, Embed IO] r =>
  Handler r ()
proSave = do
  proGenTags
  resumeReport @Rpc $ resumeReport @(Persist _) $ storeBuffers