github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/tpch/driver/driver.go (about) 1 // Copyright 2021 The Sqlite Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package driver 6 7 import ( 8 "database/sql" 9 "fmt" 10 ) 11 12 // System Under Test. 13 type SUT interface { 14 CreateTables() error 15 InsertCustomer() string 16 InsertLineItem() string 17 InsertNation() string 18 InsertOrders() string 19 InsertPart() string 20 InsertPartSupp() string 21 InsertRegion() string 22 InsertSupplier() string 23 Name() string 24 OpenDB() (*sql.DB, error) 25 OpenMem() (SUT, *sql.DB, error) 26 Q1() string 27 Q2() string 28 QProperty() string 29 SetWD(path string) error 30 } 31 32 var registered = map[string]SUT{} 33 34 func Open(name string) SUT { 35 return registered[name] 36 } 37 38 func Register(sut SUT) { 39 nm := sut.Name() 40 if _, ok := registered[nm]; ok { 41 panic(fmt.Errorf("already registered: %s", nm)) 42 } 43 44 registered[nm] = sut 45 } 46 47 func List() []string { 48 r := []string{} 49 for k := range registered { 50 r = append(r, k) 51 } 52 return r 53 }