init
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
package transformer
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/contract"
|
||||
"math"
|
||||
)
|
||||
|
||||
func PaginationToRequest(page, limit int) (int, int) {
|
||||
if page < 1 {
|
||||
page = 1
|
||||
}
|
||||
if limit < 1 {
|
||||
limit = 10
|
||||
}
|
||||
if limit > 100 {
|
||||
limit = 100
|
||||
}
|
||||
return page, limit
|
||||
}
|
||||
|
||||
func CreatePaginationResponse(totalCount, page, limit int) contract.PaginationResponse {
|
||||
totalPages := int(math.Ceil(float64(totalCount) / float64(limit)))
|
||||
if totalPages < 1 {
|
||||
totalPages = 1
|
||||
}
|
||||
|
||||
return contract.PaginationResponse{
|
||||
TotalCount: totalCount,
|
||||
Page: page,
|
||||
Limit: limit,
|
||||
TotalPages: totalPages,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateListUsersResponse(users []contract.UserResponse, totalCount, page, limit int) *contract.ListUsersResponse {
|
||||
pagination := CreatePaginationResponse(totalCount, page, limit)
|
||||
return &contract.ListUsersResponse{
|
||||
Users: users,
|
||||
Pagination: pagination,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateListOrganizationsResponse(orgs []contract.OrganizationResponse, totalCount, page, limit int) *contract.ListOrganizationsResponse {
|
||||
pagination := CreatePaginationResponse(totalCount, page, limit)
|
||||
return &contract.ListOrganizationsResponse{
|
||||
Organizations: orgs,
|
||||
TotalCount: pagination.TotalCount,
|
||||
Page: pagination.Page,
|
||||
Limit: pagination.Limit,
|
||||
TotalPages: pagination.TotalPages,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateListOutletsResponse(outlets []contract.OutletResponse, totalCount, page, limit int) *contract.ListOutletsResponse {
|
||||
pagination := CreatePaginationResponse(totalCount, page, limit)
|
||||
return &contract.ListOutletsResponse{
|
||||
Outlets: outlets,
|
||||
TotalCount: pagination.TotalCount,
|
||||
Page: pagination.Page,
|
||||
Limit: pagination.Limit,
|
||||
TotalPages: pagination.TotalPages,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateListOrdersResponse(orders []contract.OrderResponse, totalCount, page, limit int) *contract.ListOrdersResponse {
|
||||
pagination := CreatePaginationResponse(totalCount, page, limit)
|
||||
return &contract.ListOrdersResponse{
|
||||
Orders: orders,
|
||||
TotalCount: pagination.TotalCount,
|
||||
Page: pagination.Page,
|
||||
Limit: pagination.Limit,
|
||||
TotalPages: pagination.TotalPages,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateListProductsResponse(products []contract.ProductResponse, totalCount, page, limit int) *contract.ListProductsResponse {
|
||||
pagination := CreatePaginationResponse(totalCount, page, limit)
|
||||
return &contract.ListProductsResponse{
|
||||
Products: products,
|
||||
TotalCount: pagination.TotalCount,
|
||||
Page: pagination.Page,
|
||||
Limit: pagination.Limit,
|
||||
TotalPages: pagination.TotalPages,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateErrorResponse(message string, code int) *contract.ErrorResponse {
|
||||
return &contract.ErrorResponse{
|
||||
Error: "error",
|
||||
Message: message,
|
||||
Code: code,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateValidationErrorResponse(message string, details map[string]string) *contract.ValidationErrorResponse {
|
||||
return &contract.ValidationErrorResponse{
|
||||
Error: "validation_error",
|
||||
Message: message,
|
||||
Details: details,
|
||||
Code: 400,
|
||||
}
|
||||
}
|
||||
|
||||
func CreateSuccessResponse(message string, data interface{}) *contract.SuccessResponse {
|
||||
return &contract.SuccessResponse{
|
||||
Message: message,
|
||||
Data: data,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user