Compare commits
4 Commits
68bce99e1d
...
0388df48f5
| Author | SHA1 | Date | |
|---|---|---|---|
| 0388df48f5 | |||
| 4f2c213bc6 | |||
| 2a6380f0a5 | |||
| d0f54513d1 |
33
api/user/handle.go
Normal file
33
api/user/handle.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package api_user
|
||||
|
||||
import (
|
||||
"git.oblat.lv/alex/triggerssmith/internal/config"
|
||||
"git.oblat.lv/alex/triggerssmith/internal/user"
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
type userHandler struct {
|
||||
cfg *config.Config
|
||||
a *user.Service
|
||||
}
|
||||
|
||||
func MustRoute(config *config.Config, userService *user.Service) func(chi.Router) {
|
||||
if config == nil {
|
||||
panic("config is nil")
|
||||
}
|
||||
if userService == nil {
|
||||
panic("userService is nil")
|
||||
}
|
||||
h := &userHandler{
|
||||
cfg: config,
|
||||
a: userService,
|
||||
}
|
||||
|
||||
return func(r chi.Router) {
|
||||
r.Get("/", h.getUsers) // /users
|
||||
r.Get("/{userId}", h.GetUser) // /users/{userId}
|
||||
r.Post("/", h.createUser) // /users
|
||||
r.Patch("/{userId}", h.updateUser) // /users/{userId}
|
||||
r.Delete("/{userId}", h.deleteUser) // /users/{userId}
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,15 @@ func (s *GormUserStore) GetBy(by, value string) (*User, error) {
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (s *GormUserStore) GetUsers() (*Users, error) {
|
||||
var users Users
|
||||
err := s.db.Omit("password").Find(&users).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &users, nil
|
||||
}
|
||||
|
||||
func (s *GormUserStore) Update(user *User) error {
|
||||
return s.db.Save(user).Error
|
||||
}
|
||||
|
||||
@@ -11,3 +11,5 @@ type User struct {
|
||||
Password string `gorm:"not null"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||||
}
|
||||
|
||||
type Users []User
|
||||
|
||||
@@ -42,6 +42,13 @@ func (s *Service) Create(user *User) error {
|
||||
return s.store.Create(user)
|
||||
}
|
||||
|
||||
func (s *Service) GetUsers() (Users, error) {
|
||||
if !s.isInitialized() {
|
||||
return nil, fmt.Errorf("user service is not initialized")
|
||||
}
|
||||
return s.store.GetUsers()
|
||||
}
|
||||
|
||||
func (s *Service) GetBy(by, value string) (*User, error) {
|
||||
if !s.isInitialized() {
|
||||
return nil, fmt.Errorf("user service is not initialized")
|
||||
|
||||
@@ -3,6 +3,7 @@ package user
|
||||
type UserCRUD interface {
|
||||
Create(user *User) error
|
||||
GetBy(by, value string) (*User, error)
|
||||
GetUsers() (*Users, error)
|
||||
Update(user *User) error
|
||||
Delete(id int64) error
|
||||
|
||||
|
||||
Reference in New Issue
Block a user