Added user starred courses list

This commit is contained in:
Jonathan Barrow 2022-01-01 22:47:57 -05:00
parent 549e54d6bb
commit 65ade9ec45
3 changed files with 120 additions and 4 deletions

View File

@ -104,6 +104,15 @@ func connectCassandra() {
log.Fatal(err)
}
if err := cassandraClusterSession.Query(`CREATE TABLE IF NOT EXISTS pretendo_smm.user_play_info (
pid int PRIMARY KEY,
starred_courses set<bigint>,
played_courses set<bigint>
)`).Exec(); err != nil {
fmt.Println("pretendo_smm.user_play_info")
log.Fatal(err)
}
fmt.Println("Connected to Cassandra")
}
@ -415,6 +424,13 @@ func incrementCourseAttemptCount(courseID uint64) {
}
}
func getUserStarredCourses(pid uint32) []*CourseMetadata {
var dataIDs []uint64
_ = cassandraClusterSession.Query(`SELECT starred_courses FROM pretendo_smm.user_play_info WHERE pid=?`, pid).Scan(&dataIDs)
return getCourseMetadataByDataIDs(dataIDs)
}
//////////////////////////////
// //
// MongoDB database methods //

View File

@ -10,11 +10,9 @@ import (
func getBufferQueue(err error, client *nex.Client, callID uint32, param *nexproto.BufferQueueParam) {
rmcResponseStream := nex.NewStreamOut(nexServer)
fmt.Printf("%+v\n", param)
// TODO: complete this
// TODO complete this
pBufferQueue := make([][]byte, 0)
var pBufferQueue [][]byte
switch param.Slot {
case 0: // unknown

View File

@ -13,6 +13,8 @@ func getCustomRankingByDataId(err error, client *nex.Client, callID uint32, para
var pResults []uint32
switch param.ApplicationId {
case 0: // Starred courses
pRankingResult, pResults = getCustomRankingByDataIdStarredCourses(client.PID())
case 300000000: // Mii data
pRankingResult, pResults = getCustomRankingByDataIdMiiData(param)
default: // Normal course data
@ -45,6 +47,106 @@ func getCustomRankingByDataId(err error, client *nex.Client, callID uint32, para
nexServer.Send(responsePacket)
}
func getCustomRankingByDataIdStarredCourses(pid uint32) ([]*nexproto.DataStoreCustomRankingResult, []uint32) {
courseMetadatas := getUserStarredCourses(pid)
pRankingResult := make([]*nexproto.DataStoreCustomRankingResult, 0)
pResults := make([]uint32, 0)
for _, courseMetadata := range courseMetadatas {
rankingResult := nexproto.NewDataStoreCustomRankingResult()
rankingResult.Order = 0 // unknown
rankingResult.Score = courseMetadata.Stars
rankingResult.MetaInfo = nexproto.NewDataStoreMetaInfo()
rankingResult.MetaInfo.DataID = courseMetadata.DataID
rankingResult.MetaInfo.OwnerID = courseMetadata.OwnerPID
rankingResult.MetaInfo.Size = courseMetadata.Size
rankingResult.MetaInfo.Name = courseMetadata.Name
rankingResult.MetaInfo.DataType = courseMetadata.DataType
rankingResult.MetaInfo.MetaBinary = courseMetadata.MetaBinary
rankingResult.MetaInfo.Permission = nexproto.NewDataStorePermission()
rankingResult.MetaInfo.Permission.Permission = 0 // unknown
rankingResult.MetaInfo.Permission.RecipientIds = []uint32{}
rankingResult.MetaInfo.DelPermission = nexproto.NewDataStorePermission()
rankingResult.MetaInfo.DelPermission.Permission = 3 // unknown
rankingResult.MetaInfo.DelPermission.RecipientIds = []uint32{}
rankingResult.MetaInfo.CreatedTime = courseMetadata.CreatedTime
rankingResult.MetaInfo.UpdatedTime = courseMetadata.UpdatedTime
rankingResult.MetaInfo.Period = courseMetadata.Period
rankingResult.MetaInfo.Status = 0 // unknown
rankingResult.MetaInfo.ReferredCnt = 0 // unknown
rankingResult.MetaInfo.ReferDataID = 0 // unknown
rankingResult.MetaInfo.Flag = courseMetadata.Flag
rankingResult.MetaInfo.ReferredTime = courseMetadata.CreatedTime
rankingResult.MetaInfo.ExpireTime = nex.NewDateTime(671075926016) // December 31st, year 9999
rankingResult.MetaInfo.Tags = []string{""} // unknown
rankingResult.MetaInfo.Ratings = []*nexproto.DataStoreRatingInfoWithSlot{
nexproto.NewDataStoreRatingInfoWithSlot(), // attempts
nexproto.NewDataStoreRatingInfoWithSlot(), // unknown
nexproto.NewDataStoreRatingInfoWithSlot(), // completions
nexproto.NewDataStoreRatingInfoWithSlot(), // failures
nexproto.NewDataStoreRatingInfoWithSlot(), // unknown
nexproto.NewDataStoreRatingInfoWithSlot(), // unknown
nexproto.NewDataStoreRatingInfoWithSlot(), // unknown
}
// attempts
rankingResult.MetaInfo.Ratings[0].Slot = 0
rankingResult.MetaInfo.Ratings[0].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[0].Rating.TotalValue = int64(courseMetadata.Attempts)
rankingResult.MetaInfo.Ratings[0].Rating.Count = courseMetadata.Attempts
rankingResult.MetaInfo.Ratings[0].Rating.InitialValue = 0
// unknown
rankingResult.MetaInfo.Ratings[1].Slot = 1
rankingResult.MetaInfo.Ratings[1].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[1].Rating.TotalValue = 2
rankingResult.MetaInfo.Ratings[1].Rating.Count = 2
rankingResult.MetaInfo.Ratings[1].Rating.InitialValue = 0
// completions
rankingResult.MetaInfo.Ratings[2].Slot = 2
rankingResult.MetaInfo.Ratings[2].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[2].Rating.TotalValue = int64(courseMetadata.Completions)
rankingResult.MetaInfo.Ratings[2].Rating.Count = courseMetadata.Completions
rankingResult.MetaInfo.Ratings[2].Rating.InitialValue = 0
// failures
rankingResult.MetaInfo.Ratings[3].Slot = 3
rankingResult.MetaInfo.Ratings[3].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[3].Rating.TotalValue = int64(courseMetadata.Failures)
rankingResult.MetaInfo.Ratings[3].Rating.Count = courseMetadata.Failures
rankingResult.MetaInfo.Ratings[3].Rating.InitialValue = 0
// unknown
rankingResult.MetaInfo.Ratings[4].Slot = 4
rankingResult.MetaInfo.Ratings[4].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[4].Rating.TotalValue = 5
rankingResult.MetaInfo.Ratings[4].Rating.Count = 5
rankingResult.MetaInfo.Ratings[4].Rating.InitialValue = 0
// unknown
rankingResult.MetaInfo.Ratings[5].Slot = 5
rankingResult.MetaInfo.Ratings[5].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[5].Rating.TotalValue = 6
rankingResult.MetaInfo.Ratings[5].Rating.Count = 6
rankingResult.MetaInfo.Ratings[5].Rating.InitialValue = 0
// Number of new Miiverse comments
rankingResult.MetaInfo.Ratings[6].Slot = 6
rankingResult.MetaInfo.Ratings[6].Rating = nexproto.NewDataStoreRatingInfo()
rankingResult.MetaInfo.Ratings[6].Rating.TotalValue = 0
rankingResult.MetaInfo.Ratings[6].Rating.Count = 0
rankingResult.MetaInfo.Ratings[6].Rating.InitialValue = 0
pRankingResult = append(pRankingResult, rankingResult)
pResults = append(pResults, 0x690001)
}
return pRankingResult, pResults
}
func getCustomRankingByDataIdMiiData(param *nexproto.DataStoreGetCustomRankingByDataIdParam) ([]*nexproto.DataStoreCustomRankingResult, []uint32) {
pRankingResult := make([]*nexproto.DataStoreCustomRankingResult, 0)
pResults := make([]uint32, 0)