get merch methods
This commit is contained in:
parent
6be1cc79fa
commit
d58ad2970b
4 changed files with 165 additions and 30 deletions
|
|
@ -24,7 +24,8 @@ func (h *Handler) RegisterRoutes(r *gin.RouterGroup, authMW gin.HandlerFunc, ref
|
||||||
merchGroup := r.Group("/merch", authMW)
|
merchGroup := r.Group("/merch", authMW)
|
||||||
|
|
||||||
merchGroup.POST("/", h.controller.addMerch)
|
merchGroup.POST("/", h.controller.addMerch)
|
||||||
merchGroup.GET("/", h.controller.getMerch)
|
merchGroup.GET("/:uuid", h.controller.getSingleMerch)
|
||||||
|
merchGroup.GET("/", h.controller.getAllMerch)
|
||||||
merchGroup.PUT("/", h.controller.updateMerch)
|
merchGroup.PUT("/", h.controller.updateMerch)
|
||||||
merchGroup.DELETE("/", h.controller.deleteMerch)
|
merchGroup.DELETE("/", h.controller.deleteMerch)
|
||||||
|
|
||||||
|
|
@ -64,8 +65,64 @@ func (co *controller) addMerch(c *gin.Context) {
|
||||||
|
|
||||||
c.Status(http.StatusOK)
|
c.Status(http.StatusOK)
|
||||||
}
|
}
|
||||||
func (co *controller) getMerch(c *gin.Context) {
|
|
||||||
c.JSON(200, gin.H{"msg": "placeholder"})
|
// @Summary Получить всю информацию про мерч
|
||||||
|
// @Description Получить всю информацию про мерч по его uuid
|
||||||
|
// @Tags Merch
|
||||||
|
// @Security BearerAuth
|
||||||
|
// @Param uuid path string true "merch_uuid"
|
||||||
|
// @Success 200 {object} MerchDTO
|
||||||
|
// @Failure 400 {object} responses.ErrorResponse400
|
||||||
|
// @Failure 500 {object} responses.ErrorResponse500
|
||||||
|
// @Router /merch/{uuid} [get]
|
||||||
|
func (co *controller) getSingleMerch(c *gin.Context) {
|
||||||
|
merchUuid := c.Param("uuid")
|
||||||
|
if merchUuid == "" {
|
||||||
|
c.JSON(http.StatusBadRequest, responses.ErrorResponse400{Error: "MerchUuid is empty"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
userUuid, err := co.utils.GetUserUuidFromContext(c)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, responses.ErrorResponse500{Error: err.Error()})
|
||||||
|
log.WithError(err).Error("Merch | Failed to get user uuid from context")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := co.service.getSingleMerch(userUuid, merchUuid)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, responses.ErrorResponse500{Error: err.Error()})
|
||||||
|
log.WithError(err).Error("Merch | Failed to get single merch")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, response)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary Получить все записи мерча
|
||||||
|
// @Description Получить все записи мерча
|
||||||
|
// @Tags Merch
|
||||||
|
// @Security BearerAuth
|
||||||
|
// @Success 200 {array} ListResponse
|
||||||
|
// @Failure 400 {object} responses.ErrorResponse400
|
||||||
|
// @Failure 500 {object} responses.ErrorResponse500
|
||||||
|
// @Router /merch/{uuid} [get]
|
||||||
|
func (co *controller) getAllMerch(c *gin.Context) {
|
||||||
|
userUuid, err := co.utils.GetUserUuidFromContext(c)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, responses.ErrorResponse500{Error: err.Error()})
|
||||||
|
log.WithError(err).Error("Merch | Failed to get user uuid from context")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response, err := co.service.getAllMerch(userUuid)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, responses.ErrorResponse500{Error: err.Error()})
|
||||||
|
log.WithError(err).Error("Merch | Failed to get all merch")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (co *controller) updateMerch(c *gin.Context) {
|
func (co *controller) updateMerch(c *gin.Context) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
package merch
|
package merch
|
||||||
|
|
||||||
|
type merchBundle struct {
|
||||||
|
Merch
|
||||||
|
Surugaya
|
||||||
|
Mandarake
|
||||||
|
}
|
||||||
type MerchDTO struct {
|
type MerchDTO struct {
|
||||||
MerchUuid string `json:"merch_uuid"`
|
MerchUuid string `json:"merch_uuid"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
|
@ -15,3 +20,14 @@ type SurugayaDTO struct {
|
||||||
type MandarakeDTO struct {
|
type MandarakeDTO struct {
|
||||||
Link string `json:"link"`
|
Link string `json:"link"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SingleMerchResponse struct {
|
||||||
|
MerchUuid string `json:"merch_uuid"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Origins []any `json:"origins"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListResponse struct {
|
||||||
|
MerchUuid string `json:"merch_uuid"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,21 +13,62 @@ func NewRepo(db *gorm.DB) *Repo {
|
||||||
}
|
}
|
||||||
|
|
||||||
type repository interface {
|
type repository interface {
|
||||||
addMerch(merch Merch, surugaya Surugaya, mandarake Mandarake) error
|
addMerch(bundle merchBundle) error
|
||||||
|
getSingleMerch(userUuid, merchUuid string) (merchBundle, error)
|
||||||
|
getAllMerch(userUuid string) ([]ListResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Repo) addMerch(merch Merch, surugaya Surugaya, mandarake Mandarake) error {
|
func (r *Repo) addMerch(bundle merchBundle) error {
|
||||||
if err := r.db.Create(merch).Error; err != nil {
|
if err := r.db.Create(bundle.Merch).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := r.db.Create(surugaya).Error; err != nil {
|
if err := r.db.Create(bundle.Surugaya).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := r.db.Create(mandarake).Error; err != nil {
|
if err := r.db.Create(bundle.Mandarake).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Repo) getSingleMerch(userUuid, merchUuid string) (merchBundle, error) {
|
||||||
|
var merch Merch
|
||||||
|
if err := r.db.
|
||||||
|
Where("user_uuid = ?", userUuid).
|
||||||
|
Where("merch_uuid = ?", merchUuid).
|
||||||
|
Where("deleted_at IS NULL").
|
||||||
|
First(&merch).Error; err != nil {
|
||||||
|
return merchBundle{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var surugaya Surugaya
|
||||||
|
if err := r.db.
|
||||||
|
Where("merch_uuid = ?", merchUuid).
|
||||||
|
First(&surugaya).Error; err != nil {
|
||||||
|
return merchBundle{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var mandarake Mandarake
|
||||||
|
if err := r.db.
|
||||||
|
Where("merch_uuid = ?", merchUuid).
|
||||||
|
First(&mandarake).Error; err != nil {
|
||||||
|
return merchBundle{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return merchBundle{
|
||||||
|
Merch: merch,
|
||||||
|
Surugaya: surugaya,
|
||||||
|
Mandarake: mandarake,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Repo) getAllMerch(userUuid string) ([]ListResponse, error) {
|
||||||
|
var list []ListResponse
|
||||||
|
if err := r.db.Where("user_uuid = ?", userUuid).Find(&list).Error; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return list, nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,32 +19,53 @@ func newService(repo repository) *service {
|
||||||
func (s *service) addMerch(payload MerchDTO, userUuid string) error {
|
func (s *service) addMerch(payload MerchDTO, userUuid string) error {
|
||||||
merchUuid := uuid.NewString()
|
merchUuid := uuid.NewString()
|
||||||
|
|
||||||
merch := Merch{
|
bundle := merchBundle{
|
||||||
CreatedAt: time.Time{},
|
Merch{
|
||||||
UpdatedAt: sql.NullTime{Valid: false},
|
CreatedAt: time.Time{},
|
||||||
DeletedAt: sql.NullTime{Valid: false},
|
UpdatedAt: sql.NullTime{Valid: false},
|
||||||
MerchUuid: merchUuid,
|
DeletedAt: sql.NullTime{Valid: false},
|
||||||
UserUuid: userUuid,
|
MerchUuid: merchUuid,
|
||||||
Name: payload.Name,
|
UserUuid: userUuid,
|
||||||
}
|
Name: payload.Name,
|
||||||
|
},
|
||||||
|
|
||||||
surugaya := Surugaya{
|
Surugaya{
|
||||||
DeletedAt: sql.NullTime{},
|
DeletedAt: sql.NullTime{},
|
||||||
MerchUuid: merchUuid,
|
MerchUuid: merchUuid,
|
||||||
Link: payload.OriginSurugaya.Link,
|
Link: payload.OriginSurugaya.Link,
|
||||||
CookieValues: payload.OriginSurugaya.CookieValues,
|
CookieValues: payload.OriginSurugaya.CookieValues,
|
||||||
}
|
},
|
||||||
|
|
||||||
mandarake := Mandarake{
|
Mandarake{
|
||||||
DeletedAt: sql.NullTime{},
|
DeletedAt: sql.NullTime{},
|
||||||
MerchUuid: merchUuid,
|
MerchUuid: merchUuid,
|
||||||
Link: payload.OriginMandarake.Link,
|
Link: payload.OriginMandarake.Link,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
return s.repo.addMerch(bundle)
|
||||||
return s.repo.addMerch(merch, surugaya, mandarake)
|
|
||||||
}
|
}
|
||||||
func (s *service) getMerch() error {
|
|
||||||
return nil
|
func (s *service) getSingleMerch(userUuid, merchUuid string) (MerchDTO, error) {
|
||||||
|
bundle, err := s.repo.getSingleMerch(userUuid, merchUuid)
|
||||||
|
if err != nil {
|
||||||
|
return MerchDTO{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return MerchDTO{
|
||||||
|
MerchUuid: bundle.Merch.MerchUuid,
|
||||||
|
Name: bundle.Merch.Name,
|
||||||
|
OriginSurugaya: SurugayaDTO{
|
||||||
|
Link: bundle.Surugaya.Link,
|
||||||
|
CookieValues: bundle.Surugaya.CookieValues,
|
||||||
|
},
|
||||||
|
OriginMandarake: MandarakeDTO{
|
||||||
|
Link: bundle.Mandarake.Link,
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *service) getAllMerch(userUuid string) ([]ListResponse, error) {
|
||||||
|
return s.repo.getAllMerch(userUuid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *service) updateMerch() error {
|
func (s *service) updateMerch() error {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue