summaryrefslogtreecommitdiff
path: root/database/database.go
diff options
context:
space:
mode:
Diffstat (limited to 'database/database.go')
-rw-r--r--database/database.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go
new file mode 100644
index 0000000..cc3473d
--- /dev/null
+++ b/database/database.go
@@ -0,0 +1,39 @@
+// Package database provides functions and structs to interact with the
+// postgres database
+package database
+
+import (
+ "context"
+ "log"
+ "os"
+
+ "github.com/golang-migrate/migrate/v4"
+ _ "github.com/golang-migrate/migrate/v4/database/postgres"
+ _ "github.com/golang-migrate/migrate/v4/source/file"
+ "github.com/jackc/pgx/v5/pgxpool"
+)
+
+var DB *pgxpool.Pool
+
+func ConnectDB() {
+ url := os.Getenv("POSTGRES_URL")
+ var err error
+
+ DB, err = pgxpool.New(context.Background(), url)
+
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ runMigrations()
+
+ log.Println("Successfully connected to database")
+}
+
+func runMigrations() {
+ m, err := migrate.New("file://./migrations", os.Getenv("POSTGRES_URL"))
+ if err != nil {
+ log.Fatal(err)
+ }
+ m.Steps(2)
+}