sqlar

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2023 License: Apache-2.0 Imports: 0 Imported by: 0

README

sqlar - Go libraries for SQLite Archive Files

About SQLite Archive Files

See https://sqlite.org/sqlar.html

Status

v0.2.0 should be production ready.

The implementation of sqlarfs is quite naive so far:

  • the DB is queried on every directory read, almost without caching (`v0.2.0`` has only a cache for FileInfo of directory entries).
  • file data is entirely read in memory on first read of a file.
  • reading file data is done purely through the SQL layer via the database/sql package. The C implementation of SQLite has a BLOB API but we aren't using it.

So it is not yet recommended for thousands of files (but not yet really tested). Reports of performance issues and use cases are very welcome.

Doc

Package github.com/dolmen-go/sqlar/sqlarfs implements interface io/fs.FS.

Example

Using goeval, serve an SQLAr file at https://localhost:8084/ :

$ go install github.com/dolmen-go/goeval@latest
$ goeval -i net/http -i _=github.com/mattn/go-sqlite3@latest -i github.com/dolmen-go/sqlar/sqlarfs@main 'db,err:=sql.Open("sqlite3","file:"+os.Args[1]+"?mode=ro&immutable=1");if err!=nil{panic(err)};defer db.Close();http.Handle("/",http.FileServer(http.FS(sqlarfs.New(db))));http.ListenAndServe(":8084",nil)' sqlarfs/testdata/dir.sqlar

License

Copyright 2023 Olivier Mengué

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Documentation

Overview

Module sqlar provides libraries to handle SQLite Archive Files.

See github.com/dolmen-go/sqlar/sqlarfs, an implementation of io/fs.FS for reading sqlar files.

Directories

Path Synopsis
Package sqlarfs provides an implementation of io/fs.FS for [SQLite Archive Files] via database/sql.
Package sqlarfs provides an implementation of io/fs.FS for [SQLite Archive Files] via database/sql.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL