fixes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
func Connect(cfg config.Config) *gorm.DB {
|
||||
@@ -74,7 +76,7 @@ func ensureDefaultAdmin(db *gorm.DB, cfg config.Config) {
|
||||
return
|
||||
}
|
||||
|
||||
if err != gorm.ErrRecordNotFound {
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
log.Fatalf("failed to check default admin user: %v", err)
|
||||
}
|
||||
|
||||
@@ -88,7 +90,20 @@ func ensureDefaultAdmin(db *gorm.DB, cfg config.Config) {
|
||||
PasswordHash: string(passwordHash),
|
||||
IsAdmin: true,
|
||||
}
|
||||
if err := db.Create(&user).Error; err != nil {
|
||||
if err := db.Clauses(clause.OnConflict{
|
||||
Columns: []clause.Column{{Name: "email"}},
|
||||
DoNothing: true,
|
||||
}).Create(&user).Error; err != nil {
|
||||
log.Fatalf("failed to create default admin user: %v", err)
|
||||
}
|
||||
|
||||
if err := db.Where("email = ?", email).First(&user).Error; err != nil {
|
||||
log.Fatalf("failed to load default admin user after bootstrap: %v", err)
|
||||
}
|
||||
|
||||
if !user.IsAdmin {
|
||||
if err := db.Model(&user).Update("is_admin", true).Error; err != nil {
|
||||
log.Fatalf("failed to ensure default admin privileges: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
@@ -17,7 +18,10 @@ type User struct {
|
||||
}
|
||||
|
||||
func (u *User) AfterCreate(tx *gorm.DB) error {
|
||||
return tx.FirstOrCreate(&UserSocialRating{}, UserSocialRating{
|
||||
UserID: u.ID,
|
||||
}).Error
|
||||
rating := UserSocialRating{UserID: u.ID}
|
||||
|
||||
return tx.
|
||||
Omit(clause.Associations).
|
||||
Where("user_id = ?", u.ID).
|
||||
FirstOrCreate(&rating).Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user