1 import {InventoryItem, ShopItem} from "../shared/inventory";
2 import { v4 as uuid } from 'uuid';
3 import { db} from './lib/db';
4 import {EquippedItemDetails} from "../shared/equipped";
7 export async function addInventoryItem(playerId: string, item: ShopItem) {
8 const inventoryItem: InventoryItem = {
13 equipment_slot: item.equipment_slot,
16 profession: item.profession,
18 level: item.requirements.level,
19 strength: item.requirements.strength,
20 constitution: item.requirements.constitution,
21 dexterity: item.requirements.dexterity,
22 intelligence: item.requirements.intelligence
25 strength: item.boosts.strength,
26 constitution: item.boosts.constitution,
27 dexterity: item.boosts.dexterity,
28 intelligence: item.boosts.intelligence,
29 damage: item.boosts.damage
32 currentAp: item.currentAp,
33 affectedSkills: item.affectedSkills
35 return db('inventory').insert(inventoryItem);
38 export async function getInventory(player_id: string): Promise<EquippedItemDetails[]> {
39 const res = await db.raw(`
41 coalesce(e.equipment_slot, i.equipment_slot) as equipment_slot,
42 e.item_id is not null as is_equipped
44 left outer join equipped e on e.item_id = i.item_id
50 return res.rows.map(row => {
51 row.affectedSkills = JSON.parse(row.affectedSkills);
56 export async function getInventoryItem(player_id: string, item_id: string): Promise<InventoryItem> {
57 return db.select('*').from<InventoryItem>('inventory').where({
63 export async function getEquippedItems(player_id: string): Promise<EquippedItemDetails[]> {
64 const res = await db.raw(`
65 select i.*, e.equipment_slot, true as is_equipped
67 join equipped e on e.item_id = i.item_id
71 return res.rows.map(row => {
72 row.affectedSkills = JSON.parse(row.affectedSkills);
77 export async function updateAp(player_id: string, item_id: string, currentAp: number, maxAp: number) {
78 return db('inventory').update({
87 export async function deleteInventoryItem(player_id: string, item_id: string) {
88 await db('equipped').where({
93 await db('inventory').where({