Skip to content

Commit

Permalink
Add writer interface
Browse files Browse the repository at this point in the history
  • Loading branch information
rnixik committed Jul 15, 2018
1 parent 06fcc62 commit b144946
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
5 changes: 4 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ func main() {
fmt.Print(err)
os.Exit(1)
}
err = query.QueryResult(conset)

writer := &SimpleWriter{}

err = query.QueryResult(conset, writer)
if err != nil {
fmt.Print(err)
os.Exit(1)
Expand Down
10 changes: 5 additions & 5 deletions query.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type ConnectionSettings struct {
}

// QueryResult returns rows of data from DB
func (q *Query) QueryResult(conset *ConnectionSettings) (err error) {
func (q *Query) QueryResult(conset *ConnectionSettings, writer DataWriter) (err error) {
db, err := getDb(conset)
if err != nil {
log.Fatal(err)
Expand All @@ -60,25 +60,25 @@ func (q *Query) QueryResult(conset *ConnectionSettings) (err error) {
if err != nil {
return err
}
DumpResults(resultsMaps)
writer.Write(resultsMaps)
}
return
}

func dbSelect(db *sqlx.DB, query string, args ...interface{}) (resultsMaps []map[string]interface{}, err error) {
func dbSelect(db *sqlx.DB, query string, args ...interface{}) (resultsMaps []*map[string]interface{}, err error) {
rows, err := db.Queryx(query, args...)
if err != nil {
return
}

resultsMaps = make([]map[string]interface{}, 0)
resultsMaps = make([]*map[string]interface{}, 0)
for rows.Next() {
results := make(map[string]interface{})
err = rows.MapScan(results)
if err != nil {
return
}
resultsMaps = append(resultsMaps, results)
resultsMaps = append(resultsMaps, &results)
}
return resultsMaps, nil
}
Expand Down
12 changes: 10 additions & 2 deletions writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,16 @@ import (
"fmt"
)

func DumpResults(results []map[string]interface{}) {
type DataWriter interface {
Write(results []*map[string]interface{}) (err error)
}

type SimpleWriter struct {
}

func (w *SimpleWriter) Write(results []*map[string]interface{}) (err error) {
for _, row := range results {
for field, v := range row {
for field, v := range *row {
value := ""
switch typedValue := v.(type) {
case int:
Expand All @@ -32,4 +39,5 @@ func DumpResults(results []map[string]interface{}) {
}
fmt.Println("")
}
return nil
}

0 comments on commit b144946

Please sign in to comment.