2024-01-26 17:11:42 -05:00
|
|
|
package Services
|
|
|
|
|
|
2024-01-28 13:57:25 -05:00
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
2024-02-02 11:15:22 -05:00
|
|
|
"forgejo.merr.is/annika/isl-api/Types"
|
|
|
|
|
"forgejo.merr.is/annika/isl-api/sql/powerItem"
|
2024-01-28 13:57:25 -05:00
|
|
|
"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() ([]Types.PowerItem, error) {
|
|
|
|
|
rows, err := p.querier.GetAllItems(p.context)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return []Types.PowerItem{}, err
|
|
|
|
|
}
|
|
|
|
|
var powerItems []Types.PowerItem
|
|
|
|
|
for _, sqlItem := range rows {
|
|
|
|
|
powerItems = append(powerItems, Types.FromGetAllItemsRow(sqlItem))
|
|
|
|
|
}
|
|
|
|
|
return powerItems, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *PowerItemService) GetAllByType(itemType int) ([]Types.PowerItem, error) {
|
|
|
|
|
rows, err := p.querier.GetAllByType(p.context, int32(itemType))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return []Types.PowerItem{}, err
|
|
|
|
|
}
|
|
|
|
|
var powerItems []Types.PowerItem
|
|
|
|
|
for _, sqlItem := range rows {
|
|
|
|
|
powerItems = append(powerItems, Types.FromGetAllItemsByTypeRow(sqlItem))
|
|
|
|
|
}
|
|
|
|
|
return powerItems, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *PowerItemService) Add(newItem Types.PowerItem) (Types.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 Types.PowerItem{}, err
|
|
|
|
|
}
|
|
|
|
|
return Types.FromAddNewItemWithIDParams(row), nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *PowerItemService) AddMultipile(newItems map[string]Types.PowerItem, itemType int32) ([]Types.PowerItem, []error) {
|
|
|
|
|
var errors []error
|
|
|
|
|
var addedItems []Types.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, Types.FromAddNewItemWithIDParams(row))
|
|
|
|
|
}
|
|
|
|
|
return addedItems, errors
|
|
|
|
|
}
|