sonarqube-badges/store/db.go
2025-03-15 01:49:52 +01:00

51 lines
1.1 KiB
Go

package store
import (
"context"
"crypto/sha1"
"fmt"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"os"
"sonarqube-badge/config"
"sonarqube-badge/security/aes"
"time"
)
func CreateDatabase(ctx context.Context) context.Context {
cfg := ctx.Value("config").(config.Config)
db, err := gorm.Open(sqlite.Open(fmt.Sprintf("%s/sqbadge.db", cfg.DataPath)), &gorm.Config{})
if err != nil {
panic("failed to open database")
}
err = db.AutoMigrate(&Project{})
if err != nil {
panic("failed to migrate database Project")
}
err = db.AutoMigrate(&User{})
if err != nil {
panic("failed to migrate database User")
}
provideDefaultUser(cfg, db)
return context.WithValue(ctx, "db", db)
}
func provideDefaultUser(cfg config.Config, db *gorm.DB) {
password := aes.EncryptAES(cfg.Secret, time.Now().String())
sha1Hash := sha1.Sum([]byte(password))
user := User{
Username: "admin",
// Random Password
Password: fmt.Sprintf("%x", sha1Hash),
Email: "admin@example.com",
}
if db.First(&user).Error != nil {
_, _ = fmt.Fprintf(os.Stderr, "Default User: \n\t- %s\n\t- %s\n", user.Email, password)
db.Create(&user)
}
}