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,
30 damage_mitigation: item.boosts.damage_mitigation,
33 currentAp: item.currentAp,
34 affectedSkills: item.affectedSkills
36 return db('inventory').insert(inventoryItem);
39 export async function getInventory(player_id: string): Promise<EquippedItemDetails[]> {
40 const res = await db.raw(`
42 coalesce(e.equipment_slot, i.equipment_slot) as equipment_slot,
43 e.item_id is not null as is_equipped
45 left outer join equipped e on e.item_id = i.item_id
51 return res.rows.map(row => {
52 row.affectedSkills = JSON.parse(row.affectedSkills);
57 export async function getInventoryItem(player_id: string, item_id: string): Promise<InventoryItem> {
58 return db.select('*').from<InventoryItem>('inventory').where({
64 export async function getEquippedItems(player_id: string): Promise<EquippedItemDetails[]> {
65 const res = await db.raw(`
66 select i.*, e.equipment_slot, true as is_equipped
68 join equipped e on e.item_id = i.item_id
72 return res.rows.map(row => {
73 row.affectedSkills = JSON.parse(row.affectedSkills);
78 export async function updateAp(player_id: string, item_id: string, currentAp: number, maxAp: number) {
79 return db('inventory').update({
88 export async function deleteInventoryItem(player_id: string, item_id: string) {
89 await db('equipped').where({
94 await db('inventory').where({