Add backend foundation and config-driven workbench
This commit is contained in:
43
backend/internal/service/me_service.go
Normal file
43
backend/internal/service/me_service.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"cmr-backend/internal/apperr"
|
||||
"cmr-backend/internal/store/postgres"
|
||||
)
|
||||
|
||||
type MeService struct {
|
||||
store *postgres.Store
|
||||
}
|
||||
|
||||
type MeResult struct {
|
||||
ID string `json:"id"`
|
||||
PublicID string `json:"publicId"`
|
||||
Status string `json:"status"`
|
||||
Nickname *string `json:"nickname,omitempty"`
|
||||
AvatarURL *string `json:"avatarUrl,omitempty"`
|
||||
}
|
||||
|
||||
func NewMeService(store *postgres.Store) *MeService {
|
||||
return &MeService{store: store}
|
||||
}
|
||||
|
||||
func (s *MeService) GetMe(ctx context.Context, userID string) (*MeResult, error) {
|
||||
user, err := s.store.GetUserByID(ctx, s.store.Pool(), userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if user == nil {
|
||||
return nil, apperr.New(http.StatusNotFound, "user_not_found", "user not found")
|
||||
}
|
||||
|
||||
return &MeResult{
|
||||
ID: user.ID,
|
||||
PublicID: user.PublicID,
|
||||
Status: user.Status,
|
||||
Nickname: user.Nickname,
|
||||
AvatarURL: user.AvatarURL,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user