refactor: reorganize packages into a domain-based layered structure
This commit is contained in:
7
internal/account/entity.go
Normal file
7
internal/account/entity.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package account
|
||||
|
||||
type User struct {
|
||||
ID uint `gorm:"primaryKey" json:"id"`
|
||||
Username string `gorm:"unique" json:"username"`
|
||||
Password string `json:"-"`
|
||||
}
|
||||
50
internal/account/repo.go
Normal file
50
internal/account/repo.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package account
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewUserRepository(db *gorm.DB) *UserRepository {
|
||||
return &UserRepository{db: db}
|
||||
}
|
||||
|
||||
func (ur *UserRepository) CreateUser(user *User) error {
|
||||
if err := ur.db.Create(user).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ur *UserRepository) RenameByID(id uint, newUsername string) error {
|
||||
if err := ur.db.Model(&User{}).Where("id = ?", id).Update("username", newUsername).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ur *UserRepository) ChangePassword(id uint, newPassword string) error {
|
||||
if err := ur.db.Model(&User{}).Where("id = ?", id).Update("password", newPassword).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ur *UserRepository) FindByID(id uint) (*User, error) {
|
||||
var user User
|
||||
if err := ur.db.First(&user, id).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (ur *UserRepository) FindByUsername(username string) (*User, error) {
|
||||
var user User
|
||||
if err := ur.db.Where("username = ?", username).First(&user).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &user, nil
|
||||
}
|
||||
46
internal/account/service.go
Normal file
46
internal/account/service.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package account
|
||||
|
||||
type UserService struct {
|
||||
userRepository *UserRepository
|
||||
}
|
||||
|
||||
func NewUserService(userRepository *UserRepository) *UserService {
|
||||
return &UserService{userRepository: userRepository}
|
||||
}
|
||||
|
||||
func (us *UserService) CreateUser(user *User) error {
|
||||
if err := us.userRepository.CreateUser(user); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (us *UserService) RenameByID(id uint, newUsername string) error {
|
||||
if err := us.userRepository.RenameByID(id, newUsername); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (us *UserService) ChangePassword(id uint, newPassword string) error {
|
||||
if err := us.userRepository.ChangePassword(id, newPassword); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (us *UserService) FindByID(id uint) (*User, error) {
|
||||
if user, err := us.userRepository.FindByID(id); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return user, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (us *UserService) FindByUsername(username string) (*User, error) {
|
||||
if user, err := us.userRepository.FindByUsername(username); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return user, nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user