sqladapter_test.Example_sqlAdapter   B
last analyzed

Complexity

Conditions 7

Size

Total Lines 42
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 30
nop 0
dl 0
loc 42
rs 7.76
c 0
b 0
f 0
1
package sqladapter_test
2
3
import (
4
	"fmt"
5
6
	"os"
7
	"strconv"
8
9
	adapter "github.com/cdleo/go-sql-adapter"
10
	"github.com/cdleo/go-sql-adapter/engines"
11
	"github.com/cdleo/go-sql-adapter/loggers"
12
	"github.com/cdleo/go-sql-adapter/translators"
13
)
14
15
type People struct {
16
	Id       int    `db:"id"`
17
	Nombre   string `db:"firstname"`
18
	Apellido string `db:"lastname"`
19
}
20
21
func Example_sqlAdapter() {
22
23
	connector := engines.NewSqlite3Connector(":memory:")
24
	translator := translators.NewNoopTranslator()
25
	stdoutLogger := loggers.NewBasicLogger()
26
	//stdoutLogger.SetLogLevel(logger.LogLevel_Trace.String())
27
	sqlAdapter := adapter.NewSQLAdapter(connector, translator, stdoutLogger)
28
29
	db, err := sqlAdapter.Open()
30
	if err != nil {
31
		fmt.Println("Unable to connect to DB")
32
		os.Exit(1)
33
	}
34
	defer db.Close()
35
36
	_, err = db.Exec("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY, firstname TEXT, lastname TEXT)")
37
	if err != nil {
38
		fmt.Printf("Unable to execute statement %v\n", err)
39
		os.Exit(1)
40
	}
41
42
	stmt, err := db.Prepare("INSERT INTO people (firstname, lastname) VALUES (?, ?)")
43
	if err != nil {
44
		fmt.Printf("Unable to prepare statement %v\n", err)
45
		os.Exit(1)
46
	}
47
	_, err = stmt.Exec("Gene", "Kranz")
48
	if err != nil {
49
		fmt.Printf("Unable to exec statement %v\n", err)
50
		os.Exit(1)
51
	}
52
53
	rows, err := db.Query("SELECT id, firstname, lastname FROM people")
54
	if err != nil {
55
		fmt.Printf("Unable to query data %v\n", err)
56
		os.Exit(1)
57
	}
58
59
	var p People
60
	for rows.Next() {
61
		_ = rows.Scan(&p.Id, &p.Nombre, &p.Apellido)
62
		fmt.Println(strconv.Itoa(p.Id) + ": " + p.Nombre + " " + p.Apellido)
63
	}
64
65
	// Output:
66
	// 1: Gene Kranz
67
}
68