Skip to content

Commit

Permalink
🐛 Fix deleting a Ticker
Browse files Browse the repository at this point in the history
  • Loading branch information
0x46616c6b committed Jan 4, 2025
1 parent ef72586 commit 43409c3
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 0 deletions.
29 changes: 29 additions & 0 deletions internal/storage/sql_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,36 @@ func (s *SqlStorage) SaveTicker(ticker *Ticker) error {
return s.DB.Session(&gorm.Session{FullSaveAssociations: true}).Model(ticker).Updates(ticker.AsMap()).Error
}

// DeleteTicker deletes a ticker and all associated data.
func (s *SqlStorage) DeleteTicker(ticker Ticker) error {
if err := s.DeleteTickerUsers(&ticker); err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete ticker users")
}

if err := s.DeleteUploadsByTicker(ticker); err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete ticker uploads")
}

if err := s.DeleteMessages(ticker); err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete ticker messages")
}

if err := s.DB.Delete(TickerMastodon{}, "ticker_id = ?", ticker.ID).Error; err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete mastodon settings")
}

if err := s.DB.Delete(TickerTelegram{}, "ticker_id = ?", ticker.ID).Error; err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete telegram settings")
}

if err := s.DB.Delete(TickerBluesky{}, "ticker_id = ?", ticker.ID).Error; err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete bluesky settings")
}

if err := s.DB.Delete(TickerSignalGroup{}, "ticker_id = ?", ticker.ID).Error; err != nil {
log.WithError(err).WithField("ticker_id", ticker.ID).Error("failed to delete signal group settings")
}

return s.DB.Delete(&ticker).Error
}

Expand Down
119 changes: 119 additions & 0 deletions internal/storage/sql_storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,125 @@ func (s *SqlStorageTestSuite) TestDeleteTicker() {
s.NoError(err)
s.Equal(int64(0), count)
})

s.Run("when ticker exists with user", func() {
user := User{Email: "[email protected]"}
err := s.db.Create(&user).Error
s.NoError(err)

ticker := Ticker{ID: 1, Users: []User{user}}
err = s.db.Create(&ticker).Error
s.NoError(err)

err = s.store.DeleteTicker(ticker)
s.NoError(err)

var tickerCount int64
err = s.db.Model(&Ticker{}).Count(&tickerCount).Error
s.NoError(err)
s.Equal(int64(0), tickerCount)

var userCount int64
err = s.db.Model(&User{}).Count(&userCount).Error
s.NoError(err)
s.Equal(int64(1), userCount)
})

s.Run("when ticker exists with uploads", func() {
ticker := Ticker{ID: 1}
err := s.db.Create(&ticker).Error
s.NoError(err)

upload := Upload{TickerID: ticker.ID}
err = s.db.Create(&upload).Error
s.NoError(err)

err = s.store.DeleteTicker(ticker)
s.NoError(err)

var tickerCount int64
err = s.db.Model(&Ticker{}).Count(&tickerCount).Error
s.NoError(err)
s.Equal(int64(0), tickerCount)

var uploadCount int64
err = s.db.Model(&Upload{}).Count(&uploadCount).Error
s.NoError(err)
s.Equal(int64(0), uploadCount)
})

s.Run("when ticker exists with messages", func() {
ticker := Ticker{ID: 1}
err := s.db.Create(&ticker).Error
s.NoError(err)

message := Message{TickerID: ticker.ID}
err = s.db.Create(&message).Error
s.NoError(err)

err = s.store.DeleteTicker(ticker)
s.NoError(err)

var tickerCount int64
err = s.db.Model(&Ticker{}).Count(&tickerCount).Error
s.NoError(err)
s.Equal(int64(0), tickerCount)

var messageCount int64
err = s.db.Model(&Message{}).Count(&messageCount).Error
s.NoError(err)
s.Equal(int64(0), messageCount)
})

s.Run("when ticker exists with integrations", func() {
ticker := Ticker{ID: 1}
err := s.db.Create(&ticker).Error
s.NoError(err)

mastodon := TickerMastodon{TickerID: ticker.ID}
err = s.db.Create(&mastodon).Error
s.NoError(err)

telegram := TickerTelegram{TickerID: ticker.ID}
err = s.db.Create(&telegram).Error
s.NoError(err)

bluesky := TickerBluesky{TickerID: ticker.ID}
err = s.db.Create(&bluesky).Error
s.NoError(err)

signalGroup := TickerSignalGroup{TickerID: ticker.ID}
err = s.db.Create(&signalGroup).Error
s.NoError(err)

err = s.store.DeleteTicker(ticker)
s.NoError(err)

var tickerCount int64
err = s.db.Model(&Ticker{}).Count(&tickerCount).Error
s.NoError(err)
s.Equal(int64(0), tickerCount)

var mastodonCount int64
err = s.db.Model(&TickerMastodon{}).Count(&mastodonCount).Error
s.NoError(err)
s.Equal(int64(0), mastodonCount)

var telegramCount int64
err = s.db.Model(&TickerTelegram{}).Count(&telegramCount).Error
s.NoError(err)
s.Equal(int64(0), telegramCount)

var blueskyCount int64
err = s.db.Model(&TickerBluesky{}).Count(&blueskyCount).Error
s.NoError(err)
s.Equal(int64(0), blueskyCount)

var signalGroupCount int64
err = s.db.Model(&TickerSignalGroup{}).Count(&signalGroupCount).Error
s.NoError(err)
s.Equal(int64(0), signalGroupCount)
})
}

func (s *SqlStorageTestSuite) TestFindUploadByUUID() {
Expand Down

0 comments on commit 43409c3

Please sign in to comment.