summaryrefslogtreecommitdiff
path: root/internal/typeutils/csv.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/typeutils/csv.go')
-rw-r--r--internal/typeutils/csv.go71
1 files changed, 27 insertions, 44 deletions
diff --git a/internal/typeutils/csv.go b/internal/typeutils/csv.go
index 063e31d54..b1e35ef1a 100644
--- a/internal/typeutils/csv.go
+++ b/internal/typeutils/csv.go
@@ -34,16 +34,14 @@ func (c *Converter) AccountToExportStats(
a *gtsmodel.Account,
) (*apimodel.AccountExportStats, error) {
// Ensure account stats populated.
- if a.Stats == nil {
- if err := c.state.DB.PopulateAccountStats(ctx, a); err != nil {
- return nil, gtserror.Newf(
- "error getting stats for account %s: %w",
- a.ID, err,
- )
- }
+ if err := c.state.DB.PopulateAccountStats(ctx, a); err != nil {
+ return nil, gtserror.Newf(
+ "error getting stats for account %s: %w",
+ a.ID, err,
+ )
}
- listsCount, err := c.state.DB.CountListsForAccountID(ctx, a.ID)
+ listsCount, err := c.state.DB.CountListsByAccountID(ctx, a.ID)
if err != nil {
return nil, gtserror.Newf(
"error counting lists for account %s: %w",
@@ -202,6 +200,7 @@ func (c *Converter) ListsToCSV(
ctx context.Context,
lists []*gtsmodel.List,
) ([][]string, error) {
+
// We need to know our own domain for this.
// Try account domain, fall back to host.
thisDomain := config.GetAccountDomain()
@@ -215,41 +214,23 @@ func (c *Converter) ListsToCSV(
// For each item, add a record.
for _, list := range lists {
- for _, entry := range list.ListEntries {
- if entry.Follow == nil {
- // Retrieve follow.
- var err error
- entry.Follow, err = c.state.DB.GetFollowByID(
- ctx,
- entry.FollowID,
- )
- if err != nil {
- return nil, gtserror.Newf(
- "db error getting follow for list entry %s: %w",
- entry.ID, err,
- )
- }
- }
- if entry.Follow.TargetAccount == nil {
- // Retrieve account.
- var err error
- entry.Follow.TargetAccount, err = c.state.DB.GetAccountByID(
- // Barebones is fine here.
- gtscontext.SetBarebones(ctx),
- entry.Follow.TargetAccountID,
- )
- if err != nil {
- return nil, gtserror.Newf(
- "db error getting target account for list entry %s: %w",
- entry.ID, err,
- )
- }
- }
+ // Get all follows contained with this list.
+ follows, err := c.state.DB.GetFollowsInList(ctx,
+ list.ID,
+ nil,
+ )
+ if err != nil {
+ err := gtserror.Newf("db error getting follows for list: %w", err)
+ return nil, err
+ }
+ // Append each follow as CSV record.
+ for _, follow := range follows {
var (
- username = entry.Follow.TargetAccount.Username
- domain = entry.Follow.TargetAccount.Domain
+ // Extract username / domain from target.
+ username = follow.TargetAccount.Username
+ domain = follow.TargetAccount.Domain
)
if domain == "" {
@@ -259,14 +240,16 @@ func (c *Converter) ListsToCSV(
}
records = append(records, []string{
- // List title: eg., Very cool list
+ // List title: e.g.
+ // Very cool list
list.Title,
- // Account address: eg., someone@example.org
- // -- NOTE: without the leading '@'!
+
+ // Account address: e.g.,
+ // someone@example.org
+ // NOTE: without the leading '@'!
username + "@" + domain,
})
}
-
}
return records, nil