mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-29 18:06:15 -06:00
review changes
This commit is contained in:
parent
5f322e0fac
commit
3db03abcc4
4 changed files with 39 additions and 39 deletions
|
|
@ -66,14 +66,14 @@ func (e *exporter) accountEncode(ctx context.Context, f *os.File, a *transmodel.
|
|||
//
|
||||
// Beware, the 'type' key on the passed interface should already have been set, since simpleEncode won't know
|
||||
// what type it is! If you try to decode stuff you've encoded with a missing type key, you're going to have a bad time.
|
||||
func (e *exporter) simpleEncode(ctx context.Context, f *os.File, i interface{}, id string) error {
|
||||
func (e *exporter) simpleEncode(ctx context.Context, file *os.File, i interface{}, id string) error {
|
||||
_, alreadyWritten := e.writtenIDs[id]
|
||||
if alreadyWritten {
|
||||
// this exporter has already exported an entry with this ID, no need to do it twice
|
||||
return nil
|
||||
}
|
||||
|
||||
err := json.NewEncoder(f).Encode(i)
|
||||
err := json.NewEncoder(file).Encode(i)
|
||||
if err != nil {
|
||||
return fmt.Errorf("simpleEncode: error encoding entry with id %s: %s", id, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import (
|
|||
transmodel "github.com/superseriousbusiness/gotosocial/internal/trans/model"
|
||||
)
|
||||
|
||||
func (e *exporter) exportAccounts(ctx context.Context, where []db.Where, f *os.File) ([]*transmodel.Account, error) {
|
||||
func (e *exporter) exportAccounts(ctx context.Context, where []db.Where, file *os.File) ([]*transmodel.Account, error) {
|
||||
// select using the 'where' we've been provided
|
||||
accounts := []*transmodel.Account{}
|
||||
if err := e.db.GetWhere(ctx, where, &accounts); err != nil {
|
||||
|
|
@ -34,7 +34,7 @@ func (e *exporter) exportAccounts(ctx context.Context, where []db.Where, f *os.F
|
|||
|
||||
// write any accounts found to file
|
||||
for _, a := range accounts {
|
||||
if err := e.accountEncode(ctx, f, a); err != nil {
|
||||
if err := e.accountEncode(ctx, file, a); err != nil {
|
||||
return nil, fmt.Errorf("exportAccounts: error encoding account: %s", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ func (e *exporter) exportAccounts(ctx context.Context, where []db.Where, f *os.F
|
|||
return accounts, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportBlocks(ctx context.Context, accounts []*transmodel.Account, f *os.File) ([]*transmodel.Block, error) {
|
||||
func (e *exporter) exportBlocks(ctx context.Context, accounts []*transmodel.Account, file *os.File) ([]*transmodel.Block, error) {
|
||||
blocksUnique := make(map[string]*transmodel.Block)
|
||||
|
||||
// for each account we want to export both where it's blocking and where it's blocked
|
||||
|
|
@ -55,7 +55,7 @@ func (e *exporter) exportBlocks(ctx context.Context, accounts []*transmodel.Acco
|
|||
}
|
||||
for _, b := range blocking {
|
||||
b.Type = transmodel.TransBlock
|
||||
if err := e.simpleEncode(ctx, f, b, b.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, b, b.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportBlocks: error encoding block owned by account %s: %s", a.ID, err)
|
||||
}
|
||||
blocksUnique[b.ID] = b
|
||||
|
|
@ -69,7 +69,7 @@ func (e *exporter) exportBlocks(ctx context.Context, accounts []*transmodel.Acco
|
|||
}
|
||||
for _, b := range blocked {
|
||||
b.Type = transmodel.TransBlock
|
||||
if err := e.simpleEncode(ctx, f, b, b.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, b, b.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportBlocks: error encoding block targeting account %s: %s", a.ID, err)
|
||||
}
|
||||
blocksUnique[b.ID] = b
|
||||
|
|
@ -85,7 +85,7 @@ func (e *exporter) exportBlocks(ctx context.Context, accounts []*transmodel.Acco
|
|||
return blocks, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportDomainBlocks(ctx context.Context, f *os.File) ([]*transmodel.DomainBlock, error) {
|
||||
func (e *exporter) exportDomainBlocks(ctx context.Context, file *os.File) ([]*transmodel.DomainBlock, error) {
|
||||
domainBlocks := []*transmodel.DomainBlock{}
|
||||
|
||||
if err := e.db.GetAll(ctx, &domainBlocks); err != nil {
|
||||
|
|
@ -94,7 +94,7 @@ func (e *exporter) exportDomainBlocks(ctx context.Context, f *os.File) ([]*trans
|
|||
|
||||
for _, b := range domainBlocks {
|
||||
b.Type = transmodel.TransDomainBlock
|
||||
if err := e.simpleEncode(ctx, f, b, b.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, b, b.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportBlocks: error encoding domain block: %s", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -102,7 +102,7 @@ func (e *exporter) exportDomainBlocks(ctx context.Context, f *os.File) ([]*trans
|
|||
return domainBlocks, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportFollows(ctx context.Context, accounts []*transmodel.Account, f *os.File) ([]*transmodel.Follow, error) {
|
||||
func (e *exporter) exportFollows(ctx context.Context, accounts []*transmodel.Account, file *os.File) ([]*transmodel.Follow, error) {
|
||||
followsUnique := make(map[string]*transmodel.Follow)
|
||||
|
||||
// for each account we want to export both where it's following and where it's followed
|
||||
|
|
@ -115,7 +115,7 @@ func (e *exporter) exportFollows(ctx context.Context, accounts []*transmodel.Acc
|
|||
}
|
||||
for _, follow := range following {
|
||||
follow.Type = transmodel.TransFollow
|
||||
if err := e.simpleEncode(ctx, f, follow, follow.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, follow, follow.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportFollows: error encoding follow owned by account %s: %s", a.ID, err)
|
||||
}
|
||||
followsUnique[follow.ID] = follow
|
||||
|
|
@ -129,7 +129,7 @@ func (e *exporter) exportFollows(ctx context.Context, accounts []*transmodel.Acc
|
|||
}
|
||||
for _, follow := range followed {
|
||||
follow.Type = transmodel.TransFollow
|
||||
if err := e.simpleEncode(ctx, f, follow, follow.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, follow, follow.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportFollows: error encoding follow targeting account %s: %s", a.ID, err)
|
||||
}
|
||||
followsUnique[follow.ID] = follow
|
||||
|
|
@ -145,7 +145,7 @@ func (e *exporter) exportFollows(ctx context.Context, accounts []*transmodel.Acc
|
|||
return follows, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportFollowRequests(ctx context.Context, accounts []*transmodel.Account, f *os.File) ([]*transmodel.FollowRequest, error) {
|
||||
func (e *exporter) exportFollowRequests(ctx context.Context, accounts []*transmodel.Account, file *os.File) ([]*transmodel.FollowRequest, error) {
|
||||
frsUnique := make(map[string]*transmodel.FollowRequest)
|
||||
|
||||
// for each account we want to export both where it's following and where it's followed
|
||||
|
|
@ -158,7 +158,7 @@ func (e *exporter) exportFollowRequests(ctx context.Context, accounts []*transmo
|
|||
}
|
||||
for _, fr := range requesting {
|
||||
fr.Type = transmodel.TransFollowRequest
|
||||
if err := e.simpleEncode(ctx, f, fr, fr.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, fr, fr.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportFollowRequests: error encoding follow request owned by account %s: %s", a.ID, err)
|
||||
}
|
||||
frsUnique[fr.ID] = fr
|
||||
|
|
@ -172,7 +172,7 @@ func (e *exporter) exportFollowRequests(ctx context.Context, accounts []*transmo
|
|||
}
|
||||
for _, fr := range requested {
|
||||
fr.Type = transmodel.TransFollowRequest
|
||||
if err := e.simpleEncode(ctx, f, fr, fr.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, fr, fr.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportFollowRequests: error encoding follow request targeting account %s: %s", a.ID, err)
|
||||
}
|
||||
frsUnique[fr.ID] = fr
|
||||
|
|
@ -188,7 +188,7 @@ func (e *exporter) exportFollowRequests(ctx context.Context, accounts []*transmo
|
|||
return followRequests, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportInstances(ctx context.Context, f *os.File) ([]*transmodel.Instance, error) {
|
||||
func (e *exporter) exportInstances(ctx context.Context, file *os.File) ([]*transmodel.Instance, error) {
|
||||
instances := []*transmodel.Instance{}
|
||||
|
||||
if err := e.db.GetAll(ctx, &instances); err != nil {
|
||||
|
|
@ -197,7 +197,7 @@ func (e *exporter) exportInstances(ctx context.Context, f *os.File) ([]*transmod
|
|||
|
||||
for _, u := range instances {
|
||||
u.Type = transmodel.TransInstance
|
||||
if err := e.simpleEncode(ctx, f, u, u.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, u, u.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportInstances: error encoding instance: %s", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -205,7 +205,7 @@ func (e *exporter) exportInstances(ctx context.Context, f *os.File) ([]*transmod
|
|||
return instances, nil
|
||||
}
|
||||
|
||||
func (e *exporter) exportUsers(ctx context.Context, f *os.File) ([]*transmodel.User, error) {
|
||||
func (e *exporter) exportUsers(ctx context.Context, file *os.File) ([]*transmodel.User, error) {
|
||||
users := []*transmodel.User{}
|
||||
|
||||
if err := e.db.GetAll(ctx, &users); err != nil {
|
||||
|
|
@ -214,7 +214,7 @@ func (e *exporter) exportUsers(ctx context.Context, f *os.File) ([]*transmodel.U
|
|||
|
||||
for _, u := range users {
|
||||
u.Type = transmodel.TransUser
|
||||
if err := e.simpleEncode(ctx, f, u, u.ID); err != nil {
|
||||
if err := e.simpleEncode(ctx, file, u, u.ID); err != nil {
|
||||
return nil, fmt.Errorf("exportUsers: error encoding user: %s", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,19 +32,19 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
return errors.New("ExportMinimal: path empty")
|
||||
}
|
||||
|
||||
f, err := os.Create(path)
|
||||
file, err := os.Create(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: couldn't export to %s: %s", path, err)
|
||||
}
|
||||
|
||||
// export all local accounts we have in the database
|
||||
localAccounts, err := e.exportAccounts(ctx, []db.Where{{Key: "domain", Value: nil}}, f)
|
||||
localAccounts, err := e.exportAccounts(ctx, []db.Where{{Key: "domain", Value: nil}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting accounts: %s", err)
|
||||
}
|
||||
|
||||
// export all blocks that relate to local accounts
|
||||
blocks, err := e.exportBlocks(ctx, localAccounts, f)
|
||||
blocks, err := e.exportBlocks(ctx, localAccounts, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting blocks: %s", err)
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
for _, b := range blocks {
|
||||
_, alreadyWritten := e.writtenIDs[b.AccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: b.AccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: b.AccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting block owner account: %s", err)
|
||||
}
|
||||
|
|
@ -62,7 +62,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
|
||||
_, alreadyWritten = e.writtenIDs[b.TargetAccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: b.TargetAccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: b.TargetAccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting block target account: %s", err)
|
||||
}
|
||||
|
|
@ -70,7 +70,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
}
|
||||
|
||||
// export all follows that relate to local accounts
|
||||
follows, err := e.exportFollows(ctx, localAccounts, f)
|
||||
follows, err := e.exportFollows(ctx, localAccounts, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follows: %s", err)
|
||||
}
|
||||
|
|
@ -80,7 +80,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
for _, follow := range follows {
|
||||
_, alreadyWritten := e.writtenIDs[follow.AccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: follow.AccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: follow.AccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follow owner account: %s", err)
|
||||
}
|
||||
|
|
@ -88,7 +88,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
|
||||
_, alreadyWritten = e.writtenIDs[follow.TargetAccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: follow.TargetAccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: follow.TargetAccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follow target account: %s", err)
|
||||
}
|
||||
|
|
@ -96,17 +96,17 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
}
|
||||
|
||||
// export all follow requests that relate to local accounts
|
||||
frs, err := e.exportFollowRequests(ctx, localAccounts, f)
|
||||
followRequests, err := e.exportFollowRequests(ctx, localAccounts, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follow requests: %s", err)
|
||||
}
|
||||
|
||||
// for each follow request, make sure we've written out the account owning it, or targeted by it --
|
||||
// this might include non-local accounts, but we need these so we don't lose anything
|
||||
for _, fr := range frs {
|
||||
for _, fr := range followRequests {
|
||||
_, alreadyWritten := e.writtenIDs[fr.AccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: fr.AccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: fr.AccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follow request owner account: %s", err)
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
|
||||
_, alreadyWritten = e.writtenIDs[fr.TargetAccountID]
|
||||
if !alreadyWritten {
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: fr.TargetAccountID}}, f)
|
||||
_, err := e.exportAccounts(ctx, []db.Where{{Key: "id", Value: fr.TargetAccountID}}, file)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting follow request target account: %s", err)
|
||||
}
|
||||
|
|
@ -122,17 +122,17 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
}
|
||||
|
||||
// export all domain blocks
|
||||
if _, err := e.exportDomainBlocks(ctx, f); err != nil {
|
||||
if _, err := e.exportDomainBlocks(ctx, file); err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting domain blocks: %s", err)
|
||||
}
|
||||
|
||||
// export all users
|
||||
if _, err := e.exportUsers(ctx, f); err != nil {
|
||||
if _, err := e.exportUsers(ctx, file); err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting users: %s", err)
|
||||
}
|
||||
|
||||
// export all instances
|
||||
if _, err := e.exportInstances(ctx, f); err != nil {
|
||||
if _, err := e.exportInstances(ctx, file); err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting instances: %s", err)
|
||||
}
|
||||
|
||||
|
|
@ -142,9 +142,9 @@ func (e *exporter) ExportMinimal(ctx context.Context, path string) error {
|
|||
Not: true,
|
||||
Value: nil,
|
||||
}}
|
||||
if _, err := e.exportAccounts(ctx, whereSuspended, f); err != nil {
|
||||
if _, err := e.exportAccounts(ctx, whereSuspended, file); err != nil {
|
||||
return fmt.Errorf("ExportMinimal: error exporting suspended accounts: %s", err)
|
||||
}
|
||||
|
||||
return neatClose(f)
|
||||
return neatClose(file)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,12 +34,12 @@ func (i *importer) Import(ctx context.Context, path string) error {
|
|||
return errors.New("Export: path empty")
|
||||
}
|
||||
|
||||
f, err := os.Open(path)
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Import: couldn't export to %s: %s", path, err)
|
||||
}
|
||||
|
||||
decoder := json.NewDecoder(f)
|
||||
decoder := json.NewDecoder(file)
|
||||
decoder.UseNumber()
|
||||
|
||||
for {
|
||||
|
|
@ -48,7 +48,7 @@ func (i *importer) Import(ctx context.Context, path string) error {
|
|||
if err != nil {
|
||||
if err == io.EOF {
|
||||
i.log.Infof("Import: reached end of file")
|
||||
return neatClose(f)
|
||||
return neatClose(file)
|
||||
}
|
||||
return fmt.Errorf("Import: error decoding in readLoop: %s", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue