hishtory/server/server.go

98 lines
2.1 KiB
Go
Raw Normal View History

2022-01-09 05:27:18 +01:00
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"strconv"
"github.com/ddworken/hishtory/shared"
_ "github.com/lib/pq"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
const (
POSTGRES_DB = "postgresql://postgres:O74Ji4735C@postgres-postgresql.default.svc.cluster.local:5432/hishtory?sslmode=disable"
)
2022-01-09 05:27:18 +01:00
func apiSubmitHandler(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var entry shared.HistoryEntry
err := decoder.Decode(&entry)
if err != nil {
panic(err)
}
db, err := OpenDB()
if err != nil {
panic(err)
}
err = shared.Persist(db, entry)
2022-01-09 05:27:18 +01:00
if err != nil {
panic(err)
}
}
func OpenDB() (*gorm.DB, error) {
if shared.IsTestEnvironment() {
return shared.OpenLocalSqliteDb()
}
db, err := gorm.Open(postgres.Open(POSTGRES_DB), &gorm.Config{})
if err != nil {
return nil, fmt.Errorf("failed to connect to the DB: %v", err)
}
db.AutoMigrate(&shared.HistoryEntry{})
return db, nil
}
2022-01-09 05:27:18 +01:00
func apiSearchHandler(w http.ResponseWriter, r *http.Request) {
userSecret := r.URL.Query().Get("user_secret")
query := r.URL.Query().Get("query")
2022-01-09 20:00:53 +01:00
fmt.Println("Received search query: " + query)
2022-01-09 05:27:18 +01:00
limitStr := r.URL.Query().Get("limit")
limit, err := strconv.Atoi(limitStr)
if err != nil {
limit = 0
}
db, err := OpenDB()
2022-01-09 05:27:18 +01:00
if err != nil {
panic(err)
}
2022-01-09 20:00:53 +01:00
entries, err := shared.Search(db, userSecret, query, limit)
2022-01-09 05:27:18 +01:00
if err != nil {
panic(err)
}
for _, entry := range entries {
entry.UserSecret = ""
}
resp, err := json.Marshal(entries)
if err != nil {
panic(err)
}
w.Write(resp)
}
func main() {
// db, err := sql.Open("postgres", "postgresql://postgres:O74Ji4735C@postgres-postgresql.default.svc.cluster.local:5432/cascara_prod?sslmode=disable")
// if err != nil {
// panic(err)
// }
// defer db.Close()
// _, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s;", "hishtory"))
// if err != nil {
// panic(err)
// }
_, err := OpenDB()
2022-01-09 05:27:18 +01:00
if err != nil {
panic(err)
}
fmt.Println("Listening on localhost:8080")
http.HandleFunc("/api/v1/submit", apiSubmitHandler)
http.HandleFunc("/api/v1/search", apiSearchHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}