Skip to content

Commit

Permalink
Merge pull request #356 from systemli/Adjust-Ticker-Filter-for-Origins
Browse files Browse the repository at this point in the history
🗃️ Adjust Ticker Filter for Website Origins
  • Loading branch information
0x46616c6b authored Jan 26, 2025
2 parents 3228c11 + f3b8e8a commit a15b028
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 17 deletions.
7 changes: 4 additions & 3 deletions internal/storage/sql_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,16 @@ func (s *SqlStorage) FindTickersByUser(user User, filter TickerFilter, opts ...f
db = db.Where("active = ?", *filter.Active)
}

if filter.Domain != nil {
db = db.Where("domain LIKE ?", fmt.Sprintf("%%%s%%", *filter.Domain))
if filter.Origin != nil {
db = db.Joins("JOIN ticker_websites ON tickers.id = ticker_websites.ticker_id").
Where("ticker_websites.origin LIKE ?", fmt.Sprintf("%%%s%%", *filter.Origin))
}

if filter.Title != nil {
db = db.Where("title LIKE ?", fmt.Sprintf("%%%s%%", *filter.Title))
}

db = db.Order(fmt.Sprintf("%s %s", filter.OrderBy, filter.Sort))
db = db.Order(fmt.Sprintf("tickers.%s %s", filter.OrderBy, filter.Sort))

var err error
if user.IsSuperAdmin {
Expand Down
10 changes: 5 additions & 5 deletions internal/storage/sql_storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ func (s *SqlStorageTestSuite) TestFindTickersByUser() {
err = s.db.Create(&user).Error
s.NoError(err)

ticker := Ticker{Users: []User{user}, Active: false, Domain: "localhost", Title: "title"}
ticker := Ticker{Users: []User{user}, Active: false, Title: "title", Websites: []TickerWebsite{{Origin: "http://localhost"}}}
err = s.db.Create(&ticker).Error
s.NoError(err)

Expand Down Expand Up @@ -558,14 +558,14 @@ func (s *SqlStorageTestSuite) TestFindTickersByUser() {
s.NoError(err)
s.Len(tickers, 1)

domain := "localhost"
filter = TickerFilter{OrderBy: "id", Sort: "desc", Domain: &domain}
origin := "localhost"
filter = TickerFilter{OrderBy: "id", Sort: "desc", Origin: &origin}
tickers, err = s.store.FindTickersByUser(user, filter)
s.NoError(err)
s.Len(tickers, 1)

domain = "systemli.org"
filter = TickerFilter{OrderBy: "id", Sort: "desc", Domain: &domain}
origin = "systemli.org"
filter = TickerFilter{OrderBy: "id", Sort: "desc", Origin: &origin}
tickers, err = s.store.FindTickersByUser(user, filter)
s.NoError(err)
s.Empty(tickers)
Expand Down
10 changes: 5 additions & 5 deletions internal/storage/ticker.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ type TickerLocation struct {
}

type TickerFilter struct {
Domain *string
Origin *string
Title *string
Active *bool
OrderBy string
Expand All @@ -161,7 +161,7 @@ func NewTickerFilter(req *http.Request) TickerFilter {
}

if req.URL.Query().Get("order_by") != "" {
opts := []string{"id", "created_at", "updated_at", "domain", "title", "active"}
opts := []string{"id", "created_at", "updated_at", "origin", "title", "active"}
for _, opt := range opts {
if req.URL.Query().Get("order_by") == opt {
filter.OrderBy = req.URL.Query().Get("order_by")
Expand All @@ -176,9 +176,9 @@ func NewTickerFilter(req *http.Request) TickerFilter {
filter.Sort = "desc"
}

domain := req.URL.Query().Get("domain")
if domain != "" {
filter.Domain = &domain
origin := req.URL.Query().Get("origin")
if origin != "" {
filter.Origin = &origin
}

title := req.URL.Query().Get("title")
Expand Down
8 changes: 4 additions & 4 deletions internal/storage/ticker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,19 @@ func TestTickerSignalGroupConnect(t *testing.T) {
func TestNewTickerFilter(t *testing.T) {
filter := NewTickerFilter(nil)
assert.Nil(t, filter.Active)
assert.Nil(t, filter.Domain)
assert.Nil(t, filter.Origin)
assert.Nil(t, filter.Title)

req := httptest.NewRequest("GET", "/", nil)
filter = NewTickerFilter(req)
assert.Nil(t, filter.Active)
assert.Nil(t, filter.Domain)
assert.Nil(t, filter.Origin)
assert.Nil(t, filter.Title)

req = httptest.NewRequest("GET", "/?active=true&domain=example.org&title=Title", nil)
req = httptest.NewRequest("GET", "/?active=true&origin=example.org&title=Title", nil)
filter = NewTickerFilter(req)
assert.True(t, *filter.Active)
assert.Equal(t, "example.org", *filter.Domain)
assert.Equal(t, "example.org", *filter.Origin)
assert.Equal(t, "Title", *filter.Title)

req = httptest.NewRequest("GET", "/?order_by=created_at&sort=asc", nil)
Expand Down

0 comments on commit a15b028

Please sign in to comment.