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