summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gotosocial/action/admin/account/account.go3
-rw-r--r--cmd/gotosocial/action/admin/media/list.go2
-rw-r--r--cmd/gotosocial/action/admin/media/prune/common.go4
-rw-r--r--cmd/gotosocial/action/admin/trans/export.go4
-rw-r--r--cmd/gotosocial/action/admin/trans/import.go4
-rw-r--r--cmd/gotosocial/action/server/server.go27
-rw-r--r--cmd/gotosocial/action/testrig/testrig.go29
7 files changed, 50 insertions, 23 deletions
diff --git a/cmd/gotosocial/action/admin/account/account.go b/cmd/gotosocial/action/admin/account/account.go
index 57d0d3805..7dfb6b1d4 100644
--- a/cmd/gotosocial/action/admin/account/account.go
+++ b/cmd/gotosocial/action/admin/account/account.go
@@ -40,7 +40,8 @@ func initState(ctx context.Context) (*state.State, error) {
state.Caches.Init()
state.Caches.Start()
- // Set the state DB connection
+ // Only set state DB connection.
+ // Don't need Actions or Workers for this (yet).
dbConn, err := bundb.NewBunDBService(ctx, &state)
if err != nil {
return nil, fmt.Errorf("error creating dbConn: %w", err)
diff --git a/cmd/gotosocial/action/admin/media/list.go b/cmd/gotosocial/action/admin/media/list.go
index 547954d4c..a017539ed 100644
--- a/cmd/gotosocial/action/admin/media/list.go
+++ b/cmd/gotosocial/action/admin/media/list.go
@@ -127,6 +127,8 @@ func setupList(ctx context.Context) (*list, error) {
state.Caches.Init()
state.Caches.Start()
+ // Only set state DB connection.
+ // Don't need Actions or Workers for this.
dbService, err := bundb.NewBunDBService(ctx, &state)
if err != nil {
return nil, fmt.Errorf("error creating dbservice: %w", err)
diff --git a/cmd/gotosocial/action/admin/media/prune/common.go b/cmd/gotosocial/action/admin/media/prune/common.go
index 5b42a6687..d73676f5b 100644
--- a/cmd/gotosocial/action/admin/media/prune/common.go
+++ b/cmd/gotosocial/action/admin/media/prune/common.go
@@ -45,10 +45,12 @@ func setupPrune(ctx context.Context) (*prune, error) {
state.Caches.Start()
// Scheduler is required for the
- // claner, but no other workers
+ // cleaner, but no other workers
// are needed for this CLI action.
state.Workers.StartScheduler()
+ // Set state DB connection.
+ // Don't need Actions for this.
dbService, err := bundb.NewBunDBService(ctx, &state)
if err != nil {
return nil, fmt.Errorf("error creating dbservice: %w", err)
diff --git a/cmd/gotosocial/action/admin/trans/export.go b/cmd/gotosocial/action/admin/trans/export.go
index f76982a1b..dae2db7db 100644
--- a/cmd/gotosocial/action/admin/trans/export.go
+++ b/cmd/gotosocial/action/admin/trans/export.go
@@ -33,12 +33,12 @@ import (
var Export action.GTSAction = func(ctx context.Context) error {
var state state.State
+ // Only set state DB connection.
+ // Don't need Actions or Workers for this.
dbConn, err := bundb.NewBunDBService(ctx, &state)
if err != nil {
return fmt.Errorf("error creating dbservice: %s", err)
}
-
- // Set the state DB connection
state.DB = dbConn
exporter := trans.NewExporter(dbConn)
diff --git a/cmd/gotosocial/action/admin/trans/import.go b/cmd/gotosocial/action/admin/trans/import.go
index 1ebf587ff..d34c816bb 100644
--- a/cmd/gotosocial/action/admin/trans/import.go
+++ b/cmd/gotosocial/action/admin/trans/import.go
@@ -33,12 +33,12 @@ import (
var Import action.GTSAction = func(ctx context.Context) error {
var state state.State
+ // Only set state DB connection.
+ // Don't need Actions or Workers for this.
dbConn, err := bundb.NewBunDBService(ctx, &state)
if err != nil {
return fmt.Errorf("error creating dbservice: %s", err)
}
-
- // Set the state DB connection
state.DB = dbConn
importer := trans.NewImporter(dbConn)
diff --git a/cmd/gotosocial/action/server/server.go b/cmd/gotosocial/action/server/server.go
index 376ade13d..efedda9ec 100644
--- a/cmd/gotosocial/action/server/server.go
+++ b/cmd/gotosocial/action/server/server.go
@@ -32,6 +32,7 @@ import (
"github.com/KimMachineGun/automemlimit/memlimit"
"github.com/gin-gonic/gin"
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
+ "github.com/superseriousbusiness/gotosocial/internal/admin"
"github.com/superseriousbusiness/gotosocial/internal/api"
apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"
"github.com/superseriousbusiness/gotosocial/internal/cleaner"
@@ -44,6 +45,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/metrics"
"github.com/superseriousbusiness/gotosocial/internal/middleware"
tlprocessor "github.com/superseriousbusiness/gotosocial/internal/processing/timeline"
+ "github.com/superseriousbusiness/gotosocial/internal/subscriptions"
"github.com/superseriousbusiness/gotosocial/internal/timeline"
"github.com/superseriousbusiness/gotosocial/internal/tracing"
"go.uber.org/automaxprocs/maxprocs"
@@ -164,6 +166,10 @@ var Start action.GTSAction = func(ctx context.Context) error {
// Set DB on state.
state.DB = dbService
+ // Set Actions on state, providing workers to
+ // Actions as well for triggering side effects.
+ state.AdminActions = admin.New(dbService, &state.Workers)
+
// Ensure necessary database instance prerequisites exist.
if err := dbService.CreateInstanceAccount(ctx); err != nil {
return fmt.Errorf("error creating instance account: %s", err)
@@ -283,15 +289,18 @@ var Start action.GTSAction = func(ctx context.Context) error {
// Create background cleaner.
cleaner := cleaner.New(state)
- // Now schedule background cleaning tasks.
- if err := cleaner.ScheduleJobs(); err != nil {
- return fmt.Errorf("error scheduling cleaner jobs: %w", err)
- }
+ // Create subscriptions fetcher.
+ subscriptions := subscriptions.New(
+ state,
+ transportController,
+ typeConverter,
+ )
// Create the processor using all the
// other services we've created so far.
process = processing.NewProcessor(
cleaner,
+ subscriptions,
typeConverter,
federator,
oauthServer,
@@ -302,6 +311,16 @@ var Start action.GTSAction = func(ctx context.Context) error {
intFilter,
)
+ // Schedule background cleaning tasks.
+ if err := cleaner.ScheduleJobs(); err != nil {
+ return fmt.Errorf("error scheduling cleaner jobs: %w", err)
+ }
+
+ // Schedule background subscriptions updating.
+ if err := subscriptions.ScheduleJobs(); err != nil {
+ return fmt.Errorf("error scheduling subscriptions jobs: %w", err)
+ }
+
// Initialize the specialized workers pools.
state.Workers.Client.Init(messages.ClientMsgIndices())
state.Workers.Federator.Init(messages.FederatorMsgIndices())
diff --git a/cmd/gotosocial/action/testrig/testrig.go b/cmd/gotosocial/action/testrig/testrig.go
index 19588c70a..0036b7a7d 100644
--- a/cmd/gotosocial/action/testrig/testrig.go
+++ b/cmd/gotosocial/action/testrig/testrig.go
@@ -20,11 +20,9 @@
package testrig
import (
- "bytes"
"context"
"errors"
"fmt"
- "io"
"net/http"
"os"
"os/signal"
@@ -47,6 +45,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/router"
"github.com/superseriousbusiness/gotosocial/internal/state"
"github.com/superseriousbusiness/gotosocial/internal/storage"
+ "github.com/superseriousbusiness/gotosocial/internal/subscriptions"
"github.com/superseriousbusiness/gotosocial/internal/timeline"
"github.com/superseriousbusiness/gotosocial/internal/tracing"
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
@@ -159,16 +158,8 @@ var Start action.GTSAction = func(ctx context.Context) error {
testrig.StandardStorageSetup(state.Storage, "./testrig/media")
// build backend handlers
- transportController := testrig.NewTestTransportController(state, testrig.NewMockHTTPClient(func(req *http.Request) (*http.Response, error) {
- r := io.NopCloser(bytes.NewReader([]byte{}))
- return &http.Response{
- StatusCode: 200,
- Body: r,
- Header: http.Header{
- "Content-Type": req.Header.Values("Accept"),
- },
- }, nil
- }, ""))
+ httpClient := testrig.NewMockHTTPClient(nil, "./testrig/media")
+ transportController := testrig.NewTestTransportController(state, httpClient)
mediaManager := testrig.NewTestMediaManager(state)
federator := testrig.NewTestFederator(state, transportController, mediaManager)
@@ -314,11 +305,23 @@ var Start action.GTSAction = func(ctx context.Context) error {
// Create background cleaner.
cleaner := cleaner.New(state)
- // Now schedule background cleaning tasks.
+ // Schedule background cleaning tasks.
if err := cleaner.ScheduleJobs(); err != nil {
return fmt.Errorf("error scheduling cleaner jobs: %w", err)
}
+ // Create subscriptions fetcher.
+ subscriptions := subscriptions.New(
+ state,
+ transportController,
+ typeConverter,
+ )
+
+ // Schedule background subscriptions updating.
+ if err := subscriptions.ScheduleJobs(); err != nil {
+ return fmt.Errorf("error scheduling subscriptions jobs: %w", err)
+ }
+
// Finally start the main http server!
if err := route.Start(); err != nil {
return fmt.Errorf("error starting router: %w", err)