yesodweb / yesodweb/persistent
repsertBy
Open
Nobody has claimed this yet.
- Dominant language
- Haskell
- Stars
- 486
- Forks
- 306
- PR merge metrics
- No merged PRs in 30d
Description
Would Persistent users be interested in a repsertBy function being added? This is what we have in our internal codebase:
repsertBy :: (PersistEntityBackend record ~ BaseBackend backend, PersistStoreWrite backend, MonadIO m, PersistEntity record, PersistUniqueRead backend)
=> Unique record
-> record
-> ReaderT backend m (Key record)
repsertBy unique record = do
mExisting <- getBy unique
case mExisting of
Just (Entity key _) -> replace key record >> return key
Nothing -> insert record
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing getBy, replace, and insert entry points in Persistent and how their backend constraints are expressed. Done means adding the proposed repsertBy behavior with compatible constraints and coverage for both the existing-record and missing-record cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- database
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100