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 }