fix(sites): remove stale domain links on sync

This commit is contained in:
RissRIce 2026-08-09 14:53:14 -06:00
parent b48608c4e9
commit 1c7f3b0cd8
2 changed files with 41 additions and 0 deletions

View file

@ -100,6 +100,22 @@ func (m *Manager) Sync() error {
if err != nil { if err != nil {
return err return err
} }
wanted := make(map[string]struct{}, len(all))
for _, dm := range all {
wanted[dm.Domain] = struct{}{}
}
entries, err := os.ReadDir(m.domDir)
if err != nil {
return err
}
for _, entry := range entries {
if _, ok := wanted[entry.Name()]; ok {
continue
}
if err := os.RemoveAll(filepath.Join(m.domDir, entry.Name())); err != nil {
return err
}
}
for _, dm := range all { for _, dm := range all {
if err := m.link(dm.Domain, dm.Username); err != nil { if err := m.link(dm.Domain, dm.Username); err != nil {
return err return err

View file

@ -111,6 +111,31 @@ func TestManagerAddRemoveSyncAsk(t *testing.T) {
} }
} }
func TestSyncRemovesStaleDomainEntries(t *testing.T) {
dir := t.TempDir()
st, err := store.Open(filepath.Join(dir, "test.db"))
if err != nil {
t.Fatal(err)
}
defer st.Close()
m, err := NewManager(st, dir)
if err != nil {
t.Fatal(err)
}
stale := filepath.Join(dir, "domains", "stale.example.com")
if err := os.WriteFile(stale, []byte("stale"), 0o644); err != nil {
t.Fatal(err)
}
if err := m.Sync(); err != nil {
t.Fatal(err)
}
if _, err := os.Lstat(stale); !os.IsNotExist(err) {
t.Errorf("expected stale domain entry removed, got err=%v", err)
}
}
func TestAskUserSubdomain(t *testing.T) { func TestAskUserSubdomain(t *testing.T) {
t.Setenv("AGENTBBS_HOST", "bbs.profullstack.com") t.Setenv("AGENTBBS_HOST", "bbs.profullstack.com")
dir := t.TempDir() dir := t.TempDir()