1package sqlite3
2
3import "sync"
4
5var (
6 // +checklocks:extRegistryMtx
7 extRegistry []func(*Conn) error
8 extRegistryMtx sync.RWMutex
9)
10
11// AutoExtension causes the entryPoint function to be invoked
12// for each new database connection that is created.
13//
14// https://sqlite.org/c3ref/auto_extension.html
15func AutoExtension(entryPoint func(*Conn) error) {
16 extRegistryMtx.Lock()
17 defer extRegistryMtx.Unlock()
18 extRegistry = append(extRegistry, entryPoint)
19}
20
21func initExtensions(c *Conn) error {
22 extRegistryMtx.RLock()
23 defer extRegistryMtx.RUnlock()
24 for _, f := range extRegistry {
25 if err := f(c); err != nil {
26 return err
27 }
28 }
29 return nil
30}