mirror of
https://github.com/syncthing/syncthing.git
synced 2024-11-16 18:41:59 -07:00
6ff74cfcab
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3371
33 lines
718 B
Go
33 lines
718 B
Go
// Copyright (C) 2014-2015 Jakob Borg and Contributors (see the CONTRIBUTORS file).
|
|
|
|
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
)
|
|
|
|
type setupFunc func(db *sql.DB) error
|
|
type compileFunc func(db *sql.DB) (map[string]*sql.Stmt, error)
|
|
|
|
var (
|
|
setupFuncs = make(map[string]setupFunc)
|
|
compileFuncs = make(map[string]compileFunc)
|
|
)
|
|
|
|
func register(name string, setup setupFunc, compile compileFunc) {
|
|
setupFuncs[name] = setup
|
|
compileFuncs[name] = compile
|
|
}
|
|
|
|
func setup(backend string, db *sql.DB) (map[string]*sql.Stmt, error) {
|
|
setup, ok := setupFuncs[backend]
|
|
if !ok {
|
|
return nil, fmt.Errorf("Unsupported backend")
|
|
}
|
|
if err := setup(db); err != nil {
|
|
return nil, err
|
|
}
|
|
return compileFuncs[backend](db)
|
|
}
|