Start a new topic
Implemented

One image cache per database

It would be great, if we could (optionally?) have multiple image caches.

Maybe simply save the cache-path in the database related json-files, instead of helium.json?


Why?


Two users, each with its own database:

Whenever the database is changed, Neon has to re-create the cache, which is very slow. If each database has its own cache, this would speed up the starting time.


-----


My personal use-case: Sharing one database on multiple computers

I could easily synchronize my main database from my work-computer to my HTPC without troubles when switching databases.


Right now sharing one database on two computers is a pain in the *#$, because thumbnails won't show up on the second computer - the image path's are stored in the database, but the thumbnails don't exist...


The background images are shown, while thumbnails are missing right now:




Implemented in:

http://files.helium.fm/helium_12.0.14110.0.exe


Description:

-Existing databases will not have any value set, hence they will default to the default cache path

-You can change the path from library management (this will require a restart). The new value will be stored in the DB

-When creating new SQL Server and MySQL databases you can force a path directly from the dialog

Do you use %appdata% variable in default paths?
If not, this might become a problem when sharing a database with multiple computers / users.
The default path is the users roaming folder as before. This is mainly choosen because of how the free version limitations will work. Users with a licensed version will be able to change this as needed
Well, the folder itself is not the problem - but you need to create the folder as "%appdata%\Helium\cache\folder_xyz" and not as "c:\users\user_xyz\appdata\roaming\imploded software\helium\cache\folder_xyz".

Absolute paths may not be accessible on a different computer, because the user will most probably not share the same username...

I just tried this and Neon crashed.

>>I just tried this and Neon crashed.

What case did you test?

I tested myself by setting the cache to an UNC path and that worked.

Or do you just mean that all default paths should be moved out from user to %appdata% instead?

That could of course be a simple solution (have you tried to set the cache to that folder?)


Edit: I still think the folder needs be be shared/accessible from another machine so will %appdata% really help?

A network share/UNC path should work better, I think?

I don't want to move the cache outside of %appdata% and I don't want to use a UNC path.


I want to create a subfolder in the old cache folder - but my computers have different users.


So when I set the folder to "c:\users\user_xyz\appdata\roaming\imploded software\helium\cache\subfolder", this will work on my first computer

But I cannot use this database on my second computer, since this folder does not exist there - and cannot be created.

The folder would have to be "c:\users\user_abc\appdata\roaming\imploded software\helium\cache\subfolder" on that machine.


To get it working on both machines, I have to use a variable and set the path "%appdata%\imploded software\helium\cache\subfolder" - so I tried this path (set manually in the database with phpMyAdmin), but Neon crashed.


The main problem is different usernames...

Ok, so the requirement is that you can use dynamic variables that are evaluated in runtime?

If so I will check if it is possible..

Well, hold you horses, if I think about it, this might lead to another issue - what happens when two users on the same machine share one database - there will be two caches created which will get out of sync!!!

Maybe it's best to use another folder outside %appdata% - like c:\programdata\.

I think it should be up to the end user to define, so by implememting support for %appdata%, %programdata% which will be evaluated during runtime, the most cases should be covered.


Addendum: This will of course require another UI for the change of the existing path and non-readonly fields when creating new DBs..

It's up to you how to set the default path, but think about the average user, testing the free version, then buying a license and trying to share the database - he shouldn't run into any issues or you will have to support many unhappy customers... ;-)

 

You can try with:

http://files.helium.fm/helium_12.0.14112.0.exe


This version will default to %programfiles%\imploded software\helium\cache


You can also enter either %APPDATA%\path or %PROGRAMDATA%\path when creating/changing the paths to use a fully dynamic solution.

I have made some furthe research and I think that the most optimal is most likely to store a custom path in the DB.

This will ensure that data will not be out of sync between recent.json and db.json as well as the in-use in helium.json.


I will test more...

Database was my first thought, but that makes it even more important to configure this through the GUI.

Yep, configuration should be:

1) Via library management

2) (possibly) when creating the DB

Login or Signup to post a comment