chore(release): 0.0.3
[risinglegends.git] / src / server / equipment.ts
1 import {db} from "./lib/db";
2 import {EquippedItemDetails} from "../shared/equipped";
3 import {EquipmentSlot, InventoryItem} from "../shared/inventory";
4
5 export async function getEquippedItems(playerId: string): Promise<EquippedItemDetails[]> {
6   return db.raw<EquippedItemDetails[]>(`
7                 select i.player_id, 
8                 i.item_id,
9                 i.type,
10                 i.name,
11                 i.cost,
12                 i.count,
13                 i.requirement_level,
14                 i.requirement_strength,
15                 i.requirement_constitution,
16                 i.requirement_dexterity,
17                 i.requirement_intelligence,
18                 i.profession,
19                 i.boost_strength,
20                 i.boost_constitution,
21                 i.boost_dexterity,
22                 i.boost_damage,
23                 i.maxAp,
24                 i.currentAp,
25                 e.equipment_slot,
26                 e.item_id is not null as is_equipped 
27                 from inventory i 
28                 join equipped e on e.item_id = i.item_id 
29                 where i.player_id = ?
30                 `, [
31                   playerId
32                 ]);
33 }
34
35 export async function equip(player_id: string, item: InventoryItem, desiredSlot: EquipmentSlot) {
36   return db('equipped').insert({
37     player_id,
38     item_id: item.item_id,
39     type: item.type,
40     equipment_slot: desiredSlot
41   });
42 }
43
44 export async function unequip(player_id: string, item_id: string) {
45   return db('equipped').where({
46     player_id,
47     item_id
48   }).delete();
49 }