53 lines
1 KiB
Go
53 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/joho/godotenv"
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
func main() {
|
|
godotenv.Load(".env")
|
|
dbURL := os.Getenv("DATABASE_URL")
|
|
if dbURL == "" {
|
|
// Fallback
|
|
host := os.Getenv("DB_HOST")
|
|
port := os.Getenv("DB_PORT")
|
|
user := os.Getenv("DB_USER")
|
|
pass := os.Getenv("DB_PASSWORD")
|
|
name := os.Getenv("DB_NAME")
|
|
ssl := os.Getenv("DB_SSLMODE")
|
|
if host != "" {
|
|
dbURL = fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=%s", user, pass, host, port, name, ssl)
|
|
} else {
|
|
log.Fatal("DB URL not found")
|
|
}
|
|
}
|
|
|
|
db, err := sql.Open("postgres", dbURL)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
rows, err := db.Query(`
|
|
SELECT column_name, data_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users';
|
|
`)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer rows.Close()
|
|
|
|
fmt.Println("USERS TABLE SCHEMA:")
|
|
for rows.Next() {
|
|
var colName, dataType string
|
|
rows.Scan(&colName, &dataType)
|
|
fmt.Printf("%s: %s\n", colName, dataType)
|
|
}
|
|
}
|