diff options
Diffstat (limited to 'internal/cliactions')
| -rw-r--r-- | internal/cliactions/admin/trans/export.go | 52 | ||||
| -rw-r--r-- | internal/cliactions/admin/trans/import.go | 56 | ||||
| -rw-r--r-- | internal/cliactions/server/server.go | 33 | 
3 files changed, 110 insertions, 31 deletions
| diff --git a/internal/cliactions/admin/trans/export.go b/internal/cliactions/admin/trans/export.go new file mode 100644 index 000000000..3d9607ea6 --- /dev/null +++ b/internal/cliactions/admin/trans/export.go @@ -0,0 +1,52 @@ +/* +   GoToSocial +   Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + +   This program is free software: you can redistribute it and/or modify +   it under the terms of the GNU Affero General Public License as published by +   the Free Software Foundation, either version 3 of the License, or +   (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU Affero General Public License for more details. + +   You should have received a copy of the GNU Affero General Public License +   along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +package trans + +import ( +	"context" +	"errors" +	"fmt" + +	"github.com/sirupsen/logrus" +	"github.com/superseriousbusiness/gotosocial/internal/cliactions" +	"github.com/superseriousbusiness/gotosocial/internal/config" +	"github.com/superseriousbusiness/gotosocial/internal/db/bundb" +	"github.com/superseriousbusiness/gotosocial/internal/trans" +) + +// Export exports info from the database into a file +var Export cliactions.GTSAction = func(ctx context.Context, c *config.Config, log *logrus.Logger) error { +	dbConn, err := bundb.NewBunDBService(ctx, c, log) +	if err != nil { +		return fmt.Errorf("error creating dbservice: %s", err) +	} + +	exporter := trans.NewExporter(dbConn, log) + +	path, ok := c.ExportCLIFlags[config.TransPathFlag] +	if !ok { +		return errors.New("no path set") +	} + +	if err := exporter.ExportMinimal(ctx, path); err != nil { +		return err +	} + +	return dbConn.Stop(ctx) +} diff --git a/internal/cliactions/admin/trans/import.go b/internal/cliactions/admin/trans/import.go new file mode 100644 index 000000000..7b137eccc --- /dev/null +++ b/internal/cliactions/admin/trans/import.go @@ -0,0 +1,56 @@ +/* +   GoToSocial +   Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + +   This program is free software: you can redistribute it and/or modify +   it under the terms of the GNU Affero General Public License as published by +   the Free Software Foundation, either version 3 of the License, or +   (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU Affero General Public License for more details. + +   You should have received a copy of the GNU Affero General Public License +   along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +package trans + +import ( +	"context" +	"errors" +	"fmt" + +	"github.com/sirupsen/logrus" +	"github.com/superseriousbusiness/gotosocial/internal/cliactions" +	"github.com/superseriousbusiness/gotosocial/internal/config" +	"github.com/superseriousbusiness/gotosocial/internal/db/bundb" +	"github.com/superseriousbusiness/gotosocial/internal/trans" +) + +// Import imports info from a file into the database +var Import cliactions.GTSAction = func(ctx context.Context, c *config.Config, log *logrus.Logger) error { +	dbConn, err := bundb.NewBunDBService(ctx, c, log) +	if err != nil { +		return fmt.Errorf("error creating dbservice: %s", err) +	} + +	importer := trans.NewImporter(dbConn, log) + +	path, ok := c.ExportCLIFlags[config.TransPathFlag] +	if !ok { +		return errors.New("no path set") +	} + +	if err := dbConn.CreateAllTables(ctx); err != nil { +		return err +	} + +	if err := importer.Import(ctx, path); err != nil { +		return err +	} + +	return dbConn.Stop(ctx) +} diff --git a/internal/cliactions/server/server.go b/internal/cliactions/server/server.go index 0769ade82..3ef714fb0 100644 --- a/internal/cliactions/server/server.go +++ b/internal/cliactions/server/server.go @@ -39,7 +39,6 @@ import (  	"github.com/superseriousbusiness/gotosocial/internal/federation"  	"github.com/superseriousbusiness/gotosocial/internal/federation/federatingdb"  	"github.com/superseriousbusiness/gotosocial/internal/gotosocial" -	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"  	"github.com/superseriousbusiness/gotosocial/internal/media"  	"github.com/superseriousbusiness/gotosocial/internal/oauth"  	"github.com/superseriousbusiness/gotosocial/internal/oidc" @@ -51,32 +50,6 @@ import (  	"github.com/superseriousbusiness/gotosocial/internal/web"  ) -var models []interface{} = []interface{}{ -	>smodel.Account{}, -	>smodel.Application{}, -	>smodel.Block{}, -	>smodel.DomainBlock{}, -	>smodel.EmailDomainBlock{}, -	>smodel.Follow{}, -	>smodel.FollowRequest{}, -	>smodel.MediaAttachment{}, -	>smodel.Mention{}, -	>smodel.Status{}, -	>smodel.StatusToEmoji{}, -	>smodel.StatusToTag{}, -	>smodel.StatusFave{}, -	>smodel.StatusBookmark{}, -	>smodel.StatusMute{}, -	>smodel.Tag{}, -	>smodel.User{}, -	>smodel.Emoji{}, -	>smodel.Instance{}, -	>smodel.Notification{}, -	>smodel.RouterSession{}, -	>smodel.Token{}, -	>smodel.Client{}, -} -  // Start creates and starts a gotosocial server  var Start cliactions.GTSAction = func(ctx context.Context, c *config.Config, log *logrus.Logger) error {  	dbService, err := bundb.NewBunDBService(ctx, c, log) @@ -84,10 +57,8 @@ var Start cliactions.GTSAction = func(ctx context.Context, c *config.Config, log  		return fmt.Errorf("error creating dbservice: %s", err)  	} -	for _, m := range models { -		if err := dbService.CreateTable(ctx, m); err != nil { -			return fmt.Errorf("table creation error: %s", err) -		} +	if err := dbService.CreateAllTables(ctx); err != nil { +		return fmt.Errorf("error creating database tables: %s", err)  	}  	if err := dbService.CreateInstanceAccount(ctx); err != nil { | 
