update auth_schema.go
This commit is contained in:
1 parent
362a6d1041
commit
f17f1ecb17
1 file changed
+86
@@ -0,0 +1,86 @@
|
|||||||
|
package repository
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"esauth"
|
||||||
|
"fmt"
|
||||||
|
"math/rand/v2"
|
||||||
|
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AuthSchema struct {
|
||||||
|
db *gorm.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAuthSchema(db *gorm.DB) *AuthSchema {
|
||||||
|
return &AuthSchema{db: db}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) CreateUser(user *esauth.User) (int64, error) {
|
||||||
|
if user.Username != "" {
|
||||||
|
userF := esauth.User{}
|
||||||
|
err := r.db.Find(&userF, "username = ?", user.Username).Error
|
||||||
|
if (err == nil) && (userF.Id > 0) && (userF.Id != user.Id) {
|
||||||
|
logrus.Warnf("Same username USER: %d (%s) -> %s", userF.Id, user.FirstName, userF.Username)
|
||||||
|
user.Username += fmt.Sprintf("%d", (rand.IntN(999999) + 1))
|
||||||
|
return r.CreateUser(user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err := r.db.Create(&user).Error
|
||||||
|
return user.Id, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) SaveUser(user *esauth.User) (int64, error) {
|
||||||
|
if user.Username != "" {
|
||||||
|
userF := esauth.User{}
|
||||||
|
err := r.db.Find(&userF, "username = ?", user.Username).Error
|
||||||
|
if (err == nil) && (userF.Id >= 0) && (userF.Id != user.Id) {
|
||||||
|
return -1, errors.New("username already used")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err := r.db.Save(user).Error
|
||||||
|
return user.Id, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) GetUser(id int64) (esauth.User, error) {
|
||||||
|
user := esauth.User{}
|
||||||
|
err := r.db.Find(&user, "id = ?", id).Error
|
||||||
|
if user.Id == -1 {
|
||||||
|
err = fmt.Errorf("unknown user %d", id)
|
||||||
|
}
|
||||||
|
return user, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) FindUser(query, param string) (esauth.User, error) {
|
||||||
|
user := esauth.User{}
|
||||||
|
err := r.db.Find(&user, query, param).Error
|
||||||
|
return user, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) GetUsers(start, limit int) []int64 {
|
||||||
|
result := []esauth.User{}
|
||||||
|
r.db.Select("id").Limit(limit).Offset(start).Find(&result)
|
||||||
|
var ans = make([]int64, len(result))
|
||||||
|
for i, res := range result {
|
||||||
|
ans[i] = res.Id
|
||||||
|
}
|
||||||
|
return ans
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) GetUsersCount() int64 {
|
||||||
|
var count int64 = 0
|
||||||
|
r.db.Model(&esauth.User{}).Count(&count)
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r AuthSchema) DeleteUser(id int64) error {
|
||||||
|
user := esauth.User{}
|
||||||
|
err := r.db.Find(&user, "id = ?", id).Error
|
||||||
|
if user.Id == -1 {
|
||||||
|
err = fmt.Errorf("unknown user %d", id)
|
||||||
|
}
|
||||||
|
r.db.Delete(user)
|
||||||
|
return err
|
||||||
|
}
|
||||||
Reference in new issue
Block a user