Skip to content

Commit 8dd48ae

Browse files
authored
Merge pull request #254 from twitchdev/freeform-tags-updates
Freeform tags updates
2 parents 90b03e8 + e0add2e commit 8dd48ae

12 files changed

Lines changed: 79 additions & 369 deletions

File tree

internal/database/database.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ func getDatabase() (sqlx.DB, error) {
6565
}
6666
}
6767
db.SetMaxOpenConns(1)
68-
checkAndUpdate(*db)
68+
err = checkAndUpdate(*db)
69+
if err != nil {
70+
os.Exit(99)
71+
}
72+
6973
return *db, nil
7074
}
7175
return sqlx.DB{}, nil

internal/database/database_test.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -619,14 +619,6 @@ func TestStreams(t *testing.T) {
619619
tags := dbr.Data.([]Tag)
620620
a.GreaterOrEqual(len(tags), 1)
621621

622-
err = q.InsertStreamTag(StreamTag{TagID: tag.ID, UserID: TEST_USER_ID})
623-
a.Nil(err)
624-
625-
dbr, err = q.GetStreamTags(TEST_USER_ID)
626-
a.Nil(err)
627-
tags = dbr.Data.([]Tag)
628-
a.GreaterOrEqual(len(tags), 0)
629-
630622
dbr, err = q.GetFollowedStreams(s.UserID)
631623
a.Nil(err)
632624
streams := dbr.Data.([]Stream)
@@ -647,9 +639,6 @@ func TestStreams(t *testing.T) {
647639
stream := streams[0]
648640
a.GreaterOrEqual(len(stream.TagIDs), 0)
649641

650-
err = q.DeleteAllStreamTags(s.UserID)
651-
a.Nil(err)
652-
653642
v := Video{
654643
ID: util.RandomGUID(),
655644
StreamID: &s.ID,

internal/database/init.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"github.com/jmoiron/sqlx"
1111
)
1212

13-
const currentVersion = 5
13+
const currentVersion = 6
1414

1515
type migrateMap struct {
1616
SQL string
@@ -49,6 +49,10 @@ ALTER TABLE users ADD COLUMN branded_content boolean not null default false;
4949
ALTER TABLE users ADD COLUMN content_labels text not null default '';`,
5050
Message: `Updating database to include Content Classification Label field.`,
5151
},
52+
6: {
53+
SQL: `DROP TABLE IF EXISTS stream_tags;`,
54+
Message: `Removing deprecated stream_tags from database.`,
55+
},
5256
}
5357

5458
func checkAndUpdate(db sqlx.DB) error {
@@ -70,6 +74,8 @@ func checkAndUpdate(db sqlx.DB) error {
7074
for i := v; i < len(migrateSQL); i++ {
7175
_, err = db.Exec(migrateSQL[i].SQL)
7276
if err != nil {
77+
fmt.Printf("DB Upgrade Error - %v\n", err)
78+
fmt.Println("Exiting program. Please report this bug, and delete your Twitch CLI db file to regenerate it.")
7379
return err
7480
}
7581

@@ -99,7 +105,6 @@ create table channel_points_rewards( id text not null primary key, broadcaster_i
99105
create table channel_points_redemptions( id text not null primary key, reward_id text not null, broadcaster_id text not null, user_id text not null, user_input text, redemption_status text not null, redeemed_at text, foreign key (reward_id) references channel_points_rewards(id), foreign key (broadcaster_id) references users(id), foreign key (user_id) references users(id) );
100106
create table streams( id text not null primary key, broadcaster_id id text not null, stream_type text not null default 'live', viewer_count int not null, started_at text not null, is_mature boolean not null default false, foreign key (broadcaster_id) references users(id) );
101107
create table tags( id text not null primary key, is_auto boolean not null default false, tag_name text not null );
102-
create table stream_tags( user_id text not null, tag_id text not null, primary key(user_id, tag_id), foreign key(user_id) references users(id), foreign key(tag_id) references tags(id) );
103108
create table teams( id text not null primary key, background_image_url text, banner text, created_at text not null, updated_at text, info text, thumbnail_url text, team_name text, team_display_name text );
104109
create table team_members( team_id text not null, user_id text not null, primary key (team_id, user_id) foreign key (team_id) references teams(id), foreign key (user_id) references users(id) );
105110
create table videos( id text not null primary key, stream_id text, broadcaster_id text not null, title text not null, video_description text not null, created_at text not null, published_at text, viewable text not null, view_count int not null default 0, duration text not null, video_language text not null default 'en', category_id text, type text default 'archive', foreign key (stream_id) references streams(id), foreign key (broadcaster_id) references users(id), foreign key (category_id) references categories(id) );

internal/database/streams.go

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ type Stream struct {
3030
ThumbnailURL string `json:"thumbnail_url"`
3131
}
3232

33-
type StreamTag struct {
34-
TagID string `db:"tag_id" json:"tag_id"`
35-
UserID string `db:"user_id" json:"-"`
36-
}
37-
3833
type Tag struct {
3934
ID string `db:"id" json:"id"`
4035
IsAuto bool `db:"is_auto" dbi:"false" json:"is_auto"`
@@ -145,45 +140,12 @@ func (q *Query) GetTags(t Tag) (*DBResponse, error) {
145140
return &dbr, err
146141
}
147142

148-
func (q *Query) GetStreamTags(id string) (*DBResponse, error) {
149-
r := []Tag{}
150-
err := q.DB.Select(&r, "select t.* from tags t join stream_tags st on st.tag_id = t.id where st.user_id=$1", id)
151-
if err != nil {
152-
return nil, err
153-
}
154-
155-
dbr := DBResponse{
156-
Data: r,
157-
Limit: q.Limit,
158-
Total: len(r),
159-
}
160-
161-
if len(r) != q.Limit {
162-
q.PaginationCursor = ""
163-
}
164-
165-
dbr.Cursor = q.PaginationCursor
166-
167-
return &dbr, err
168-
}
169-
170143
func (q *Query) InsertTag(t Tag) error {
171144
stmt := generateInsertSQL("tags", "", t, false)
172145
_, err := q.DB.NamedExec(stmt, t)
173146
return err
174147
}
175148

176-
func (q *Query) InsertStreamTag(st StreamTag) error {
177-
stmt := generateInsertSQL("stream_tags", "", st, false)
178-
_, err := q.DB.NamedExec(stmt, st)
179-
return err
180-
}
181-
182-
func (q *Query) DeleteAllStreamTags(userID string) error {
183-
_, err := q.DB.Exec("delete from stream_tags where user_id = $1", userID)
184-
return err
185-
}
186-
187149
func (q *Query) GetFollowedStreams(userID string) (*DBResponse, error) {
188150
var r = []Stream{}
189151
sql := "select s.*, u1.user_login as broadcaster_login, u1.display_name as broadcaster_name, u1.category_id as category_id, c.category_name, u1.stream_language as stream_language, u1.title as title from streams s join users u1 on s.broadcaster_id = u1.id left join categories c on c.id = u1.category_id join follows f on f.broadcaster_id = s.broadcaster_id where f.user_id = $1"
@@ -195,7 +157,6 @@ func (q *Query) GetFollowedStreams(userID string) (*DBResponse, error) {
195157
}
196158

197159
for i, s := range r {
198-
var st []string
199160
if err != nil {
200161
return nil, err
201162
}
@@ -205,11 +166,6 @@ func (q *Query) GetFollowedStreams(userID string) (*DBResponse, error) {
205166
if s.CategoryName.Valid {
206167
r[i].RealCategoryName = s.CategoryName.String
207168
}
208-
err = q.DB.Select(&st, "select tag_id from stream_tags where user_id=$1", s.UserID)
209-
if err != nil {
210-
return nil, err
211-
}
212-
r[i].TagIDs = st
213169
}
214170

215171
dbr := DBResponse{

internal/database/user.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,17 +330,10 @@ func (q *Query) SearchChannels(query string, live_only bool) (*DBResponse, error
330330
}
331331

332332
for i, c := range r {
333-
st := []string{}
334-
err = q.DB.Select(&st, "select tag_id from stream_tags where user_id=$1", c.ID)
335-
if err != nil {
336-
return nil, err
337-
}
338-
339333
emptyString := ""
340334
if c.StartedAt == nil {
341335
r[i].StartedAt = &emptyString
342336
}
343-
r[i].TagIDs = st // // Needs to be removed from db when this is fully removed from API
344337
r[i].Tags = []string{"English", "CLI Tag"}
345338
r[i].ThumbNailURL = "https://static-cdn.jtvnw.net/jtv_user_pictures/3f13ab61-ec78-4fe6-8481-8682cb3b0ac2-channel_offline_image-300x300.png"
346339
}

internal/events/types/channel_update_v2/channel_update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,5 @@ func (e Event) GetEventSubAlias(t string) string {
143143
}
144144

145145
func (e Event) SubscriptionVersion() string {
146-
return "beta"
146+
return "2"
147147
}

internal/mock_api/endpoints/endpoints.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,10 @@ func All() []mock_api.MockEndpoint {
7474
schedule.ScheduleSettings{},
7575
search.SearchCategories{},
7676
search.SearchChannels{},
77-
streams.AllTags{},
7877
streams.FollowedStreams{},
7978
streams.Markers{},
8079
streams.StreamKey{},
8180
streams.Streams{},
82-
streams.StreamTags{},
8381
subscriptions.BroadcasterSubscriptions{},
8482
subscriptions.UserSubscriptions{},
8583
teams.ChannelTeams{},
@@ -91,3 +89,26 @@ func All() []mock_api.MockEndpoint {
9189
whispers.Whispers{},
9290
}
9391
}
92+
93+
// All these endpoints return 410 Gone
94+
func Gone() map[string][]string {
95+
return map[string][]string{
96+
"/tags/streams": {
97+
"GET",
98+
},
99+
"/streams/tags": {
100+
"GET",
101+
"POST",
102+
"PUT",
103+
},
104+
"/soundtrack/current_track": {
105+
"GET",
106+
},
107+
"/soundtrack/playlist": {
108+
"GET",
109+
},
110+
"/soundtrack/playlists": {
111+
"GET",
112+
},
113+
}
114+
}

internal/mock_api/endpoints/streams/all_tags.go

Lines changed: 0 additions & 98 deletions
This file was deleted.

0 commit comments

Comments
 (0)