github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/lib/pq/oid/gen.go (about)

     1  // +build ignore
     2  
     3  // Generate the table of OID values
     4  // Run with 'go run gen.go'.
     5  package main
     6  
     7  import (
     8  	"database/sql"
     9  	"fmt"
    10  	"log"
    11  	"os"
    12  	"os/exec"
    13  
    14  	_ "github.com/insionng/yougam/libraries/lib/pq"
    15  )
    16  
    17  func main() {
    18  	datname := os.Getenv("PGDATABASE")
    19  	sslmode := os.Getenv("PGSSLMODE")
    20  
    21  	if datname == "" {
    22  		os.Setenv("PGDATABASE", "pqgotest")
    23  	}
    24  
    25  	if sslmode == "" {
    26  		os.Setenv("PGSSLMODE", "disable")
    27  	}
    28  
    29  	db, err := sql.Open("postgres", "")
    30  	if err != nil {
    31  		log.Fatal(err)
    32  	}
    33  	cmd := exec.Command("gofmt")
    34  	cmd.Stderr = os.Stderr
    35  	w, err := cmd.StdinPipe()
    36  	if err != nil {
    37  		log.Fatal(err)
    38  	}
    39  	f, err := os.Create("types.go")
    40  	if err != nil {
    41  		log.Fatal(err)
    42  	}
    43  	cmd.Stdout = f
    44  	err = cmd.Start()
    45  	if err != nil {
    46  		log.Fatal(err)
    47  	}
    48  	fmt.Fprintln(w, "// generated by 'go run gen.go'; do not edit")
    49  	fmt.Fprintln(w, "\npackage oid")
    50  	fmt.Fprintln(w, "const (")
    51  	rows, err := db.Query(`
    52  		SELECT typname, oid
    53  		FROM pg_type WHERE oid < 10000
    54  		ORDER BY oid;
    55  	`)
    56  	if err != nil {
    57  		log.Fatal(err)
    58  	}
    59  	var name string
    60  	var oid int
    61  	for rows.Next() {
    62  		err = rows.Scan(&name, &oid)
    63  		if err != nil {
    64  			log.Fatal(err)
    65  		}
    66  		fmt.Fprintf(w, "T_%s Oid = %d\n", name, oid)
    67  	}
    68  	if err = rows.Err(); err != nil {
    69  		log.Fatal(err)
    70  	}
    71  	fmt.Fprintln(w, ")")
    72  	w.Close()
    73  	cmd.Wait()
    74  }