aboutsummaryrefslogtreecommitdiff
path: root/src/db/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/db.go')
-rw-r--r--src/db/db.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/db/db.go b/src/db/db.go
index 2b72382..6f617c2 100644
--- a/src/db/db.go
+++ b/src/db/db.go
@@ -2,8 +2,11 @@ package db
import (
"context"
+ "fmt"
"log"
+ "strings"
+ "github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool"
"gitlab.com/alexkavon/newsstand/src/conf"
@@ -18,7 +21,6 @@ func NewDb(config *conf.Conf) *Database {
if err != nil {
log.Fatal(err)
}
- defer pool.Close()
var testquery string
err = pool.QueryRow(context.Background(), "select 'Hello, PostgreSQL!'").Scan(&testquery)
@@ -30,3 +32,29 @@ func NewDb(config *conf.Conf) *Database {
p: pool,
}
}
+
+func (d *Database) InsertTable(table string, columns []string, values pgx.NamedArgs) error {
+ columnstr := stringifyColumns(columns, "")
+ valuesstr := stringifyColumns(columns, "@")
+ query := fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s) RETURNING *", table, columnstr, valuesstr)
+ log.Println(query, values)
+ ctx := context.Background()
+ row, err := d.p.Exec(ctx, query, values)
+ if err != nil {
+ return err
+ }
+ log.Println("Row", row)
+ return nil
+}
+
+func (d *Database) Close() {
+ d.p.Close()
+}
+
+func stringifyColumns(columns []string, prefix string) string {
+ ncolumns := []string{}
+ for _, v := range columns {
+ ncolumns = append(ncolumns, fmt.Sprintf("%s%s", prefix, v))
+ }
+ return strings.Join(ncolumns, ", ")
+}