twitch-clone/pkg/database/connection.go

55 lines
959 B
Go

package database
import (
"log"
"twitch-clone/pkg/models"
"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 := "host=localhost user=postgres password=postgres dbname=postgres port=5432 sslmode=disable"
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.AutoMigrate(&models.User{})
DB = Dbinstance{
Db: db,
Snowflake: node,
}
}
func Db() *gorm.DB {
return DB.Db
}
func GetID() int64 {
return DB.Snowflake.Generate().Int64()
}