Documentation ¶
Overview ¶
Package sqlarfs provides an implementation of io/fs.FS for SQLite Archive Files via database/sql.
Example ¶
// Open DB in readonly mode for maximum speed db, err := sql.Open(sqliteDriver, "file:testdata/simple.sqlar?mode=ro&immutable=1") if err != nil { log.Fatal(err) } defer db.Close() // List files in the archive, recusively ar := sqlarfs.New(db, sqlarfs.PermOwner) fs.WalkDir(ar, ".", func(path string, d fs.DirEntry, err error) error { if err != nil { return err } info, _ := d.Info() fmt.Printf("%s %4d %s %s\n", info.Mode(), info.Size(), info.ModTime().UTC().Format("_2 Jan 2006 15:04"), info.Name()) return nil }) // Dump one file f, err := ar.Open("foo.txt") if err != nil { log.Fatal(err) } defer f.Close() fmt.Println("foo.txt:") io.Copy(os.Stdout, f)
Output: dr-xr-xr-x 0 1 Jan 1970 00:00 . -rw-r--r-- 4 30 Sep 2023 14:51 bar.txt -rw-r--r-- 4 30 Sep 2023 16:14 foo.txt foo.txt: Foo
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FS ¶
FS documents the io/fs interfaces provided by this implementation of io/fs.FS.
func New ¶
New returns an instance of io/fs.FS that allows to access the files in an SQLite Archive File opened with database/sql.
db is a database/sql handle to the SQLite Archive file. Two drivers are known to work: github.com/mattn/sqlite3 and modernc.org/sqlite. sqlarfs uses caching for the directory structure, and so it assumes that the sqlar table is not modified while browsing the filesystem. So if the sqlar table is modified, create a new instance.
For maximum performance, open the SQLite database in read-only, immutable mode:
file:<path>?mode=ro&immutable=1
The default permission mask used to enforce file permissions ('mode' column in the 'sqlar' table) is PermAny.
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option is an option for New.
Available options: PermOwner, PermGroup, PermOthers, PermAny.
type PermMask ¶
type PermMask uint32
PermMask is a permission mask for enforcing fs.FileMode permissions (disallow to read files, disallow traversing or listing directories) in an SQLite Archive File.