From ea1d04f2f0d4c10c32c9806bc15634581da021ea Mon Sep 17 00:00:00 2001 From: Alessio Date: Sun, 25 Feb 2024 17:00:31 -0800 Subject: [PATCH] Add query to get all Lists (to be used by List index page) --- pkg/persistence/list_queries.go | 15 +++++++++++---- pkg/persistence/list_queries_test.go | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/pkg/persistence/list_queries.go b/pkg/persistence/list_queries.go index 25c5a1b..d3589a2 100644 --- a/pkg/persistence/list_queries.go +++ b/pkg/persistence/list_queries.go @@ -95,7 +95,14 @@ func (p Profile) GetListUsers(list_id ListID) []User { return ret } -// XXX -// func (p Profile) GetFollowedUsers() List { -// err = -// } +func (p Profile) GetAllLists() []List { + var lists []List + err := p.DB.Select(&lists, `select rowid, is_online, online_list_id, name from lists`) + if err != nil { + panic(err) + } + for i := range lists { + lists[i].Users = p.GetListUsers(lists[i].ID) + } + return lists +} diff --git a/pkg/persistence/list_queries_test.go b/pkg/persistence/list_queries_test.go index 56e95a5..e217c69 100644 --- a/pkg/persistence/list_queries_test.go +++ b/pkg/persistence/list_queries_test.go @@ -152,3 +152,20 @@ func TestAddAndRemoveUserToList(t *testing.T) { // Should be gone require.Len(profile.GetListUsers(l.ID), 0) } + +func TestGetAllLists(t *testing.T) { + require := require.New(t) + assert := assert.New(t) + + profile, err := persistence.LoadProfile("../../sample_data/profile") + require.NoError(err) + + // Create a list + l := List{IsOnline: false, Name: fmt.Sprintf("Test List %d", rand.Int())} + profile.SaveList(&l) + + // Get all the lists + lists := profile.GetAllLists() + assert.True(len(lists) > 1) // Should be at least Offline Follows and `l` + assert.Contains(lists, l) +}