dnscontrol/models/recorddb.go
2023-02-27 20:28:17 -05:00

30 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
}