I had a look at doing this a while ago and ran away screaming, it's quite eye watering in terms of being agnostic. I started one myself but haven't had enough time to make the UI perfect at the moment. But I did make progress on a way to use many different types of DB's..for example