h$C<      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None-persistent-mtl A copy of  to explicitly allow only IO operations that are rerunnable, e.g. in the context of a SQL transaction.persistent-mtlLift the given IO operation to m.The given IO operation may be rerun, so use of this function requires manually verifying that the given IO operation is rerunnable.None '(?~persistent-mtlThe data type containing a constructor for each persistent function we'd like to lift into  .The record type parameter contains the ! types used in a given function.We're using a free-monads-like technique here to allow us to introspect persistent functions in  ., e.g. to mock out persistent calls in tests.persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to persistent-mtlConstructor corresponding to  persistent-mtlConstructor corresponding to !persistent-mtlConstructor corresponding to "persistent-mtlConstructor corresponding to #persistent-mtlConstructor corresponding to $persistent-mtlConstructor corresponding to %persistent-mtlConstructor corresponding to &persistent-mtlConstructor corresponding to 'persistent-mtlConstructor corresponding to (persistent-mtlConstructor corresponding to )persistent-mtlConstructor corresponding to *persistent-mtlConstructor corresponding to +persistent-mtlConstructor corresponding to ,persistent-mtlConstructor corresponding to -persistent-mtlConstructor corresponding to .persistent-mtlConstructor corresponding to /persistent-mtlConstructor corresponding to 0persistent-mtlConstructor corresponding to 1persistent-mtlConstructor corresponding to 2persistent-mtlConstructor corresponding to 3persistent-mtlConstructor corresponding to 4persistent-mtlConstructor corresponding to 5persistent-mtlConstructor corresponding to 6persistent-mtlConstructor corresponding to 7persistent-mtlConstructor corresponding to 8persistent-mtlConstructor corresponding to 9persistent-mtlConstructor corresponding to :persistent-mtlConstructor corresponding to ;persistent-mtlConstructor corresponding to <persistent-mtlConstructor corresponding to =persistent-mtlConstructor corresponding to >persistent-mtlConstructor corresponding to ?persistent-mtlConstructor corresponding to @persistent-mtlConstructor corresponding to Apersistent-mtlConstructor corresponding to Bpersistent-mtlConstructor corresponding to Cpersistent-mtlConstructor corresponding to Dpersistent-mtlConstructor corresponding to Epersistent-mtlConstructor corresponding to Fpersistent-mtlConstructor corresponding to Gpersistent-mtlConstructor corresponding to Hpersistent-mtlConstructor corresponding to Ipersistent-mtlConstructor corresponding to Jpersistent-mtlConstructor corresponding to Kpersistent-mtlConstructor corresponding to Lpersistent-mtlConstructor corresponding to Mpersistent-mtlConstructor corresponding to Npersistent-mtlConstructor corresponding to Opersistent-mtlConstructor corresponding to Ppersistent-mtlConstructor corresponding to Qpersistent-mtlA helper to execute the actual  persistent! function corresponding to each  data constructor. L!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOPQ L!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOPQNoneSpersistent-mtlThe type-class for monads that can run persistent database queries.Upersistent-mtl(Interpret the given SQL query operation.Vpersistent-mtlRun all queries in the given action using the same database connection.STVUSTVUNone'(?$apersistent-mtlThe lifted version of bpersistent-mtlThe lifted version of cpersistent-mtlThe lifted version of dpersistent-mtlThe lifted version of epersistent-mtlThe lifted version of fpersistent-mtlThe lifted version of gpersistent-mtlThe lifted version of hpersistent-mtlThe lifted version of ipersistent-mtlThe lifted version of jpersistent-mtlThe lifted version of kpersistent-mtlThe lifted version of lpersistent-mtlThe lifted version of mpersistent-mtlThe lifted version of npersistent-mtlThe lifted version of opersistent-mtlThe lifted version of ppersistent-mtlThe lifted version of qpersistent-mtlThe lifted version of rpersistent-mtlThe lifted version of spersistent-mtlThe lifted version of tpersistent-mtlThe lifted version of upersistent-mtlThe lifted version of vpersistent-mtlThe lifted version of wpersistent-mtlThe lifted version of xpersistent-mtlThe lifted version of ypersistent-mtlThe lifted version of zpersistent-mtlThe lifted version of {persistent-mtlThe lifted version of |persistent-mtlThe lifted version of }persistent-mtlThe lifted version of ~persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtlThe lifted version of persistent-mtl-A helper for functions that return a conduit.abcdefghijklmnopqrstuvwxyz{|}~abcdefghijklmnopqrstuvwxyz{|}~None#$%'(/- persistent-mtl&The monad transformer that implements S.persistent-mtl!Environment to configure running .#For simple usage, you can just use , but for more advanced usage, including the ability to retry transactions, use  with .persistent-mtl4The pool for your persistent backend. Get this from withSqlitePool% or the equivalent for your backend.persistent-mtlRetry a transaction when an exception matches this predicate. Will retry with an exponential backoff.5Defaults to always returning False (i.e. never retry)persistent-mtl!The number of times to retry, if  is satisfied.Defaults to 10.persistent-mtl/Errors that can occur within a SQL transaction.persistent-mtl8The retry limit was reached when retrying a transaction.persistent-mtl(The monad that tracks transaction state.Conceptually equivalent to , but restricts IO operations, for two reasons: 1. Forking a thread that uses the same  as the current thread causes Bad Things to happen. 2. Transactions may need to be retried, in which case IO operations in a transaction are required to be rerunnable.You shouldn't need to explicitly use this type; your functions should only declare the S constraint.persistent-mtl does not have an instance for  to prevent accidental lifting of unsafe monadic actions. Use this function to explicitly mark a monadic action as rerunnable.persistent-mtl%Build a SqlQueryEnv from the default.Usage: let env = mkSqlQueryEnv pool $ \env -> env { retryIf = 10 } in runSqlQueryTWith env m persistent-mtlRun the * monad transformer with the given backend.persistent-mtlRun the = monad transformer with the explicitly provided environment.SVabcdefghijklmnopqrstuvwxyz{|}~SVNone '(; persistent-mtlA mocked query to use in .Use  or another helper to create a .persistent-mtl3A monad transformer for testing functions that use S.persistent-mtlRuns a ) monad transformer using the given mocks.When a database query is executed, the first mock that returns a  is returned. If no mocks match the query, an error is thrown. See  for the constructors available to match against. Most of the time, you'll want to use * to only match queries against a specific record type (e.g. only match   calls for the Person entity).Usage: myFunction :: MonadSqlQuery m => m [String] myFunction = map personName  $ selectList [PersonAge >. 25] [] let persons = [Person ...] result <- runMockSqlQueryT myFunction [ withRecord @Person $ \case SelectList _ _ -> Just persons _ -> Nothing , withRecord @Post $ \case Insert Post{ name = "post1" } -> Just $ toSqlKey 1 _ -> Nothing , mockQuery $ \case RawExecuteCount "DELETE FROM person WHERE name = 'Alice'" [] -> Just 1 _ -> Nothing ] persistent-mtlA helper for defining a mocked database query against a specific record2 type. Designed to be used with TypeApplications.Most / constructors are in the context of a specific record type, like Person. This helper only matches mocked database queries that are querying the record you specify.%Some constructors reference multiple record types, like  . Look at the type to see the record you need to match against. For example, :withRecord @(Person, Post) $ \case BelongsTo _ _ -> ... would match the function call belongsTo :: (Person -> Maybe (Key Post)) -> Person -> SqlQueryRep (Person, Post) (Maybe Post) persistent-mtl.A helper for defining a mocked database query.%This does not do any matching on the record> type, so it is mostly useful for queries that don't use the record type, like  .persistent-mtlA helper for mocking a   or  call.Usage: mockSelectSource $ \filters opts -> if null filters && null opts then let person1 = [Entity (toSqlKey 1) $ Person "Alice"] person2 = [Entity (toSqlKey 2) $ Person "Bob"] in Just [person1, person2] else Nothing persistent-mtlA helper for mocking a  or  call.Usage: mockSelectKeys $ \filters opts -> if null filters && null opts then Just $ map toSqlKey [1, 2] else Nothing persistent-mtlA helper for mocking a  call.Usage: mockWithRawQuery $ \sql vals -> if sql == "SELECT id, name FROM person" then let row1 = [toPersistValue 1, toPersistValue "Alice"] row2 = [toPersistValue 2, toPersistValue "Bob"] in Just [row1, row2] else Nothing persistent-mtlA helper for mocking a  or  call.Usage: mockRawQuery $ \sql vals -> if sql == "SELECT id, name FROM person" then let row1 = [toPersistValue 1, toPersistValue "Alice"] row2 = [toPersistValue 2, toPersistValue "Bob"] in Just [row1, row2] else Nothing persistent-mtlA helper for mocking a  call.Usage: mockRawSql $ \sql vals -> if sql == "SELECT id, name FROM person" then let row1 = [toPersistValue 1, toPersistValue "Alice"] row2 = [toPersistValue 2, toPersistValue "Bob"] in Just [row1, row2] else Nothing  L!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOP L!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKMNOP Safe-Inferred< !"#$%&'() *+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg hijklmnopqrstuvwxyz{|}~   uvwxyz{|}~   -persistent-mtl-0.2.2.0-CX4b3BrHdMq1JINQZ1otX4Control.Monad.IO.Rerunnable"Database.Persist.Monad.SqlQueryRepDatabase.Persist.Monad.ClassDatabase.Persist.Monad.ShimDatabase.Persist.Monad Database.Persist.Monad.TestUtilsControl.Monad.IO.ClassMonadIO MonadSqlQuery selectList BelongsTo rawExecute selectSourceselectSourceRes selectKeys selectKeysRes withRawQueryrawQuery rawQueryResrawSqlPaths_persistent_mtlMonadRerunnableIO rerunnableIO$fMonadRerunnableIOResourceT$fMonadRerunnableIOWriterT$fMonadRerunnableIOWriterT0$fMonadRerunnableIOStateT$fMonadRerunnableIOStateT0$fMonadRerunnableIORWST$fMonadRerunnableIORWST0$fMonadRerunnableIOMaybeT$fMonadRerunnableIOIdentityT$fMonadRerunnableIOExceptT$fMonadRerunnableIOReaderT$fMonadRerunnableIOIO SqlQueryRepGetGetManyGetJust GetJustEntity GetEntity BelongsToJustInsertInsert_ InsertMany InsertMany_InsertEntityMany InsertKeyRepsert RepsertManyReplaceDeleteUpdate UpdateGet InsertEntity InsertRecordGetBy GetByValue CheckUniqueCheckUniqueUpdateableDeleteBy InsertUniqueUpsertUpsertByPutManyInsertByInsertUniqueEntity ReplaceUnique OnlyUniqueSelectSourceRes SelectFirst SelectKeysResCountExists SelectListSelectKeysList UpdateWhere DeleteWhereDeleteWhereCountUpdateWhereCountParseMigrationParseMigration'PrintMigration ShowMigration GetMigration RunMigrationRunMigrationQuietRunMigrationSilentRunMigrationUnsafeRunMigrationUnsafeQuiet GetFieldName GetTableName WithRawQuery RawQueryRes RawExecuteRawExecuteCountRawSqlTransactionSaveTransactionSaveWithIsolationTransactionUndoTransactionUndoWithIsolationrunSqlQueryRep$fShowSqlQueryRep TransactionM runQueryRepwithTransaction$fMonadSqlQueryWriterT$fMonadSqlQueryWriterT0$fMonadSqlQueryStateT$fMonadSqlQueryStateT0$fMonadSqlQueryRWST$fMonadSqlQueryRWST0$fMonadSqlQueryMaybeT$fMonadSqlQueryIdentityT$fMonadSqlQueryExceptT$fMonadSqlQueryReaderTgetgetManygetJust getJustEntity getEntity belongsTo belongsToJustinsertinsert_ insertMany insertMany_insertEntityMany insertKeyrepsert repsertManyreplacedeleteupdate updateGet insertEntity insertRecordgetBy getByValue checkUniquecheckUniqueUpdateabledeleteBy insertUniqueupsertupsertByputManyinsertByinsertUniqueEntity replaceUnique onlyUnique selectFirstcountexistsselectKeysList updateWhere deleteWheredeleteWhereCountupdateWhereCountparseMigrationparseMigration'printMigration showMigration getMigration runMigrationrunMigrationQuietrunMigrationSilentrunMigrationUnsaferunMigrationUnsafeQuiet getFieldName getTableNamerawExecuteCounttransactionSavetransactionSaveWithIsolationtransactionUndotransactionUndoWithIsolation fromAcquire SqlQueryT SqlQueryEnv backendPoolretryIf retryLimitTransactionErrorRetryLimitExceededSqlTransactionrerunnableLift mkSqlQueryEnv runSqlQueryTrunSqlQueryTWith$fMonadSqlQuerySqlTransaction$fMonadIOSqlTransaction$fExceptionTransactionError$fMonadUnliftIOSqlQueryT$fMonadSqlQuerySqlQueryT$fFunctorSqlQueryT$fApplicativeSqlQueryT$fMonadSqlQueryT$fMonadIOSqlQueryT$fMonadTransSqlQueryT$fMonadResourceSqlQueryT$fMonadRerunnableIOSqlQueryT$fShowTransactionError$fEqTransactionError$fFunctorSqlTransaction$fApplicativeSqlTransaction$fMonadSqlTransaction!$fMonadRerunnableIOSqlTransaction MockQuery MockSqlQueryTrunMockSqlQueryT withRecord mockQuerymockSelectSourcemockSelectKeysmockWithRawQuery mockRawQuery mockRawSql$fMonadSqlQueryMockSqlQueryT$fFunctorMockSqlQueryT$fApplicativeMockSqlQueryT$fMonadMockSqlQueryT$fMonadIOMockSqlQueryT$fMonadResourceMockSqlQueryT*persistent-2.13.0.2-71FKNKkI7oo1YYDW80APSE$Database.Persist.Class.PersistEntity PersistEntity#Database.Persist.Class.PersistStore$Database.Persist.Class.PersistUnique#Database.Persist.Class.PersistQuery(Database.Persist.Sql.Orphan.PersistQueryDatabase.Persist.Sql.Migration(Database.Persist.Sql.Orphan.PersistStoreDatabase.Persist.Sql.RawDatabase.Persist.SqlDatabase.Persist.Sql.Types SqlPersistT$Database.Persist.SqlBackend.Internal SqlBackendtransformers-0.5.6.2Control.Monad.Trans.Class MonadTransbase GHC.MaybeJustversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName