chore(release): 0.3.0
[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.requirements,
14                 i.profession,
15                 i.boosts,
16                 i.maxAp,
17                 i.currentAp,
18                 e.equipment_slot,
19                 e.item_id is not null as is_equipped 
20                 from inventory i 
21                 join equipped e on e.item_id = i.item_id 
22                 where i.player_id = ?
23                 `, [
24                   playerId
25                 ]);
26 }
27
28 export async function equip(player_id: string, item: InventoryItem, desiredSlot: EquipmentSlot) {
29   return db('equipped').insert({
30     player_id,
31     item_id: item.item_id,
32     type: item.type,
33     equipment_slot: desiredSlot
34   });
35 }
36
37 export async function unequip(player_id: string, item_id: string) {
38   return db('equipped').where({
39     player_id,
40     item_id
41   }).delete();
42 }
43
44 export async function unequipItems(player_id: string, item_ids: string[]) {
45   return db('equipped').where({
46     player_id
47   }).whereIn('item_id', item_ids).delete();
48 }