55 lines
959 B
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()
|
|
}
|