summaryrefslogtreecommitdiff
path: root/internal/db/bundb
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/bundb')
-rw-r--r--internal/db/bundb/instance.go14
-rw-r--r--internal/db/bundb/instance_test.go13
2 files changed, 27 insertions, 0 deletions
diff --git a/internal/db/bundb/instance.go b/internal/db/bundb/instance.go
index c40551212..b4bdeb1d9 100644
--- a/internal/db/bundb/instance.go
+++ b/internal/db/bundb/instance.go
@@ -97,6 +97,20 @@ func (i *instanceDB) CountInstanceDomains(ctx context.Context, domain string) (i
return count, nil
}
+func (i *instanceDB) GetInstance(ctx context.Context, domain string) (*gtsmodel.Instance, db.Error) {
+ instance := &gtsmodel.Instance{}
+
+ if err := i.conn.
+ NewSelect().
+ Model(instance).
+ Where("? = ?", bun.Ident("instance.domain"), domain).
+ Scan(ctx); err != nil {
+ return nil, i.conn.ProcessError(err)
+ }
+
+ return instance, nil
+}
+
func (i *instanceDB) GetInstancePeers(ctx context.Context, includeSuspended bool) ([]*gtsmodel.Instance, db.Error) {
instances := []*gtsmodel.Instance{}
diff --git a/internal/db/bundb/instance_test.go b/internal/db/bundb/instance_test.go
index 3edb68370..4269df5ca 100644
--- a/internal/db/bundb/instance_test.go
+++ b/internal/db/bundb/instance_test.go
@@ -23,6 +23,7 @@ import (
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/config"
+ "github.com/superseriousbusiness/gotosocial/internal/db"
)
type InstanceTestSuite struct {
@@ -59,6 +60,18 @@ func (suite *InstanceTestSuite) TestCountInstanceDomains() {
suite.Equal(2, count)
}
+func (suite *InstanceTestSuite) TestGetInstanceOK() {
+ instance, err := suite.db.GetInstance(context.Background(), "localhost:8080")
+ suite.NoError(err)
+ suite.NotNil(instance)
+}
+
+func (suite *InstanceTestSuite) TestGetInstanceNonexistent() {
+ instance, err := suite.db.GetInstance(context.Background(), "doesnt.exist.com")
+ suite.ErrorIs(err, db.ErrNoEntries)
+ suite.Nil(instance)
+}
+
func (suite *InstanceTestSuite) TestGetInstancePeers() {
peers, err := suite.db.GetInstancePeers(context.Background(), false)
suite.NoError(err)