mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-14 18:24:14 +01:00
75 lines
1.2 KiB
Go
75 lines
1.2 KiB
Go
|
// +build ignore
|
||
|
|
||
|
// Generate the table of OID values
|
||
|
// Run with 'go run gen.go'.
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
|
||
|
_ "github.com/lib/pq"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
datname := os.Getenv("PGDATABASE")
|
||
|
sslmode := os.Getenv("PGSSLMODE")
|
||
|
|
||
|
if datname == "" {
|
||
|
os.Setenv("PGDATABASE", "pqgotest")
|
||
|
}
|
||
|
|
||
|
if sslmode == "" {
|
||
|
os.Setenv("PGSSLMODE", "disable")
|
||
|
}
|
||
|
|
||
|
db, err := sql.Open("postgres", "")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
cmd := exec.Command("gofmt")
|
||
|
cmd.Stderr = os.Stderr
|
||
|
w, err := cmd.StdinPipe()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
f, err := os.Create("types.go")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
cmd.Stdout = f
|
||
|
err = cmd.Start()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Fprintln(w, "// generated by 'go run gen.go'; do not edit")
|
||
|
fmt.Fprintln(w, "\npackage oid")
|
||
|
fmt.Fprintln(w, "const (")
|
||
|
rows, err := db.Query(`
|
||
|
SELECT typname, oid
|
||
|
FROM pg_type WHERE oid < 10000
|
||
|
ORDER BY oid;
|
||
|
`)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
var name string
|
||
|
var oid int
|
||
|
for rows.Next() {
|
||
|
err = rows.Scan(&name, &oid)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Fprintf(w, "T_%s Oid = %d\n", name, oid)
|
||
|
}
|
||
|
if err = rows.Err(); err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Fprintln(w, ")")
|
||
|
w.Close()
|
||
|
cmd.Wait()
|
||
|
}
|