Commit 20e71a6
Changed files (4)
question.go
@@ -12,17 +12,7 @@ import (
// assignCategory figures out what category
// this question is a member of
func assignCategory(category string, record *Record) {
- if _, inMap := recordMap[category]; inMap != true {
- recordMap[category] = []Record{}
- categoricalData.CategoryPath = append(categoricalData.CategoryPath, category)
- record.Category = len(categoricalData.CategoryPath) - 1
- } else {
- for i, value := range categoricalData.CategoryPath {
- if value == category {
- record.Category = i
- }
- }
- }
+
}
// parseLine parses a csv line and returns a single record
@@ -44,7 +34,7 @@ func parseLine(line string) error {
record.Reference = strings.TrimSpace(tokens[3])
}
assignCategory(category, &record)
- recordMap[category] = append(recordMap[category], record)
+ recordsArray = append(recordsArray, record)
return nil
}
server.go
@@ -105,11 +105,7 @@ func ExecuteServer() {
log.Printf("Failed to load questions due to error: %+v", err)
os.Exit(EXIT_CODE.FILE_IO_ERROR)
}
- numQuestions := 0
- for _, recordArray := range recordMap {
- numQuestions += len(recordArray)
- }
- log.Printf("Loaded %d questions from %s with %d categories.", numQuestions, serverConfig.QUESTIONS, len(categoricalData.CategoryPath))
+ log.Printf("Loaded %d questions from %s with %d categories.", len(recordsArray), serverConfig.QUESTIONS, len(categoricalData.CategoryPath))
rand.Seed(time.Now().Unix())
Listen(serverConfig)
}
serverHandlers.go
@@ -25,21 +25,8 @@ var userTestsLock = sync.RWMutex{}
func getRecordForCategory(category string) Record {
mapLock.Lock()
defer mapLock.Unlock()
- length := len(recordMap[category])
- if length == 0 {
- recordMap[category] = usedRecordMap[category]
- usedRecordMap[category] = usedRecordMap[category][0:0]
- length = len(recordMap[category])
- }
- recordIndex := rand.Intn(length)
- record := recordMap[category][recordIndex]
- recordMap[category][recordIndex] = recordMap[category][length-1]
- recordMap[category] = recordMap[category][:length-1] //shrink length by one
- if usedRecordMap[category] == nil {
- usedRecordMap[category] = []Record{}
- }
- usedRecordMap[category] = append(usedRecordMap[category], record)
- return record
+
+ return Record{}
}
// buildRecordArray builds an array of Records based on the parameter criteria
structures.go
@@ -9,12 +9,12 @@ const API_ROOT = "/api"
// categorical buckets. the category serves as
// the keyname. the map is populated through the
// loadRecords function call.
-var recordMap map[string][]Record
+var recordsArray []Record
// usedRecordMap contains the questions that have
// already been used. when recordMap is empty,
// usedRecordMap replaces it.
-var usedRecordMap map[string][]Record
+var usedRecordsArray []Record
// mapLock locks the maps to prevent concurrency issues
var mapLock *sync.Mutex
@@ -153,8 +153,8 @@ func (cSem *CountingSemaphore) SetCapacity(cap int) {
}
func init() {
- recordMap = map[string][]Record{}
- usedRecordMap = map[string][]Record{}
+ recordsArray = []Record{}
+ usedRecordsArray = []Record{}
categoricalData = CategoricalData{}
mapLock = &sync.Mutex{}
}