massren icon indicating copy to clipboard operation
massren copied to clipboard

Why use SQL for config

Open cryptix opened this issue 10 years ago • 8 comments

Hi,

why do you use SQL to store configurations. Wouldn't JSON or INI work as well? Would also remove the cgo deps.

cryptix avatar Feb 18 '14 22:02 cryptix

It's not so much the configuration, it's for the history data required by the undo feature.

Currently, it's saving each renaming operation for up to 7 days, so that could become quite large and it would be inefficient to store this in a text file. Actually, I'd rather not use cgo but I can't really think of a good alternative. I'm definitely open to suggestions though since not having cgo would simplify the cross-platform build process.

laurent22 avatar Feb 19 '14 17:02 laurent22

So far I still haven't found a good alternative to SQLite so will keep using this for now.

laurent22 avatar Jul 07 '14 02:07 laurent22

@laurent22 You could use a JSON or INI just to store settings like editor and use_trash and use SQL for renaming history.

There are several benefits in using a text based config format - the most obvious one is, that I don't have to use commands to modify config settings, I could just open the editor (which massren loves doing anyways :wink:) and modify things.

I might have been able to quote the path properly in the file and avoid #19

dufferzafar avatar Jul 25 '14 02:07 dufferzafar

That's a good point. I'm reopening the issue in case someone is motivated enough to do a PR :)

laurent22 avatar Jul 25 '14 04:07 laurent22

I second this request. I try to keep app settings in a dotfiles repo (and so do many others,) but I have zero interest in keeping the undo history, because that falls more into the "state cache" category and not the "settings" category. Settings generally benefit from being strictly separated from misc application state.

staticshock avatar Nov 24 '14 14:11 staticshock

@staticshock, I think that's indeed the right way to look at it. There should be cached/state data and config, and it should be two separate files. If I have time to do it (or, as always, if someone is motivated), that's how I'd do it:

  • Move all config data to INI file (or something similar to Git config files)
  • Move all history file to non-cgo dependant key/value store. The recently released Bolt I think would be a good candidate for this (https://github.com/boltdb/bolt)

laurent22 avatar Dec 17 '14 10:12 laurent22

I try to keep app settings in a dotfiles repo (and so do many others,)

Exactly. @laurent22 Is there any update on this?

Vincevrp avatar Apr 17 '19 13:04 Vincevrp

I won't implement this myself as the current solution for my needs is good enough, but if someone submit a pull request I'll most likely accept it.

laurent22 avatar Apr 17 '19 13:04 laurent22