Main version. Developed under linux. (and now working with OS X!)
Fusql works as a interface between a relational database (sqlite for now) and a filesystem. Each table is represented as a directory, each row is represented as a folder inside a table folder and each column is represented as a file inside a row folder.
fusql now supports:
- list tables, rows and columns
- create/delete tables creating or deleting folders on the root directory
- create/delete rows creating or deleting folders inside a table folder
- create columns creating a file inside any row (it will update the other rows)
- rename tables or rows just renaming the respective folder
- view a cell content just reading the content of the respective column inside a row
- write on column files (still a little buggy)
- binary file support it's still experimental
To run it, make sure you have Fuse installed, and python bindings (check http://fuse.sourceforge.net/) and for python bindings in ubuntu use the package python-fuse, for other distros you should investigate. Once you have that you can run it using:
$ python fusqldb.py -f mnt_folder
And if you don't want to view the debug
$ python fusqldb.py mnt_folder
To unmount it you can run
$ fusermount -u mnt_folder
Fusql it's now using DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE to read more about it reed file LICENSE
A database like:
id username password name lastname address phone city 1 j0hn secret Gonzalo Garcia example 1234 Cordoba 2 nassty secret2 Mariano Garcia example 4321 Cordoba
will be visualized as the following :
$ ls users $ ls users 1 2 $ ls users/1 id.int username.txt password.txt name.txt lastname.txt address.txt phone.txt city.txt $ cat users/1/username.txt j0hn
Tweaking the table names you can get a pseudo-dynamic webapp.
- The cols named "start" are mapped to "index.html"
- the cols named "style" are mapped to "style.css"
- and the columns named "functions" are mapped to "functions.js".
You can run a web browser on top of that and enjoy:
$ mkdir tmp
$ python fusql.py -f tmp &
[1] 90210
$ cd tmp
$ python -m SimpleHTTPServer &
[2] 1337
Serving HTTP on 0.0.0.0 port 8000 ...
$ curl localhost:8000/pages/1/index.html
localhost - - [31/Feb/1337 55:76:49] "GET /pages/1/index.html HTTP/1.1" 200 -
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css" />
<script type="text/javascript" src="functions.js"></script>
</head>
<body>
<h1 class="header">Hello</h1>
<p class="content"> this is just a test app</p>
</body>
</html>
$ sudo umount tmp
We're awesome.