paul-rouse / mysql-simple

A mid-level client library for the MySQL database, intended to be fast and easy to use.
Other
91 stars 35 forks source link

Add support for named parameters #49

Open chshersh opened 5 years ago

chshersh commented 5 years ago

This is very convenient feature. It's present in sqlite-simple package.

Consider the following query:

    updateUploadHistory :: UTCTime -> m ()
    updateUploadHistory curTime = executeNamed_ [sql|
        INSERT INTO file_upload_history
            (file_name, uploader_id, timestamp, data_type, remarks)
        VALUES
            (:file, :uploader, :time, :type, :remarks)
        |] [ ":file"     := duFileName
           , ":uploader" := adminId
           , ":time"     := curTime
           , ":type"     := duDataType
           , ":remarks"  := duRemarks
           ]

It's much more convenient to write with named arguments (as any other query) because we don't need to care about order in which arguments are passed.

It would be really great, if something like this can be supported in mysql-simple library as well!