Ocean/ICCC/InitDB.go
2014-04-26 11:18:56 +02:00

59 lines
2.0 KiB
Go

package ICCC
import "labix.org/v2/mgo"
import "github.com/SommerEngineering/Ocean/CustomerDB"
import "github.com/SommerEngineering/Ocean/Log"
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
func initDB() {
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameINIT, `Start init of the ICCC collections.`)
defer Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameINIT, `Done init the ICCC collection.`)
// Get the database:
db = CustomerDB.DB()
if db == nil {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameDATABASE, `Was not able to get the customer database.`)
return
}
// Get my collections:
collectionListener = db.C(`ICCCListener`)
collectionHosts = db.C(`ICCCHosts`)
// Take care about the indexes for ICCCListener:
collectionListener.EnsureIndexKey(`Command`)
collectionListener.EnsureIndexKey(`Command`, `IsActive`)
collectionListener.EnsureIndexKey(`Command`, `Channel`)
collectionListener.EnsureIndexKey(`Command`, `Channel`, `IsActive`)
collectionListener.EnsureIndexKey(`Channel`)
collectionListener.EnsureIndexKey(`Channel`, `IsActive`)
collectionListener.EnsureIndexKey(`Channel`, `Command`, `IPAddressPort`, `IsActive`)
collectionListener.EnsureIndexKey(`Channel`, `Command`, `IsActive`)
collectionListener.EnsureIndexKey(`IsActive`)
collectionListener.EnsureIndexKey(`IsActive`, `IPAddressPort`)
collectionListener.EnsureIndexKey(`IPAddressPort`)
indexName1 := mgo.Index{}
indexName1.Key = []string{`Channel`, `Command`, `IPAddressPort`}
indexName1.Unique = true
collectionListener.EnsureIndex(indexName1)
// Index for hosts:
collectionHosts.EnsureIndexKey(`Hostname`, `IPAddressPort`)
indexName2 := mgo.Index{}
indexName2.Key = []string{`Hostname`}
indexName2.Unique = true
collectionHosts.EnsureIndex(indexName2)
indexName3 := mgo.Index{}
indexName3.Key = []string{`IPAddressPort`}
indexName3.Unique = true
collectionHosts.EnsureIndex(indexName3)
}