diff options
| author | 2021-03-09 17:03:40 +0100 | |
|---|---|---|
| committer | 2021-03-09 17:03:40 +0100 | |
| commit | 9a79d176c91de59a409d06efc8837c1d8f38b5c0 (patch) | |
| tree | f4582b8eb2f57cfa356b593420308a462a2811db /internal/gotosocial | |
| parent | add note struct (diff) | |
| download | gotosocial-9a79d176c91de59a409d06efc8837c1d8f38b5c0.tar.xz | |
moving stuff around, stubbing interfaces
Diffstat (limited to 'internal/gotosocial')
| -rw-r--r-- | internal/gotosocial/actions.go | 58 | ||||
| -rw-r--r-- | internal/gotosocial/gotosocial.go | 60 |
2 files changed, 118 insertions, 0 deletions
diff --git a/internal/gotosocial/actions.go b/internal/gotosocial/actions.go new file mode 100644 index 000000000..3d3fdc366 --- /dev/null +++ b/internal/gotosocial/actions.go @@ -0,0 +1,58 @@ +/* + 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 gotosocial + +import ( + "context" + "fmt" + "os" + "os/signal" + "syscall" + + "github.com/gotosocial/gotosocial/internal/action" + "github.com/gotosocial/gotosocial/internal/config" + "github.com/gotosocial/gotosocial/internal/db" + "github.com/sirupsen/logrus" +) + +// Run creates and starts a gotosocial server +var Run action.GTSAction = func(ctx context.Context, c *config.Config, log *logrus.Logger) error { + dbService, err := db.New(ctx, c, log) + if err != nil { + return fmt.Errorf("error creating dbservice: %s", err) + } + + if err := dbService.CreateSchema(ctx); err != nil { + return fmt.Errorf("error creating dbschema: %s", err) + } + + // catch shutdown signals from the operating system + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, os.Interrupt, syscall.SIGTERM) + sig := <-sigs + log.Infof("received signal %s, shutting down", sig) + + // close down all running services in order + if err := dbService.Stop(ctx); err != nil { + return fmt.Errorf("error closing dbservice: %s", err) + } + + log.Info("done! exiting...") + return nil +} diff --git a/internal/gotosocial/gotosocial.go b/internal/gotosocial/gotosocial.go new file mode 100644 index 000000000..8ad79e09d --- /dev/null +++ b/internal/gotosocial/gotosocial.go @@ -0,0 +1,60 @@ +/* + 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 gotosocial + +import ( + "context" + + "github.com/go-fed/activity/pub" + "github.com/gotosocial/gotosocial/internal/cache" + "github.com/gotosocial/gotosocial/internal/client" + "github.com/gotosocial/gotosocial/internal/config" + "github.com/gotosocial/gotosocial/internal/db" +) + +type Gotosocial interface { + Start(context.Context) error + Stop(context.Context) error +} + +func New(db db.DB, cache cache.Cache, clientAPI client.API, federationAPI pub.FederatingActor, config *config.Config) (Gotosocial, error) { + return &gotosocial{ + db: db, + cache: cache, + clientAPI: clientAPI, + federationAPI: federationAPI, + config: config, + }, nil +} + +type gotosocial struct { + db db.DB + cache cache.Cache + clientAPI client.API + federationAPI pub.FederatingActor + config *config.Config +} + +func (gts *gotosocial) Start(ctx context.Context) error { + return nil +} + +func (gts *gotosocial) Stop(ctx context.Context) error { + return nil +} |
