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()
 | 
						|
}
 |