Jagerente / VRisingAcademySite

VRising Database
https://vrising-academy.info
0 stars 1 forks source link

Rework Spells & Items API #75

Closed Jagerente closed 2 years ago

Jagerente commented 2 years ago

Добавить к уже существующим эндпоинтам, которые выдают список Items и Spells структурированную выдачу:

Items

/item/list

Type1
|- Set1
|-- Item1
|-- Item2
|- Set2
|-- Item3
|-- Item4
Type2
|- Set3
|-- Item5
|-- Item6
|- Set4
|-- Item7
|-- Item8

Так же добавить промежуточную таблицу, которая будет связывать typeid и typetitle. Нужно для того, чтобы в выдаче выше мне слало typetitle, а не id и я мог автоматизировать выдачу вкладок.

id | title
1 | Weapon
2 | Armour

Spells

School1
|- Type1
|-- Spell1
|-- Spell2
|- Type2
|-- Spell3
|-- Spell4
School2
|- Type3
|-- Spell5
|-- Spell6
|- Type4
|-- Spell7
|-- Spell8
aelariane commented 2 years ago

Запушил. Создана табличка itemtypes без которой не будут работать итемы. Желательно её первой заполнять

insert into itemtypes(id, title) values
(1, 'Weapon'),
(2, 'Armour')

Менять в items ничего не нужно. Просто важно чтобы тип при добавлении итема соответствовал любому из таблицы itemtypes, так как теперь это внешний ключ на эту табличку (Из items к itemtypes)

Для группированного списка итемов:

/api/item/list

Для группированной выдачи спеллов. Старый эндпоинт list без изменений. Использовать стоит новый

/api/spell/grouplist

Для того чтобы получить список всех типов:

/api/item/types
Jagerente commented 2 years ago

@aelariane вот так должен выглядеть ответ items/grouped

[
{
  "id": 1,
  "name": "Weapon",
  "sets": [
    {
      "id": 1,
      "name": "Bone",
      "items": [
        {
          "id": 1,
          "name": "Bone Axes",
          "description": "loremipsum",
          "tier": 1,
          "type": {
            "id": 1,
            "name": "Armour"
          },
          "knowledgeid": null,
          "recipes": [
            {
              "id": 1,
              "station": "Workbench",
              "knowledgeid": null,
              "ingridients": [
                {
                  "id": 1,
                  "amount": 50
                }
              ],
              "results": [
                {
                  "id": 1,
                  "amount": 50
                }
              ]
            }
          ],
          "reagentFor": [
            1,
            2
          ],
          "tags": [
            "tag1",
            "tag2"
          ],
          "durability": 1000,
          "gearLevel": 27,
          "mainStat": 10,
          "bonusStats": [
            "bonus1",
            "bonus2"
          ],
          "set": {
            "id": 1,
            "name": "Bone",
            "description": "bonus1\nbonus2"
          },
          "slotId": 1,
          "locations": [
            {
              "id": 1,
              "name": "Horse Track",
              "description": "loremipsum",
              "region": "Dunley",
              "mapgenieId": 13287
            }
          ],
          "variants": [
            1,
            2,
            3
          ]
        }
      ]
    }
  ]
}
Jagerente commented 2 years ago

UPD: Сокращённый вариант

{
  "id": 1,
  "name": "Weapon",
  "sets": [
    {
      "id": 1,
      "name": "Bone",
      "items": [
        {
          "id": 1,
          "name": "Bone Axes",
          "description": "loremipsum",
          "tier": 1,
          "type": {
            "id": 1,
            "name": "Armour"
          },
          "knowledge": 1,
          "recipes": [1,2],
          "reagentFor": [
            1,
            2
          ],
          "tags": [
            "tag1",
            "tag2"
          ],
          "durability": 1000,
          "gearLevel": 27,
          "mainStat": 10,
          "bonusStats": [
            "bonus1",
            "bonus2"
          ],
          "set": 1,
          "slot": 1,
          "locations": [
            1,2,3
          ],
          "variants": [
            1,
            2,
            3
          ]
        }
      ]
    }
  ]
}
aelariane commented 2 years ago

Обновил эндпоинты item/grouplist и item/list

Пример выдачи item/grouplist image

Пример выдачи item/list image