-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
star.go
40 lines (35 loc) · 854 Bytes
/
star.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package tube
import (
"context"
"time"
)
type Star struct {
UserID int `dynamo:",hash"`
SSID SSID `dynamo:",range"`
Date time.Time
}
func SetStar(ctx context.Context, userID int, ssid SSID, date time.Time) error {
table := dynamoTable("Stars")
return table.Put(Star{
UserID: userID,
SSID: ssid,
Date: date,
}).Run()
}
func DeleteStar(ctx context.Context, userID int, ssid string) error {
table := dynamoTable("Stars")
return table.Delete("UserID", userID).Range("SSID", ssid).Run()
}
func GetStars(ctx context.Context, userID int) (map[SSID]Star, error) {
table := dynamoTable("Stars")
iter := table.Get("UserID", userID).Iter()
stars := make(map[SSID]Star)
var s Star
for iter.Next(&s) {
stars[s.SSID] = s
}
if err := iter.Err(); err != nil && iter.Err() != ErrNotFound {
return nil, err
}
return stars, nil
}