// FindUserByEmail is a convenience function to locate a users record by a given email address. func FindUserByEmail(db *boltons.DB, email string) (*User, error) { user := User{} users := []User{} if err := db.All(&users); err != nil { return &user, err } for _, u := range users { if u.Email == email { return &u, nil } } return &user, nil }
// FindRecordByFQDN returns a single record for the provided fqdn. func FindRecordByFQDN(db *boltons.DB, fqdn string) (*Record, error) { record := Record{} records := []Record{} if err := db.All(&records); err != nil { return &record, err } for _, r := range records { if r.FQDN == fqdn { return &r, nil } } return &record, nil }
// FindRecordBySubOfFQDN is used for DNS requests and tries to find // the record whos FQDN matches name. func FindRecordBySubOfFQDN(db *boltons.DB, name string) (*Record, error) { record := Record{} records := []Record{} if err := db.All(&records); err != nil { return &record, err } for _, r := range records { if ok, err := regexp.MatchString(".*\\."+regexp.QuoteMeta(r.FQDN)+"\\.", name); ok && err == nil { return &r, nil } } return &record, nil }
// FindRecordsForOwner returns a list of all records for a given owner by their id. func FindRecordsForOwner(db *boltons.DB, ID string) ([]Record, error) { records := []Record{} foundRecords := []Record{} if err := db.All(&records); err != nil { return foundRecords, err } for _, r := range records { if r.Owner.ID == ID { foundRecords = append(foundRecords, r) } } return foundRecords, nil }