-
Notifications
You must be signed in to change notification settings - Fork 0
/
weapon.controller.ts
52 lines (39 loc) · 1.28 KB
/
weapon.controller.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { WeaponAttributes, WeaponController, WeaponCreationAttributes } from "../@types/weapon.types";
import { Weapon } from "../models";
const create = async (weapon: WeaponCreationAttributes): Promise<Weapon> => {
return await Weapon.create(weapon)
}
const update = async (weapon: WeaponAttributes) => {
const existingWeapon = await Weapon.findOne({where: {id: weapon.id}})
if(!existingWeapon){
throw new Error(`Weapon id ${weapon.id} not found!`)
}
return await existingWeapon.update(weapon)
}
const findById = async (id: number) => {
const weapon = await Weapon.findOne({
where: { id }
})
if(!weapon){
throw new Error(`Weapon id ${ id } not found!`)
}
return weapon
}
const findAll = async (): Promise<Weapon[]> => {
return await Weapon.findAll()
}
const addToInventory = async (id: number, inventoryId: number) => {
const existingWeapon = await Weapon.findOne({where: { id }})
if(!existingWeapon){
throw new Error(`Weapon id ${id} not found!`)
}
return await existingWeapon.update({inventoryId: inventoryId})
}
const weapons: WeaponController = {
create,
update,
findById,
findAll,
addToInventory
}
export { weapons }