11const db = require ( 'sqlite' ) ;
22const fs = require ( 'fs-extra' ) ;
3+ const trueskill = require ( 'trueskill' ) ;
34const teams = require ( '../data/teams' ) ;
45const results = require ( '../data/results' ) ;
56
@@ -13,11 +14,15 @@ module.exports = async (argv) => {
1314
1415 const startDate = new Date ( 'December 11, 1973' ) . getTime ( ) ;
1516 const startElo = 1300 ;
16- console . log ( `seeding table with start elo ${ startElo } on date ${ startDate } ` ) ;
17+ const startTrueskillSigma = 25 / 3 ;
18+ const startTrueskillMu = 25 ;
19+ console . log ( `seeding table with start elo ${ startElo } and trueskill sigma: ${ startTrueskillSigma } mu: ${ startTrueskillMu } on date ${ startDate } ` ) ;
1720 await Promise . all ( teams . map ( team => db . run ( `
18- INSERT INTO rankings (rankingteamid, elo, date) VALUES (
21+ INSERT INTO rankings (rankingteamid, elo, trueskillsigma, trueskillmu, date) VALUES (
1922 (SELECT teamid FROM teams WHERE teams.abbreviation = "${ team . abbreviation } "),
2023 ${ startElo } ,
24+ ${ startTrueskillSigma } ,
25+ ${ startTrueskillMu } ,
2126 ${ startDate }
2227 )
2328 ` ) ) ) ;
@@ -39,6 +44,8 @@ module.exports = async (argv) => {
3944 const awayranking = await db . get ( `
4045 select
4146 rankings.elo,
47+ rankings.trueskillmu,
48+ rankings.trueskillsigma,
4249 rankings.date
4350 from rankings
4451 inner join (
@@ -55,6 +62,8 @@ module.exports = async (argv) => {
5562 const homeranking = await db . get ( `
5663 select
5764 rankings.elo,
65+ rankings.trueskillmu,
66+ rankings.trueskillsigma,
5867 rankings.date
5968 from rankings
6069 inner join (
@@ -70,7 +79,7 @@ module.exports = async (argv) => {
7079 ` ) ;
7180 match . homeranking = homeranking . elo ;
7281 match . awayranking = awayranking . elo ;
73- let homeElo , awayElo ;
82+ let homeElo , awayElo , homeTrueskill , awayTrueskill ;
7483 if ( match . homegoals < match . awaygoals ) {
7584 homeElo = updateElo ( {
7685 match,
@@ -82,6 +91,14 @@ module.exports = async (argv) => {
8291 won : true ,
8392 isHome : false
8493 } ) ;
94+ homeTrueskill = {
95+ skill : [ homeranking . trueskillmu , homeranking . trueskillsigma ] ,
96+ rank : 2 ,
97+ } ;
98+ awayTrueskill = {
99+ skill : [ awayranking . trueskillmu , awayranking . trueskillsigma ] ,
100+ rank : 1 ,
101+ } ;
85102 } else if ( match . homegoals === match . awaygoals ) {
86103 homeElo = updateElo ( {
87104 match,
@@ -93,6 +110,14 @@ module.exports = async (argv) => {
93110 won : false ,
94111 isHome : false
95112 } ) ;
113+ homeTrueskill = {
114+ skill : [ homeranking . trueskillmu , homeranking . trueskillsigma ] ,
115+ rank : 2 ,
116+ } ;
117+ awayTrueskill = {
118+ skill : [ awayranking . trueskillmu , awayranking . trueskillsigma ] ,
119+ rank : 2 ,
120+ } ;
96121 } else {
97122 homeElo = updateElo ( {
98123 match,
@@ -104,17 +129,30 @@ module.exports = async (argv) => {
104129 won : false ,
105130 isHome : false
106131 } ) ;
132+ homeTrueskill = {
133+ skill : [ homeranking . trueskillmu , homeranking . trueskillsigma ] ,
134+ rank : 1 ,
135+ } ;
136+ awayTrueskill = {
137+ skill : [ awayranking . trueskillmu , awayranking . trueskillsigma ] ,
138+ rank : 2 ,
139+ } ;
107140 }
141+ trueskill . AdjustPlayers ( [ homeTrueskill , awayTrueskill ] ) ;
108142 await Promise . all ( [ db . run ( `
109- INSERT INTO rankings (elo, date, rankingteamid) VALUES (
143+ INSERT INTO rankings (elo, trueskillsigma, trueskillmu, date, rankingteamid) VALUES (
110144 ${ homeElo } ,
145+ ${ homeTrueskill . skill [ 1 ] } ,
146+ ${ homeTrueskill . skill [ 0 ] } ,
111147 ${ match . date } ,
112148 ${ match . hometeam }
113149 )
114150 ` ) ,
115151 db . run ( `
116- INSERT INTO rankings (elo, date, rankingteamid) VALUES (
152+ INSERT INTO rankings (elo, trueskillsigma, trueskillmu, date, rankingteamid) VALUES (
117153 ${ awayElo } ,
154+ ${ homeTrueskill . skill [ 1 ] } ,
155+ ${ homeTrueskill . skill [ 0 ] } ,
118156 ${ match . date } ,
119157 ${ match . awayteam }
120158 )
0 commit comments