Farhan Khan
a50916eb36
some web work lost track of what's going on and I'm not accountable to anyone...so screw it
69 lines
2.7 KiB
Go
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
|
|
}
|