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  }