Add getting a subscription for a task

This commit is contained in:
kolaente 2021-02-13 20:33:31 +01:00
parent 3e0ce58d4c
commit 77767b2122
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 32 additions and 27 deletions

View File

@ -107,38 +107,37 @@ func getSubscription(s *xorm.Session, entityType SubscriptionEntityType, a web.A
)
}
if entityType == SubscriptionEntityTask {
cond = builder.Or(
builder.And(
builder.Eq{"entity_id": entityID},
builder.Eq{"entity_type": SubscriptionEntityTask},
),
builder.And(
builder.Eq{"entity_id": builder.
Select("namespace_id").
From("list").
Join("INNER", "tasks", "list.id = tasks.list_id").
Where(builder.Eq{"tasks.id": entityID}),
},
builder.Eq{"entity_type": SubscriptionEntityNamespace},
),
builder.And(
builder.Eq{"entity_id": builder.
Select("list_id").
From("tasks").
Where(builder.Eq{"id": entityID}),
},
builder.Eq{"entity_type": SubscriptionEntityList},
),
)
}
_, err = s.
Where("user_id = ?", u.ID).
And(cond).
Get(subscription)
return
//
//subscriptions := []*Subscription{}
//err = query.Find(&subscriptions)
//if err != nil {
// return
//}
//
//subscriptionsByType := make(map[SubscriptionEntityType]*Subscription, 3)
//for _, sb := range subscriptions {
// if sb.EntityType == SubscriptionEntityNamespace && entityType == SubscriptionEntityNamespace {
// return sb, nil
// }
// subscriptionsByType[sb.EntityType] = sb
//}
//
//if entityType == SubscriptionEntityList {
// // If there's a subscription for this list, return it directly
// sb, exists := subscriptionsByType[SubscriptionEntityList]
// if exists {
// return sb, nil
// }
//
// // Otherwise check if there's one for the namespace the list belongs to
// //sb, exists := subscriptionsByType[SubscriptionEntityNamespace]
//}
//
//return
}
// Create subscribes the current user to an entity

View File

@ -275,6 +275,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityNamespace, u, 6)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(2), sub.ID)
})
t.Run("list", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
@ -284,6 +285,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityList, u, 12)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(3), sub.ID)
})
t.Run("task", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
@ -293,6 +295,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityTask, u, 22)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(4), sub.ID)
})
})
t.Run("inherited", func(t *testing.T) {
@ -305,6 +308,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityList, u, 6)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(2), sub.ID)
})
t.Run("task from namespace", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
@ -315,6 +319,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityTask, u, 20)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(2), sub.ID)
})
t.Run("task from list", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
@ -325,6 +330,7 @@ func TestSubscriptionGet(t *testing.T) {
sub, err := getSubscription(s, SubscriptionEntityTask, u, 21)
assert.NoError(t, err)
assert.NotNil(t, sub)
assert.Equal(t, int64(3), sub.ID)
})
})
}