mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-11 01:47:53 +08:00
29 lines
921 B
Go
29 lines
921 B
Go
package models
|
|
|
|
// Functions that make it easier to deal with a group of records.
|
|
|
|
// RecordDB is a container of many RecordConfig, queryable by various methods.
|
|
// The first to be implemented is as a hash with label:type as the index.
|
|
type RecordDB struct {
|
|
labelAndTypeMap map[RecordKey]struct{}
|
|
}
|
|
|
|
// NewRecordDBFromRecords creates a RecordDB from a list of RecordConfig.
|
|
func NewRecordDBFromRecords(recs Records, zone string) *RecordDB {
|
|
result := &RecordDB{}
|
|
|
|
result.labelAndTypeMap = make(map[RecordKey]struct{}, len(recs))
|
|
for _, rec := range recs {
|
|
result.labelAndTypeMap[rec.Key()] = struct{}{}
|
|
}
|
|
//fmt.Printf("DEBUG: BUILDING RecordDB: DONE!\n")
|
|
|
|
return result
|
|
}
|
|
|
|
// ContainsLT returns true if recdb contains rec. Matching is done
|
|
// on the record's label and type (i.e. the RecordKey)
|
|
func (recdb *RecordDB) ContainsLT(rec *RecordConfig) bool {
|
|
_, ok := recdb.labelAndTypeMap[rec.Key()]
|
|
return ok
|
|
}
|