Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interchangable Backends #16

Open
agrafix opened this issue Oct 15, 2014 · 5 comments
Open

Interchangable Backends #16

agrafix opened this issue Oct 15, 2014 · 5 comments

Comments

@agrafix
Copy link

agrafix commented Oct 15, 2014

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.

@pkamenarsky
Copy link

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

@agrafix
Copy link
Author

agrafix commented Nov 30, 2014

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

@pkamenarsky
Copy link

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.

@stepcut
Copy link
Member

stepcut commented May 30, 2016

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

@adamgundry
Copy link
Contributor

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants