chore(release): 0.2.15
[risinglegends.git] / src / server / skills.ts
1 import {Skill, SkillID} from '../shared/skills';
2 import { db } from './lib/db';
3 import { each } from 'lodash';
4
5 export async function getPlayerSkills(playerId: string): Promise<Skill[]> {
6   return db.select('*').from<Skill>('player_skills').where({
7     player_id: playerId
8   });
9 }
10
11 export async function getPlayerSkillsAsObject(playerId: string): Promise<Map<SkillID, Skill>> {
12   const arr = await getPlayerSkills(playerId);
13
14   const skillMap = arr.reduce((acc, skill) => {
15     acc.set(skill.id, skill);
16     return acc;
17   }, new Map<SkillID, Skill>());
18
19
20   return skillMap;
21 }
22
23 export async function updatePlayerSkills(playerId: string, skills: Record<SkillID, number>) {
24
25   const sql = [];
26   each(skills, (val, skillId) => {
27     sql.push(`update player_skills set exp = exp + ${val} where id = '${skillId}' and player_id = '${playerId}'`);
28   });
29
30   if(sql.length) {
31     await db.raw(sql.join(';'));
32   }
33
34 }