safecopy icon indicating copy to clipboard operation
safecopy copied to clipboard

Interchangable Backends

Open agrafix opened this issue 11 years ago • 5 comments

It would be very nice if safecopy supported interchangable backends - I'd like to use safecopy and it's versioning, but actually store the data in a human-readable format like json, xml, oder whatever.

agrafix avatar Oct 15 '14 13:10 agrafix

Second that. I managed to work out a draft but unfortunately the maintainer is very unresponsive. I may just end up forking this.

pkamenarsky avatar Nov 30 '14 18:11 pkamenarsky

Sounds great! I'd be very interested and can provide help if needed.

agrafix avatar Nov 30 '14 19:11 agrafix

Cool, help is always appreciated :)

You can check out the value-builder branch in my fork. I managed to remove the cereal dependency and replace it with a general value container that can be used as a base for different backends. My idea was to have a general safecopy package, and then backend-specific packages like safecopy-cereal, safecopy-aeson and so on.

The put part is unfinished but looks good so far, and I haven't gotten around to doing the get part yet. I've also extended the TH code, so that the field names are also put into the value container, which will be useful for json, xml and other key-value based backends. The value container is just a list of Values, and a Value is just an ADT with different constructors for all primitive (and some other) types. I had tried a type-level based solution, but it got complicated fast, so I'm just sticking with the ADT thing for now.

So if you want, you can look around the source and see if there's something that you'd like to do. If you'd like to discuss something, we can do it in the issue tracker I guess.

pkamenarsky avatar Dec 01 '14 01:12 pkamenarsky

This would be neat. Especially if the extra backends can be put in separate packages as suggested.

stepcut avatar May 30 '16 15:05 stepcut

I realise this issue is rather old now, but in case anyone happens across it, I'm working on modular backends for acid-state in acid-state/acid-state#96, including the possibility to leave out safecopy altogether (or, in principle, to use a version of safecopy with a different backend).

adamgundry avatar Nov 12 '18 10:11 adamgundry