Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func handleError(w http.ResponseWriter, err error) {
- if err != nil {
- log.Print(err.Error() + "rn") // Logging
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- }
- table := pq.QuoteIdentifier(table)
- identifier := pq.QuoteIdentifier("ID")
- rows, err := db.Query( fmt.Sprintf("SELECT %s, ST_AsText(geom) FROM %s WHERE %s = $1", identifier, table, identifier), feature)
- handleError(w, err)
- package main
- import (
- "fmt"
- "encoding/json"
- "os"
- "log"
- "net/http"
- "database/sql"
- "strings"
- "time"
- "github.com/lib/pq"
- )
- func handler(w http.ResponseWriter, r *http.Request) {
- f, err := os.OpenFile("pgdump_errorlog.txt", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
- log.Print("Couldn't open file")
- defer f.Close()
- log.SetOutput(f)
- // Timing
- start := time.Now()
- // Postgres Credentials
- const (
- DB_USER = "postgres"
- DB_PASSWORD = "OMITTED" // Removed details !
- DB_PORT = "OMITTED"
- DB_NAME = "OMITTED"
- )
- // Postgres Connect
- dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s port=%s sslmode=disable",
- DB_USER, DB_PASSWORD, DB_NAME, DB_PORT)
- db, err := sql.Open("postgres", dbinfo)
- handleError(w, err)
- defer db.Close()
- table := r.FormValue("table")
- feature := r.FormValue("id")
- if table != "" {
- //Postgres Query
- var (
- id int
- geom string
- )
- table := pq.QuoteIdentifier(table)
- identifier := pq.QuoteIdentifier("ID")
- rows, qerr := db.Query( fmt.Sprintf("SELECT %s, ST_AsText(geom) FROM %s WHERE %s = $1", identifier, table, identifier), feature)
- handleError(w, err)
- defer rows.Close()
- for rows.Next() {
- err := rows.Scan(&id, &geom)
- handleError(w, err)
- }
- err = rows.Err()
- handleError(w, err)
- // Maniplate Strings
- returngeom := strings.Replace(geom, "1.#QNAN", "", -1)
- i := strings.Index(returngeom, "(")
- wkt := strings.TrimSpace(returngeom[:i])
- returngeom = returngeom[i:]
- type WTKJSON struct {
- WTKType string
- Geometry string
- Elapsed time.Duration
- }
- returnjson := WTKJSON{Geometry: returngeom, WTKType: wkt , Elapsed: time.Since(start)/1000000.0}
- json.NewEncoder(w).Encode(returnjson)
- }
- }
- func handleError(w http.ResponseWriter, err error) {
- if err != nil {
- log.Print(err.Error() + "rn") // Logging
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
- }
- func main() {
- http.HandleFunc("/", handler)
- http.ListenAndServe(":8080", nil)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement