persistent-2.14.6.3: Type-safe, multi-backend data serialization.

Safe Haskell | None
Language | Haskell2010

Database.Persist.SqlBackend.Internal.MkSqlBackend

Synopsis

- data MkSqlBackendArgs = MkSqlBackendArgs {
  - connPrepare :: Text -> IO Statement
  - connInsertSql :: EntityDef -> [PersistValue] -> InsertSqlResult
  - connStmtMap :: IORef (Map Text Statement)
  - connClose :: IO ()
  - connMigrateSql :: [EntityDef] -> (Text -> IO Statement) -> EntityDef -> IO (Either [Text] [(Bool, Text)])
  - connBegin :: (Text -> IO Statement) -> Maybe IsolationLevel -> IO ()
  - connCommit :: (Text -> IO Statement) -> IO ()
  - connRollback :: (Text -> IO Statement) -> IO ()
  - connEscapeFieldName :: FieldNameDB -> Text
  - connEscapeTableName :: EntityDef -> Text
  - connEscapeRawName :: Text -> Text
  - connNoLimit :: Text
  - connRDBMS :: Text
  - connLimitOffset :: (Int, Int) -> Text -> Text
  - connLogFunc :: LogFunc
  }
- type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO ()

# Documentation

data MkSqlBackendArgs #

This type shares many of the same field names as the `SqlBackend` type. It's useful for library authors to use this when migrating from using the `SqlBackend` constructor directly to the `mkSqlBackend` function.

This type will only contain required fields for constructing a `SqlBackend`. For fields that aren't present on this record, you'll want to use the various `set` functions or

Since: 2.13.0.0

Constructors

MkSqlBackendArgs |
Fields connPrepare :: Text -> IO Statement This function should prepare a `Statement` in the target database, which should allow for efficient query reuse. connInsertSql :: EntityDef -> [PersistValue] -> InsertSqlResult This function generates the SQL and values necessary for performing an insert against the database. connStmtMap :: IORef (Map Text Statement) A reference to the cache of statements. `Statement`s are keyed by the `Text` queries that generated them. connClose :: IO () Close the underlying connection. connMigrateSql :: [EntityDef] -> (Text -> IO Statement) -> EntityDef -> IO (Either [Text] [(Bool, Text)]) This function returns the migrations required to include the `EntityDef` parameter in the `[`EntityDef`]` database. This might include creating a new table if the entity is not present, or altering an existing table if it is. connBegin :: (Text -> IO Statement) -> Maybe IsolationLevel -> IO () A function to begin a transaction for the underlying database. connCommit :: (Text -> IO Statement) -> IO () A function to commit a transaction to the underlying database. connRollback :: (Text -> IO Statement) -> IO () A function to roll back a transaction on the underlying database. connEscapeFieldName :: FieldNameDB -> Text A function to extract and escape the name of the column corresponding to the provided field. Since: 2.12.0.0 connEscapeTableName :: EntityDef -> Text A function to extract and escape the name of the table corresponding to the provided entity. PostgreSQL uses this to support schemas. Since: 2.12.0.0 connEscapeRawName :: Text -> Text A function to escape raw DB identifiers. MySQL uses backticks, while PostgreSQL uses quotes, and so on. Since: 2.12.0.0 connNoLimit :: Text connRDBMS :: Text A tag displaying what database the `SqlBackend` is for. Can be used to differentiate features in downstream libraries for different database backends. connLimitOffset :: (Int, Int) -> Text -> Text Attach a 'LIMIT/OFFSET' clause to a SQL query. Note that LIMIT/OFFSET is problematic for performance, and indexed range queries are the superior way to offer pagination. connLogFunc :: LogFunc A log function for the `SqlBackend` to use.

type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO () #