79 lines
2.1 KiB
Go
79 lines
2.1 KiB
Go
// Copyright 2021 Ross Light
|
|
// SPDX-License-Identifier: ISC
|
|
|
|
package sqlite
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
lib "modernc.org/sqlite/lib"
|
|
)
|
|
|
|
// OpenFlags are flags used when opening a Conn.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_open_autoproxy.html
|
|
type OpenFlags uint
|
|
|
|
const (
|
|
OpenReadOnly OpenFlags = lib.SQLITE_OPEN_READONLY
|
|
OpenReadWrite OpenFlags = lib.SQLITE_OPEN_READWRITE
|
|
OpenCreate OpenFlags = lib.SQLITE_OPEN_CREATE
|
|
OpenURI OpenFlags = lib.SQLITE_OPEN_URI
|
|
OpenMemory OpenFlags = lib.SQLITE_OPEN_MEMORY
|
|
OpenNoMutex OpenFlags = lib.SQLITE_OPEN_NOMUTEX
|
|
OpenFullMutex OpenFlags = lib.SQLITE_OPEN_FULLMUTEX
|
|
OpenSharedCache OpenFlags = lib.SQLITE_OPEN_SHAREDCACHE
|
|
OpenPrivateCache OpenFlags = lib.SQLITE_OPEN_PRIVATECACHE
|
|
OpenWAL OpenFlags = lib.SQLITE_OPEN_WAL
|
|
)
|
|
|
|
// String returns a pipe-separated list of the C constant names set in flags.
|
|
func (flags OpenFlags) String() string {
|
|
var parts []string
|
|
if flags&OpenReadOnly != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_READONLY")
|
|
flags &^= OpenReadOnly
|
|
}
|
|
if flags&OpenReadWrite != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_READWRITE")
|
|
flags &^= OpenReadWrite
|
|
}
|
|
if flags&OpenCreate != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_CREATE")
|
|
flags &^= OpenCreate
|
|
}
|
|
if flags&OpenURI != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_URI")
|
|
flags &^= OpenURI
|
|
}
|
|
if flags&OpenMemory != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_MEMORY")
|
|
flags &^= OpenMemory
|
|
}
|
|
if flags&OpenNoMutex != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_NOMUTEX")
|
|
flags &^= OpenNoMutex
|
|
}
|
|
if flags&OpenFullMutex != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_FULLMUTEX")
|
|
flags &^= OpenFullMutex
|
|
}
|
|
if flags&OpenSharedCache != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_SHAREDCACHE")
|
|
flags &^= OpenSharedCache
|
|
}
|
|
if flags&OpenPrivateCache != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_PRIVATECACHE")
|
|
flags &^= OpenPrivateCache
|
|
}
|
|
if flags&OpenWAL != 0 {
|
|
parts = append(parts, "SQLITE_OPEN_WAL")
|
|
flags &^= OpenWAL
|
|
}
|
|
if flags != 0 || len(parts) == 0 {
|
|
parts = append(parts, fmt.Sprintf("%#x", uint(flags)))
|
|
}
|
|
return strings.Join(parts, "|")
|
|
}
|