This is the first look at a new project of mine that was released today. SisoDb.Management is a a web based tool for administrating you SisoDb database.
For those of you who follow me on Twitter you might know I have been using http://sisodb.com in http://opath.se for a long time. And for the last week you might have seen me tweet about SisoDb.Management which is my latest project. The purpose of the project is to make it easy to manage your siso databases. I'm not talking about backups and those kind of things. I'm talking about having a way to query/update/delete/insert data as we would do for normal Sql. So let me present the first version of SisoDb.Management (https://github.com/MikaelEliasson/SisoDb.Management)
A visual tour
There is only soo much words an pictures can say. If you want to try it out for real just dowload the code from github and run the project TestApplication that comes with the download. You will have to enable package restore in Visual Studio as packages aren't checked into Git.
Starting the tool
Navigate to [your-root-url]/siso-db-management/page to get started.
Continue by clicking one of the entities in the list to the left.
The dashboard
After clicking an entity a new tab for that entity is opened in dashboard mode. From here you can reach the other windows for that entity or regenerate indexes on that structure. Click the option you would like to try out
Querying that data
SisoDb.Management have many open tabs so I clicked on a new entity because what I really wanted was to manage "EventForList". On the dashboard I then selected "Query Window" and is now presented with the possibility to query my data. This is probably the window you will use most of the time.
In the example above I searched for all competitions. Note that the text in the tab is updated to make the tabs easier to find. This example worked nicely but what if I did a misstake in my query?
I underlined the error and what the property should have been. Proprties you can query/sort on is really useful when writing your queries. Unfortuantly the error messages are quite cryptic when parsing the expressions fails.
Deleting by query
Let's find all events with no courses instead and do some house keeping by removing them from the list.
I clicked query to see what matched my expression. All looks safe to delete so I click "Delete by query". One thing to remeber is that even though query might returned a paged result. Delete by query will delete ALL matches. This will ofcourse require a confirmation.
Clicking confirm all 3 entities will be removed
Updating a single entity
Let's find some new events.
Testclub was something a user just put in and because I haven't built the gui for changing the name I have to do it. Clicking the underlined "D" takes you to the details window. It actually opens a new tab for that.
Let's change that name and then click save.
Deleting single entities
If we return to the query tab and rerun the query you can see that the item was updated but there is two duplicates that should be removed
Again, click the "D" to get to the details window and then use the Delete button. After repeating that for both entities the new list looks better.
Running complex queris using setup code
Sometimes the logic for your query is not that easy to fit into a linq expression. That's why there is the setup code where you can run more complex code to prepare variables for the linq statement. Here is an example:
How does it work
SisoDb.Management is packaged as a HttpHandler and is accessible at your-root-url/siso-db-management/page. Because it is hosted on the web you are required to specify an Authorise callback which handles authorisation of the users.
Is it free?
YES!
How to install SisoDb.Management
Install it from Nuget using:
pm> Install-Package SisoDb.Management
You can also get the code from Github: https://github.com/MikaelEliasson/SisoDb.Management and follow the instructions there.
How to configure SisoDb.Management
For updated instructions refer to the readme at https://github.com/MikaelEliasson/SisoDb.Management where information about how to configure it.