Compare commits

...

4 Commits

Author SHA1 Message Date
0388df48f5 add method GetUsers, and array type Users -> []User 2026-01-08 20:49:28 +02:00
4f2c213bc6 add type Users [[]User] 2026-01-08 20:37:10 +02:00
2a6380f0a5 fix createUser name 2026-01-07 21:18:18 +02:00
d0f54513d1 add api/user MustRoute method 2026-01-07 21:03:03 +02:00
5 changed files with 52 additions and 0 deletions

33
api/user/handle.go Normal file
View 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}
}
}

View File

@@ -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
}

View File

@@ -11,3 +11,5 @@ type User struct {
Password string `gorm:"not null"`
DeletedAt gorm.DeletedAt `gorm:"index"`
}
type Users []User

View File

@@ -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")

View File

@@ -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