Farhan Khan a50916eb36 using the same http client, adding it to running instances
some web work
lost track of what's going on and I'm not accountable to anyone...so screw it
2020-12-16 02:41:45 +00:00

69 lines
2.7 KiB
Go

package main
import (
"github.com/jackc/pgx/pgxpool"
"context"
"log"
"fmt"
)
func postHandler(reportPostChan chan ReportPost, pool *pgxpool.Pool) {
for { // Write posts
v := <-reportPostChan
go writePost(pool, v)
}
}
func writePost(pool *pgxpool.Pool, reportpost ReportPost) {
conn, err := pool.Acquire(context.Background())
if err != nil {
log.Fatal("Error connecting to database:", err)
}
defer conn.Release()
// Insert new account if new
var accountid int
err = conn.QueryRow(context.Background(), "INSERT INTO accounts (acct, avatar, bot, created_at, display_name, uri) VALUES($1, $2, $3, $4, $5, $6) ON CONFLICT(acct) DO UPDATE SET acct=EXCLUDED.acct RETURNING id", reportpost.Account.Acct, reportpost.Account.Avatar, reportpost.Account.Bot, reportpost.Account.Created_at, reportpost.Account.Display_name, reportpost.Account.Url).Scan(&accountid)
if err != nil {
log.Print("First ", err)
log.Print("--------------------------")
log.Print("Reported error: ", err)
log.Print("Account Acct: ", reportpost.Account.Acct)
log.Print("Account Avatar: ", reportpost.Account.Avatar)
log.Print("Account Avatar len: ", len(reportpost.Account.Avatar))
log.Print("Account Bot: ", reportpost.Account.Bot)
log.Print("Account Created_at: ", reportpost.Account.Created_at)
log.Print("Account Display: ", reportpost.Account.Display_name)
log.Print("Account URL: ", reportpost.Account.Url)
log.Print(reportpost)
log.Print("--------------------------")
log.Fatal("Unable to write record to database")
}
// Insert new post if new
_, err = conn.Exec(context.Background(), "INSERT INTO posts (uri, content, created_at, normalized, account_id, posthash) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (posthash) DO NOTHING", reportpost.Uri, reportpost.Content, reportpost.Created_at, reportpost.normalized, accountid, reportpost.posthash)
if err != nil { // For now I want to know why this failed.
log.Print("Second ", err)
log.Print("--------------------------")
log.Print("Reported error: ", err)
log.Print("Uri: ", reportpost.Uri)
log.Print("Content: ", reportpost.Content)
log.Print("Created_at: ", reportpost.Created_at)
log.Print("normalized: ", reportpost.normalized)
log.Print("account_id", accountid)
log.Print("posthash: ", reportpost.posthash)
log.Print("--------------------------")
log.Fatal("Unable to write record to database")
}
}
func get_db_pool() (*pgxpool.Pool) {
// Setup Database
db_uri := fmt.Sprintf("postgres://%s:%s@%s:%d/fedilogue", settings.Database.Username, settings.Database.Password, settings.Database.Host, settings.Database.Port)
pool, err := pgxpool.Connect(context.Background(), db_uri)
if err != nil {
log.Fatal("Unable to connect to database:", err)
}
return pool
}