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 }