friboo icon indicating copy to clipboard operation
friboo copied to clipboard

Database exception middleware pattern

Open sbgreene1307 opened this issue 7 years ago • 3 comments

The current setup for db commands seems tightly coupled to the HystrixBadRequestException.

This forces me to write an ignore-function that will propagate exceptions I care about and then an exception-wrapper function to process database errors. For example, if an insert fails on a table with a duplicate key error, then I propagate this by matching the message pattern, setting the HystrixBadRequestException message to something useful for me, and finally catching this exception in my wrapping function just to get the message. This requires new developers to know to use the wrap-sql-exception function.

As an alternative, friboo.system/db.clj, could implement the middleware pattern as explained in this article.

This would allow me to write wrapper functions for the exceptions as I see fit and other devs won't need to worry about remembering to wrap their sql cmds.

sbgreene1307 avatar Sep 29 '17 18:09 sbgreene1307

thanks for the proposal! would you like to take a crack at a PR showing an example?

dazld avatar Oct 13 '17 15:10 dazld

@dazld An example with the current pattern I have to follow?

sbgreene1307 avatar Nov 11 '17 20:11 sbgreene1307

no, I think I've understood your current pain. I'd be interested in what your solution would look like.

dazld avatar Nov 13 '17 21:11 dazld