twitch-clone/pkg/database/connection.go

52 lines
991 B
Go

package database
import (
"fmt"
"log"
"os"
"github.com/bwmarrin/snowflake"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type Dbinstance struct {
Db *gorm.DB
Snowflake *snowflake.Node
}
var DB Dbinstance
// connectDb
func ConnectDb() {
node, err := snowflake.NewNode(1)
if err != nil {
log.Fatal("Failed to setup snowflake generator. \n", err)
}
dsn := fmt.Sprintf("host=localhost user=%s password=%s dbname=%s port=5433 sslmode=disable", os.Getenv("POSTGRES_USER"), os.Getenv("POSTGRES_PASSWORD"), os.Getenv("POSTGRES_DB"))
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
log.Fatal("Failed to connect to database. \n", err)
}
log.Println("connected")
db.Logger = logger.Default.LogMode(logger.Info)
DB = Dbinstance{
Db: db,
Snowflake: node,
}
}
func Db() *gorm.DB {
return DB.Db
}
func GetID() int64 {
return DB.Snowflake.Generate().Int64()
}