package statistics import ( "encoding/json" "nCovTrack-Backend/global" "nCovTrack-Backend/models" "strings" ) func GetAllProvinceData(sort string) []interface{} { checkCache() if sort == SORT_TODAY_CONFIRM { return getEntireRedisList(rds_PROVINCE_LEVEL_TODAY_CONFIRM_KEY) } if sort == SORT_TOTAL_CONFIRM { return getEntireRedisList(rds_PROVINCE_LEVEL_TOTAL_CONFIRM_KEY) } if sort == SORT_NOW_CONFIRM { return getEntireRedisList(rds_PROVINCE_LEVEL_NOW_CONFIRM_KEY) } return getEntireRedisList(rds_PROVINCE_LEVEL_CHILD_KEY) } func GetAllCityData(sort string) []interface{} { checkCache() if sort == SORT_TODAY_CONFIRM { return getEntireRedisList(rds_CITY_LEVEL_TODAY_CONFIRM_KEY) } if sort == SORT_TOTAL_CONFIRM { return getEntireRedisList(rds_CITY_LEVEL_TOTAL_CONFIRM_KEY) } if sort == SORT_NOW_CONFIRM { return getEntireRedisList(rds_CITY_LEVEL_NOW_CONFIRM_KEY) } return getEntireRedisList(rds_CITY_LEVEL_CHILD_KEY) } func GetCountryData(child bool) []interface{} { checkCache() if child { return getEntireRedisList(rds_COUNTRY_LEVEL_CHILD_KEY) } return getEntireRedisList(rds_COUNTRY_LEVEL_KEY) } func GetChinaNCovStatistic() models.ChinaData { checkCache() data := models.ChinaData{} json.Unmarshal([]byte(global.Redis.Get(rds_CHINA_ADD_KEY).Val()), &data.ChinaAdd) json.Unmarshal([]byte(global.Redis.Get(rds_CHINA_TOTAL_KEY).Val()), &data.ChinaTotal) return data } func GetChinaDayAdd() []models.ChinaDayAdd { chinaDayAddStr := global.Redis.Get(rds_CHINA_DAY_ADD_LIST_KEY).Val() if chinaDayAddStr == "" { CacheNCovTrend() chinaDayAddStr = global.Redis.Get(rds_CHINA_DAY_ADD_LIST_KEY).Val() } var chinaDayAddList []models.ChinaDayAdd json.Unmarshal([]byte(chinaDayAddStr), &chinaDayAddList) return chinaDayAddList } func GetChinaDay() []models.ChinaDay { chinaDayStr := global.Redis.Get(rds_CHINA_DAY_LIST_KEY).Val() if chinaDayStr == "" { CacheNCovTrend() chinaDayStr = global.Redis.Get(rds_CHINA_DAY_LIST_KEY).Val() } var chinaDayList []models.ChinaDay json.Unmarshal([]byte(chinaDayStr), &chinaDayList) return chinaDayList } func GetChinaTrend() models.ChinaTrend { return models.ChinaTrend{ChinaDayAddList: GetChinaDayAdd(), ChinaDayList: GetChinaDay()} } func getEntireRedisList(key string) []interface{} { var data []interface{} dataStrArr := global.Redis.LRange(key, 0, -1).Val() dataStr := "[" + strings.Join(dataStrArr[:], ",") + "]" json.Unmarshal([]byte(dataStr), &data) return data }