wishli-api/api/presenter/wish-list.go
2025-03-23 20:05:51 +03:00

121 lines
3.0 KiB
Go

package presenter
import (
"wish-list-api/pkg/entities"
"time"
"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type WishList struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
Title string `json:"title"`
UserID string `json:"user_id"`
Description string `json:"description"`
IsPublic bool `json:"is_public"`
PhotoURL string `json:"photo_url"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type WishListItem struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
Title string `json:"title"`
URL string `json:"url"`
Cost float64 `json:"cost"`
WishListID string `json:"wish_list_id"`
Description string `json:"description"`
PhotoURL string `json:"photo_url"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type WishListResponse struct {
Status bool `json:"status"`
Data WishList `json:"data"`
Error *string `json:"error"`
}
type WishListsResponse struct {
Status bool `json:"status"`
Data []WishList `json:"data"`
Error *string `json:"error"`
}
type WishListItemResponse struct {
Status bool `json:"status"`
Data WishListItem `json:"data"`
Error *string `json:"error"`
}
type WishListItemsResponse struct {
Status bool `json:"status"`
Data []WishListItem `json:"data"`
Error *string `json:"error"`
}
func WishListSuccessResponse(data *entities.WishList) *fiber.Map {
id, _ := primitive.ObjectIDFromHex(data.ID)
wishList := WishList{
ID: id,
Title: data.Title,
UserID: data.UserID,
Description: data.Description,
IsPublic: data.IsPublic,
PhotoURL: data.PhotoURL,
CreatedAt: data.CreatedAt,
UpdatedAt: data.UpdatedAt,
}
return &fiber.Map{
"status": true,
"data": wishList,
"error": nil,
}
}
func WishListsSuccessResponse(data *[]WishList) *fiber.Map {
return &fiber.Map{
"status": true,
"data": data,
"error": nil,
}
}
func WishListItemSuccessResponse(data *entities.WishListItem) *fiber.Map {
id, _ := primitive.ObjectIDFromHex(data.ID)
wishListItem := WishListItem{
ID: id,
Title: data.Title,
URL: data.URL,
Cost: data.Cost,
WishListID: data.WishListID,
Description: data.Description,
PhotoURL: data.PhotoURL,
CreatedAt: data.CreatedAt,
UpdatedAt: data.UpdatedAt,
}
return &fiber.Map{
"status": true,
"data": wishListItem,
"error": nil,
}
}
func WishListItemsSuccessResponse(data *[]WishListItem) *fiber.Map {
return &fiber.Map{
"status": true,
"data": data,
"error": nil,
}
}
func WishListErrorResponse(err error) *fiber.Map {
return &fiber.Map{
"status": false,
"data": "",
"error": err.Error(),
}
}