relay/internal/db/instance.go
2022-08-25 18:07:41 -07:00

39 lines
2.4 KiB
Go

package db
import (
"context"
"github.com/feditools/relay/internal/models"
"time"
)
type Instance interface {
// CountInstances returns the number of federated instance
CountInstances(ctx context.Context) (count int64, err Error)
// CreateInstance stores the federated instance
CreateInstance(ctx context.Context, instance *models.Instance) (err Error)
// ReadInstance returns one federated social instance
ReadInstance(ctx context.Context, id int64) (instance *models.Instance, err Error)
// ReadInstanceByActorIRI returns one federated social instance
ReadInstanceByActorIRI(ctx context.Context, actorIRI string) (instance *models.Instance, err Error)
// ReadInstanceByDomain returns one federated social instance
ReadInstanceByDomain(ctx context.Context, domain string) (instance *models.Instance, err Error)
// ReadInstanceByServerHostname returns one federated social instance
ReadInstanceByServerHostname(ctx context.Context, serverHostname string) (instance *models.Instance, err Error)
// ReadInstances returns a set of requested of federated social instances
ReadInstances(ctx context.Context, ids ...int64) (instances []*models.Instance, err Error)
// ReadInstancesPage returns a page of federated social instances
ReadInstancesPage(ctx context.Context, index, count int) (instances []*models.Instance, err Error)
// ReadInstancesWithBlockID returns all instances with block id
ReadInstancesWithBlockID(ctx context.Context, blockID int64) (instances []*models.Instance, err Error)
// ReadInstancesWithDomainSuffix returns all instances with domain suffix
ReadInstancesWithDomainSuffix(ctx context.Context, domainSuffix string) (instances []*models.Instance, err Error)
// ReadInstancesWithStaleInfo returns all instances where last info update is null or before date.
ReadInstancesWithStaleInfo(ctx context.Context, before time.Time) (instances []*models.Instance, err Error)
// ReadInstancesWhereFollowing returns all federated social instances which are following this relay
ReadInstancesWhereFollowing(ctx context.Context) (instances []*models.Instance, err Error)
// UpdateInstance updates the stored federated instance
UpdateInstance(ctx context.Context, instance *models.Instance) (err Error)
// UpdateInstanceTX updates the stored federated instance in a transaction.
UpdateInstanceTX(ctx context.Context, txID TxID, instance *models.Instance) (err Error)
}