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
|
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 {
|
func (s *GormUserStore) Update(user *User) error {
|
||||||
return s.db.Save(user).Error
|
return s.db.Save(user).Error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,3 +11,5 @@ type User struct {
|
|||||||
Password string `gorm:"not null"`
|
Password string `gorm:"not null"`
|
||||||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Users []User
|
||||||
|
|||||||
@@ -42,6 +42,13 @@ func (s *Service) Create(user *User) error {
|
|||||||
return s.store.Create(user)
|
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) {
|
func (s *Service) GetBy(by, value string) (*User, error) {
|
||||||
if !s.isInitialized() {
|
if !s.isInitialized() {
|
||||||
return nil, fmt.Errorf("user service is not initialized")
|
return nil, fmt.Errorf("user service is not initialized")
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package user
|
|||||||
type UserCRUD interface {
|
type UserCRUD interface {
|
||||||
Create(user *User) error
|
Create(user *User) error
|
||||||
GetBy(by, value string) (*User, error)
|
GetBy(by, value string) (*User, error)
|
||||||
|
GetUsers() (*Users, error)
|
||||||
Update(user *User) error
|
Update(user *User) error
|
||||||
Delete(id int64) error
|
Delete(id int64) error
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user