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, "|")
|
||
|
}
|