74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package profile
|
|
|
|
import (
|
|
"github.com/omnex/control-plane/api/internal/auth"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// GormStore : Store adossé à PostgreSQL via GORM.
|
|
type GormStore struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewGormStore(db *gorm.DB) *GormStore {
|
|
return &GormStore{db: db}
|
|
}
|
|
|
|
type Store interface {
|
|
UpdateUsername(id, newUsername string) (auth.User, error)
|
|
UpdatePassword(id, passwordHahs string) (auth.User, error)
|
|
GetTelegram(id string) (auth.User, error)
|
|
SetTelegram(id, telegram string) (auth.User, error)
|
|
}
|
|
|
|
func (s *GormStore) UpdateUsername(id, newUsername string) (auth.User, error) {
|
|
result := s.db.Model(&auth.User{}).
|
|
Where("id = ?", id).
|
|
Update("username", newUsername)
|
|
|
|
if result.Error != nil {
|
|
return auth.User{}, result.Error
|
|
}
|
|
|
|
var user auth.User
|
|
if err := s.db.First(&user, "id = ?", id).Error; err != nil {
|
|
return auth.User{}, err
|
|
}
|
|
|
|
return user, nil
|
|
}
|
|
|
|
func (s *GormStore) UpdatePassword(id, passwordHash string) (auth.User, error) {
|
|
result := s.db.Model(&auth.User{}).
|
|
Where("id = ?", id).
|
|
Update("password_hash", passwordHash)
|
|
if result.Error != nil {
|
|
return auth.User{}, result.Error
|
|
}
|
|
var user auth.User
|
|
if err := s.db.First(&user, "id = ?", id).Error; err != nil {
|
|
return auth.User{}, err
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func (s *GormStore) GetTelegram(id string) (auth.User, error) {
|
|
var user auth.User
|
|
if err := s.db.First(&user, "id = ?", id).Error; err != nil {
|
|
return auth.User{}, err
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func (s *GormStore) SetTelegram(id, telegram string) (auth.User, error) {
|
|
result := s.db.Model(&auth.User{}).Where("id = ?", id).Update("telegram", telegram)
|
|
if result.Error != nil {
|
|
return auth.User{}, result.Error
|
|
}
|
|
var user auth.User
|
|
if err := s.db.First(&user, "id = ?", id).Error; err != nil {
|
|
return auth.User{}, err
|
|
}
|
|
return user, nil
|
|
}
|