Start back end test for Player model
This commit is contained in:
@@ -33,6 +33,9 @@ class SeedWeeklyPlayerDataPatch extends Injectable {
|
||||
// Clear existing data
|
||||
await WeeklyPlayerStat.deleteMany()
|
||||
|
||||
// Array of players with week 1 stats
|
||||
const player_ids_with_week_1_stats = []
|
||||
|
||||
// Populate the weekly player stats for all weeks in the range
|
||||
for ( let week = start_week; week <= end_week; week += 1 ) {
|
||||
this.output.info(`Building weekly player stats for week ${week}...`)
|
||||
@@ -61,6 +64,10 @@ class SeedWeeklyPlayerDataPatch extends Injectable {
|
||||
|
||||
await weekly_stat.save()
|
||||
|
||||
if ( week === 1 ) {
|
||||
player_ids_with_week_1_stats.push(player.id)
|
||||
}
|
||||
|
||||
if ( week === 1 || !player.seed_stats || Object.values(player.seed_stats).length < 1 ) {
|
||||
player.seed_stats = await weekly_stat.to_api()
|
||||
}
|
||||
@@ -71,6 +78,19 @@ class SeedWeeklyPlayerDataPatch extends Injectable {
|
||||
this.output.success(` - complete`)
|
||||
}
|
||||
|
||||
this.output.info('Deactivating players without week 1 stats...')
|
||||
const inactive_players = await Player.find({
|
||||
_id: {
|
||||
$nin: player_ids_with_week_1_stats.map(x => Player.to_object_id(x)),
|
||||
},
|
||||
})
|
||||
|
||||
this.output.info(`Deactivating ${inactive_players.length} players...`)
|
||||
for ( const player of inactive_players ) {
|
||||
player.is_active = false
|
||||
await player.save()
|
||||
}
|
||||
|
||||
this.output.success('Complete!')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const { Model } = require('flitter-orm')
|
||||
|
||||
const ActiveScope = require('./scopes/Active.scope')
|
||||
|
||||
/*
|
||||
* Player Model
|
||||
@@ -10,6 +10,8 @@ class Player extends Model {
|
||||
return [...super.services, 'output', 'models', 'sports_data']
|
||||
}
|
||||
|
||||
static scopes = [new ActiveScope()]
|
||||
|
||||
/*
|
||||
* Define the flitter-orm schema of the model.
|
||||
*/
|
||||
@@ -37,6 +39,10 @@ class Player extends Model {
|
||||
photo_url: String,
|
||||
|
||||
seed_stats: Object,
|
||||
|
||||
// False if the player doesn't have any week-1 stats.
|
||||
// If so, they will be hidden to make the game more playable.
|
||||
is_active: { type: Boolean, default: true },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
9
app/models/scopes/Active.scope.js
Normal file
9
app/models/scopes/Active.scope.js
Normal file
@@ -0,0 +1,9 @@
|
||||
const Scope = require('flitter-orm/src/model/Scope')
|
||||
|
||||
class ActiveScope extends Scope {
|
||||
async filter(to_filter) {
|
||||
return to_filter.equal('is_active', true)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exports = ActiveScope
|
||||
Reference in New Issue
Block a user