Passed
Push — main ( 9e2022...6ef1c9 )
by Christian
02:04 queued 14s
created

sqlproxy.Example_sqlDBBuilder   B

Complexity

Conditions 8

Size

Total Lines 48
Code Lines 35

Duplication

Lines 0
Ratio 0 %

Importance

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