1
- import { Request } from "express" ;
1
+ import { Request } from "express" ;
2
2
import jwt from "jsonwebtoken" ;
3
- import { prisma , prismaUtils } from "./prisma" ;
3
+ import { prisma , prismaUtils } from "./prisma" ;
4
4
import { Prisma } from "@prisma/client" ;
5
5
6
6
export function authenticate ( request : Request ) {
@@ -34,8 +34,18 @@ export async function generateCode() {
34
34
}
35
35
36
36
export async function getJoyconsLeft ( ) {
37
- const joyconBorrows = await prisma . borrow . findMany ( { where : { borrowOpening : { OR : [ prismaUtils . validOpening , { date : { not : null } } ] } , returnOpening : { date : { not : null } } } } ) ;
38
- return Number . parseInt ( process . env . TOTAL_JOYCONS ) - joyconBorrows . reduce ( ( acc , borrow ) => acc + borrow . joyconsTaken , 0 ) ;
37
+ const joyconBorrows = await prisma . borrow . findMany ( {
38
+ where : {
39
+ borrowOpening : {
40
+ OR : [ prismaUtils . validOpening , { date : { not : null } } ] ,
41
+ } ,
42
+ returnOpening : { date : { not : null } } ,
43
+ } ,
44
+ } ) ;
45
+ return (
46
+ Number . parseInt ( process . env . TOTAL_JOYCONS ) -
47
+ joyconBorrows . reduce ( ( acc , borrow ) => acc + borrow . joyconsTaken , 0 )
48
+ ) ;
39
49
}
40
50
41
51
const OPENING_INCLUDE_BEFORE_FORMATTING = {
@@ -45,30 +55,32 @@ const OPENING_INCLUDE_BEFORE_FORMATTING = {
45
55
} ,
46
56
} as const ;
47
57
48
- type FormattedOpening = Omit < Prisma . OpeningGetPayload < typeof OPENING_INCLUDE_BEFORE_FORMATTING > , 'return' > & { type : 'borrow' | 'return' }
58
+ type FormattedOpening = Omit <
59
+ Prisma . OpeningGetPayload < typeof OPENING_INCLUDE_BEFORE_FORMATTING > ,
60
+ "return"
61
+ > & { type : "borrow" | "return" } ;
49
62
50
- export function formatOpening ( opening : Prisma . OpeningGetPayload < typeof OPENING_INCLUDE_BEFORE_FORMATTING > ) : FormattedOpening {
63
+ export function formatOpening (
64
+ opening : Prisma . OpeningGetPayload < typeof OPENING_INCLUDE_BEFORE_FORMATTING >
65
+ ) : FormattedOpening {
51
66
if ( ! opening ) {
52
67
return null ;
53
68
}
54
69
if ( opening . return ) {
55
70
opening . borrow = opening . return ;
56
71
delete opening . return ;
57
- return { ...opening , type : ' return' } ;
72
+ return { ...opening , type : " return" } ;
58
73
}
59
74
delete opening . return ;
60
- return { ...opening , type : ' borrow' } ;
75
+ return { ...opening , type : " borrow" } ;
61
76
}
62
77
63
78
export async function getWaitingOpening ( userLogin : string ) {
64
79
const opening = await prisma . opening . findFirst ( {
65
80
where : {
66
81
date : null ,
67
82
code : { not : null } ,
68
- OR : [
69
- { borrow : { userLogin } } ,
70
- { return : { userLogin } } ,
71
- ] ,
83
+ OR : [ { borrow : { userLogin } } , { return : { userLogin } } ] ,
72
84
} ,
73
85
...OPENING_INCLUDE_BEFORE_FORMATTING ,
74
86
} ) ;
@@ -79,10 +91,7 @@ export async function getWaitingOpeningWithValidCode(userLogin: string) {
79
91
const opening = await prisma . opening . findFirst ( {
80
92
where : {
81
93
...prismaUtils . validOpening ,
82
- OR : [
83
- { borrow : { userLogin } } ,
84
- { return : { userLogin } }
85
- ]
94
+ OR : [ { borrow : { userLogin } } , { return : { userLogin } } ] ,
86
95
} ,
87
96
...OPENING_INCLUDE_BEFORE_FORMATTING ,
88
97
} ) ;
@@ -108,3 +117,5 @@ export function setLastTimeChestWasAlive(time: number) {
108
117
export function getLastTimeChestWasAlive ( ) {
109
118
return lastTimeChestWasAlive ;
110
119
}
120
+
121
+ export const CODE_LIFETIME = ( Number ( process . env . CODE_LIFETIME ) || 300 ) * 1000 ;
0 commit comments