Skip to content

Commit 3f2ea0d

Browse files
authored
Merge pull request #124 from blinklabs-io/feat/delete-record-on-update
feat: delete old records on domain update
2 parents 57c5541 + bb81e1b commit 3f2ea0d

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

internal/state/state.go

+28-1
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,27 @@ func (s *State) UpdateDomain(
126126
domainName string,
127127
nameServers map[string]string,
128128
) error {
129+
logger := logging.GetLogger()
129130
err := s.db.Update(func(txn *badger.Txn) error {
130-
// TODO: find any existing keys for domain and delete
131+
// Delete old records for domain
132+
keyPrefix := []byte(fmt.Sprintf("domain_%s_", domainName))
133+
it := txn.NewIterator(badger.DefaultIteratorOptions)
134+
defer it.Close()
135+
for it.Seek(keyPrefix); it.ValidForPrefix(keyPrefix); it.Next() {
136+
item := it.Item()
137+
k := item.Key()
138+
if err := txn.Delete(k); err != nil {
139+
return err
140+
}
141+
logger.Debug(
142+
fmt.Sprintf(
143+
"deleted record for domain %s with key: %s",
144+
domainName,
145+
k,
146+
),
147+
)
148+
}
149+
// Add new records
131150
for nameServer, ipAddress := range nameServers {
132151
key := fmt.Sprintf(
133152
"domain_%s_nameserver_%s",
@@ -137,6 +156,14 @@ func (s *State) UpdateDomain(
137156
if err := txn.Set([]byte(key), []byte(ipAddress)); err != nil {
138157
return err
139158
}
159+
logger.Debug(
160+
fmt.Sprintf(
161+
"added record for domain %s: %s: %s",
162+
domainName,
163+
nameServer,
164+
ipAddress,
165+
),
166+
)
140167
}
141168
return nil
142169
})

0 commit comments

Comments
 (0)