isl-api/Services/PowerItemService.go
Annika Merris d4b2d5fefb Switched From httprouter to chi
I believe all functionality works properly
2024-02-07 19:15:25 -05:00

93 lines
2.7 KiB
Go

package Services
import (
"context"
"forgejo.merr.is/annika/isl-api/Entities"
"forgejo.merr.is/annika/isl-api/sql/powerItem"
"github.com/jackc/pgtype"
)
type PowerItemService struct {
querier *powerItem.DBQuerier
context context.Context
}
func NewPowerItemService(querier *powerItem.DBQuerier) *PowerItemService {
return &PowerItemService{
querier: querier,
context: context.Background(),
}
}
func (p *PowerItemService) GetAll() ([]Entities.PowerItem, error) {
rows, err := p.querier.GetAllItems(p.context)
if err != nil {
return []Entities.PowerItem{}, err
}
var powerItems []Entities.PowerItem
for _, sqlItem := range rows {
powerItems = append(powerItems, Entities.FromGetAllItemsRow(sqlItem))
}
return powerItems, nil
}
func (p *PowerItemService) GetAllByType(itemType int) ([]Entities.PowerItem, error) {
rows, err := p.querier.GetAllByType(p.context, int32(itemType))
if err != nil {
return []Entities.PowerItem{}, err
}
var powerItems []Entities.PowerItem
for _, sqlItem := range rows {
powerItems = append(powerItems, Entities.FromGetAllItemsByTypeRow(sqlItem))
}
return powerItems, nil
}
func (p *PowerItemService) Add(newItem Entities.PowerItem) (Entities.PowerItem, error) {
sqlItem := powerItem.AddNewItemWithIDParams{
ID: newItem.ID,
ItemType: newItem.ItemType,
IconUrl: newItem.IconURL,
ItemName: newItem.ItemName,
MinItemPower: newItem.MinItemPower,
MaxItemPower: newItem.MaxItemPower,
Rarity: newItem.Rarity,
Origin: newItem.Origin,
Tooltip: newItem.Tooltip,
IsEventItem: newItem.IsEventItem,
}
row, err := p.querier.AddNewItemWithID(p.context, powerItem.AddNewItemWithIDParams(sqlItem))
if err != nil {
return Entities.PowerItem{}, err
}
return Entities.FromAddNewItemWithIDParams(row), nil
}
func (p *PowerItemService) AddMultipile(newItems map[string]Entities.PowerItem, itemType int32) ([]Entities.PowerItem, []error) {
var errors []error
var addedItems []Entities.PowerItem
for key, value := range newItems {
id := pgtype.UUID{}
id.Set(key)
newItem := powerItem.AddNewItemWithIDParams{
ID: id,
ItemType: itemType,
IconUrl: value.IconURL,
ItemName: value.ItemName,
MinItemPower: value.MinItemPower,
MaxItemPower: value.MaxItemPower,
Rarity: value.Rarity,
Origin: value.Origin,
Tooltip: value.Tooltip,
IsEventItem: value.IsEventItem,
}
row, err := p.querier.AddNewItemWithID(p.context, powerItem.AddNewItemWithIDParams(newItem))
if err != nil {
errors = append(errors, err)
continue
}
addedItems = append(addedItems, Entities.FromAddNewItemWithIDParams(row))
}
return addedItems, errors
}