1 import {InventoryItem, ShopEquipment} 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: ShopEquipment) {
8 const inventoryItem: InventoryItem = {
13 equipment_slot: item.equipment_slot,
16 profession: item.profession,
19 level: item.requirements.level,
20 strength: item.requirements.strength,
21 constitution: item.requirements.constitution,
22 dexterity: item.requirements.dexterity,
23 intelligence: item.requirements.intelligence
26 strength: item.boosts.strength,
27 constitution: item.boosts.constitution,
28 dexterity: item.boosts.dexterity,
29 intelligence: item.boosts.intelligence,
30 damage: item.boosts.damage,
31 damage_mitigation: item.boosts.damage_mitigation,
34 currentAp: item.currentAp,
35 affectedSkills: item.affectedSkills
37 return db('inventory').insert(inventoryItem);
40 export async function getInventory(player_id: string): Promise<EquippedItemDetails[]> {
41 const res = await db.raw(`
43 coalesce(e.equipment_slot, i.equipment_slot) as equipment_slot,
44 e.item_id is not null as is_equipped
46 left outer join equipped e on e.item_id = i.item_id
52 return res.rows.map(row => {
53 row.affectedSkills = JSON.parse(row.affectedSkills);
58 export async function getInventoryItem(player_id: string, item_id: string): Promise<InventoryItem> {
59 return db.select('*').from<InventoryItem>('inventory').where({
65 export async function getEquippedItems(player_id: string): Promise<EquippedItemDetails[]> {
66 const res = await db.raw(`
67 select i.*, e.equipment_slot, true as is_equipped
69 join equipped e on e.item_id = i.item_id
73 return res.rows.map(row => {
74 row.affectedSkills = JSON.parse(row.affectedSkills);
79 export async function updateAp(player_id: string, item_id: string, currentAp: number, maxAp: number) {
80 return db('inventory').update({
89 export async function deleteInventoryItem(player_id: string, item_id: string) {
90 await db('equipped').where({
95 await db('inventory').where({