58 lines
1.7 KiB
Go
58 lines
1.7 KiB
Go
|
package services
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"relynolli-server/internal"
|
||
|
"relynolli-server/models"
|
||
|
)
|
||
|
|
||
|
func retrieveItems(stmt string, structure interface{}) {
|
||
|
db := internal.InitDatabase()
|
||
|
db.FetchRows(stmt, structure)
|
||
|
}
|
||
|
|
||
|
func retrieveCatalogItems(stmt string) []models.CatalogStructWeb {
|
||
|
var catalogList []models.CatalogStruct
|
||
|
var returnedList []models.CatalogStructWeb
|
||
|
|
||
|
retrieveItems(stmt, &catalogList)
|
||
|
for _, item := range catalogList {
|
||
|
itemProd := models.CatalogStructWeb{
|
||
|
Id: item.Id,
|
||
|
Code: item.Code,
|
||
|
Name: item.Name,
|
||
|
IsActive: item.IsActive,
|
||
|
DetailText: item.DetailText,
|
||
|
AvailableQuantity: item.AvailableQuantity,
|
||
|
}
|
||
|
json.Unmarshal(item.Price, &itemProd.Price)
|
||
|
json.Unmarshal(item.Properties, &itemProd.Properties)
|
||
|
returnedList = append(returnedList, itemProd)
|
||
|
}
|
||
|
return returnedList
|
||
|
}
|
||
|
|
||
|
func GetCatalogItems(limit int, offset int) []models.CatalogStructWeb {
|
||
|
stmt := fmt.Sprintf("select * from api_catalog order by id DESC limit %d offset %d;", limit, offset)
|
||
|
return retrieveCatalogItems(stmt)
|
||
|
}
|
||
|
|
||
|
func GetCatalogItem(code string) (models.CatalogStructWeb, error) {
|
||
|
stmt := fmt.Sprintf("select * from api_catalog where code = '%s';", code)
|
||
|
items := retrieveCatalogItems(stmt)
|
||
|
if len(items) == 0 {
|
||
|
return models.CatalogStructWeb{}, fmt.Errorf("Not founded catalog item with given code")
|
||
|
}
|
||
|
return retrieveCatalogItems(stmt)[0], nil
|
||
|
}
|
||
|
|
||
|
func GetCatalogItemById(id int) (models.CatalogStructWeb, error) {
|
||
|
stmt := fmt.Sprintf("select * from api_catalog where id = %d;", id)
|
||
|
items := retrieveCatalogItems(stmt)
|
||
|
if len(items) == 0 {
|
||
|
return models.CatalogStructWeb{}, fmt.Errorf("Not founded catalog item with given code")
|
||
|
}
|
||
|
return retrieveCatalogItems(stmt)[0], nil
|
||
|
}
|