@@ -59,7 +59,16 @@ const PLAYER_JSON_FIELDS = [
59
59
] ;
60
60
61
61
const TOTAL_EXP = `(\`exp_${ skills . join ( '` + `exp_' ) } \`) AS \`experience\`` ;
62
- const RANKS_PER_PAGE = 8 ;
62
+ const RANKS_PER_PAGE = 4 ;
63
+
64
+ function getPages ( database ) {
65
+ return Math . ceil (
66
+ database
67
+ . prepare ( 'SELECT COUNT(1) FROM `hiscore_ranks`' )
68
+ . pluck ( )
69
+ . get ( ) / RANKS_PER_PAGE
70
+ ) ;
71
+ }
63
72
64
73
class QueryHandler {
65
74
constructor ( database ) {
@@ -123,11 +132,11 @@ class QueryHandler {
123
132
'CREATE TEMPORARY TABLE `hiscore_ranks` ' +
124
133
'(`player_id` integer, `experience` integer)' ,
125
134
getTotalHiscoreRanks :
126
- 'SELECT `username`, `rank_total` as `rank`, `total_level` AS ' +
135
+ 'SELECT `username`, `rank_total` AS `rank`, `total_level` AS ' +
127
136
`\`level\`, ${ TOTAL_EXP } FROM \`players\` ORDER BY ` +
128
137
`\`rank_total\` ASC LIMIT ${ RANKS_PER_PAGE } OFFSET ?` ,
129
138
getTotalHiscoreRanksBetween :
130
- 'SELECT `username`, `rank_total` as `rank`, `total_level` AS ' +
139
+ 'SELECT `username`, `rank_total` AS `rank`, `total_level` AS ' +
131
140
`\`level\`, ${ TOTAL_EXP } FROM \`players\` WHERE ` +
132
141
'`rank_total` BETWEEN ? AND ? ORDER BY `rank_total` ASC'
133
142
} ;
@@ -151,6 +160,9 @@ class QueryHandler {
151
160
'`hiscore_ranks` WHERE `hiscore_ranks`.`player_id` = ' +
152
161
'`players`.`id`)'
153
162
) ;
163
+
164
+ return getPages ( this . database ) ;
165
+
154
166
} ) ;
155
167
156
168
this . statements . getSkillHiscoreRanks = { } ;
@@ -159,7 +171,7 @@ class QueryHandler {
159
171
160
172
for ( const skill of skills ) {
161
173
this . statements . getSkillHiscoreRanks [ skill ] = this . database . prepare (
162
- `SELECT \`username\`, \`rank_${ skill } \` as \`rank\`, ` +
174
+ `SELECT \`username\`, \`rank_${ skill } \` AS \`rank\`, ` +
163
175
`\`exp_${ skill } \` AS \`experience\` FROM \`players\` ` +
164
176
`ORDER BY \`rank_${ skill } \` ASC LIMIT ${ RANKS_PER_PAGE } ` +
165
177
'OFFSET ?'
@@ -168,7 +180,7 @@ class QueryHandler {
168
180
this . statements . getSkillHiscoreRanksBetween [
169
181
skill
170
182
] = this . database . prepare (
171
- `SELECT \`username\`, \`rank_${ skill } \` as \`rank\`, ` +
183
+ `SELECT \`username\`, \`rank_${ skill } \` AS \`rank\`, ` +
172
184
`\`exp_${ skill } \` AS \`experience\` FROM \`players\` WHERE ` +
173
185
`\`rank_${ skill } \` BETWEEN ? AND ? ORDER BY \`rank_total\` ASC`
174
186
) ;
@@ -191,6 +203,8 @@ class QueryHandler {
191
203
'`hiscore_ranks`.`player_id` = ' +
192
204
'`players`.`id`);'
193
205
) ;
206
+
207
+ return getPages ( this . database ) ;
194
208
}
195
209
) ;
196
210
}
@@ -337,11 +351,15 @@ class QueryHandler {
337
351
}
338
352
339
353
updateHiscoreRanks ( ) {
340
- this . updateTotalHiscoreRanks ( ) ;
354
+ const pages = {
355
+ overall : this . updateTotalHiscoreRanks ( ) ,
356
+ } ;
341
357
342
358
for ( const skill of skills ) {
343
- this . updateSkillHiscoreRanks [ skill ] ( ) ;
359
+ pages [ skill ] = this . updateSkillHiscoreRanks [ skill ] ( ) ;
344
360
}
361
+
362
+ return pages ;
345
363
}
346
364
347
365
getHiscoreRanks ( skill = 'overall' , rank = - 1 , page = 0 ) {
@@ -374,7 +392,7 @@ class QueryHandler {
374
392
if ( skill === 'overall' ) {
375
393
ranks = this . statements . getTotalHiscoreRanks . all ( offset ) ;
376
394
} else {
377
- this . statements . getSkillHiscoreRanks [ skill ] . all ( offset ) ;
395
+ ranks = this . statements . getSkillHiscoreRanks [ skill ] . all ( offset ) ;
378
396
}
379
397
}
380
398
0 commit comments