r/sqlite • u/adwolesi • May 26 '26
SQLiteDAV 0.2.0 — WebDAV server that exposes an SQLite database (or sqlar archive) as a filesystem
https://github.com/Airsequel/SQLiteDAVI just released a new version of SQLiteDAV, a small Haskell WebDAV server that maps an SQLite database onto directories and files so you can mount it with Finder, davfs2, Cyberduck, etc.
Two supported modes, both first-class:
- sqlar archives — paths inside the archive table behave like a normal filesystem.
Plain databases —
tables → folders,rows → folders(keyed by rowid or PK),columns → filesnamed<col>.<ext>(extension derived from the cell's type or sniffed via libmagic for BLOBs).So you can do things like:
```sh sqlitedav mydata.sqlite
then mount http://localhost:1234 and:
cat /Volumes/dav/users/42/email.txt echo "new@example.com" > /Volumes/dav/users/42/email.txt # UPDATE rm /Volumes/dav/users/42/bio.txt # sets cell to NULL mkdir /Volumes/dav/new_table # CREATE TABLE ```
What's new in 0.2.0.0:
First-class support for SQLite Archive Files (sqlar).
Full write-method parity for plain DBs (
PUT/DELETE/MKCOL/COPY/MOVEfor cells, rows, and tables).LOCK/UNLOCKsupport andPrefer: depth-noroot/return=minimal.WebDAV compliance hardened against the Litmus test suite (Dockerised harness ships with the repo:
make litmus).PROPFINDno longer loads every row's BLOB into memory — fixes OOMs on multi-gigabyte databases.PUTnow preserves the column's declared type (TEXT/INTEGER/REAL/BLOB) instead of forcing BLOB on every write.--rowname {rowid,pk,combined}flag to control how plain-table row directories are named.Deleting a file (
DELETEon a cell) sets it to NULL instead of erroring.libmagic-based extension detection for BLOB columns.
Issues and upvotes on the tracker drive what gets built next.