Files
authorizer/server/db/db.go

65 lines
1.7 KiB
Go
Raw Normal View History

2021-07-12 23:52:16 +05:30
package db
import (
"log"
2021-07-23 21:57:44 +05:30
"github.com/authorizerdev/authorizer/server/constants"
"github.com/authorizerdev/authorizer/server/enum"
"github.com/google/uuid"
2021-07-12 23:52:16 +05:30
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/schema"
)
type Manager interface {
SaveUser(user User) (User, error)
UpdateUser(user User) (User, error)
2021-07-12 23:52:16 +05:30
GetUsers() ([]User, error)
GetUserByEmail(email string) (User, error)
GetUserByID(email string) (User, error)
UpdateVerificationTime(verifiedAt int64, id uuid.UUID) error
AddVerification(verification VerificationRequest) (VerificationRequest, error)
GetVerificationByToken(token string) (VerificationRequest, error)
DeleteToken(email string) error
GetVerificationRequests() ([]VerificationRequest, error)
GetVerificationByEmail(email string) (VerificationRequest, error)
2021-08-06 19:17:52 +05:30
DeleteUser(email string) error
SaveRoles(roles []Role) error
SaveSession(session Session) error
2021-07-12 23:52:16 +05:30
}
type manager struct {
db *gorm.DB
}
var Mgr Manager
2021-07-28 11:53:37 +05:30
func InitDB() {
2021-07-12 23:52:16 +05:30
var db *gorm.DB
var err error
ormConfig := &gorm.Config{
NamingStrategy: schema.NamingStrategy{
2021-07-23 21:57:44 +05:30
TablePrefix: "authorizer_",
2021-07-12 23:52:16 +05:30
},
}
2021-07-28 11:53:37 +05:30
if constants.DATABASE_TYPE == enum.Postgres.String() {
db, err = gorm.Open(postgres.Open(constants.DATABASE_URL), ormConfig)
2021-07-12 23:52:16 +05:30
}
2021-07-28 11:53:37 +05:30
if constants.DATABASE_TYPE == enum.Mysql.String() {
db, err = gorm.Open(mysql.Open(constants.DATABASE_URL), ormConfig)
2021-07-12 23:52:16 +05:30
}
2021-07-28 11:53:37 +05:30
if constants.DATABASE_TYPE == enum.Sqlite.String() {
db, err = gorm.Open(sqlite.Open(constants.DATABASE_URL), ormConfig)
2021-07-12 23:52:16 +05:30
}
if err != nil {
log.Fatal("Failed to init db:", err)
} else {
db.AutoMigrate(&User{}, &VerificationRequest{}, &Role{}, &Session{})
2021-07-12 23:52:16 +05:30
}
Mgr = &manager{db: db}
}