Help us shape the future of Go! Take the 2026 Go Developer Survey

sqlutil

package module
v0.0.0-...-aa6e3c2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2019 License: MIT Imports: 4 Imported by: 0

README

sqlutil

CircleCI

Package sqlutil provides handy way to bind the *database/sql.Rows to the slice or struct.

Usage

For example, suppose you created a table defined like this:

CREATE TABLE book (
  id BIGSERIAL NOT NULL,
  title VARCHAR(256) NOT NULL,
  author VARCHAR(128) NOT NULL,
  price DECIMAL NOT NULL,
  published_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
  created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY(id)
);

You could bind the values into the slice of the struct:

package main

import (
	"database/sql"
	"fmt"
	"log"
	"time"

	_ "github.com/lib/pq"
	"github.com/moutend/sqlutil"
)

type Book struct {
	ID          int64
	Title       string
	Author      string
	Price       float64
	PublishedAt time.Time
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

func main() {
	source := "user=testuser dbname=testdb sslmode=disable password=xxxxxxxx"
	db, err := sql.Open("postgres", source)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	query := `SELECT * FROM book ORDER BY published_at LIMIT 10`
	rows, err := db.Query(query)
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	var books []Book

	if err := sqlutil.Bind(rows, &books); err != nil {
		log.Fatal(err)
	}

	for _, book := range books {
		fmt.Printf("%+v\n", book)
	}
}

LICENSE

MIT

Author

Yoshiyuki Koyanagi moutend@gmail.com

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bind

func Bind(rows *sql.Rows, i interface{}) error

Bind reads the rows and binds that values to the i. Scan accepts struct and slice.

Note: you must call rows.Close() after calling this func.

For more details, see https://github.com/moutend/sqlutil.

Types

type FakeScanner

type FakeScanner struct{}

func (FakeScanner) Scan

func (FakeScanner) Scan(interface{}) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL