52 lines
991 B
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()
|
|
}
|