mirror of
https://github.com/versia-pub/versia-go.git
synced 2025-12-06 14:28:20 +01:00
60 lines
2.3 KiB
Go
60 lines
2.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"crypto/ed25519"
|
|
"github.com/lysand-org/versia-go/pkg/versia"
|
|
versiautils "github.com/lysand-org/versia-go/pkg/versia/utils"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/lysand-org/versia-go/internal/entity"
|
|
)
|
|
|
|
type UserRepository interface {
|
|
NewUser(ctx context.Context, username, password string, privateKey ed25519.PrivateKey, publicKey ed25519.PublicKey) (*entity.User, error)
|
|
ImportLysandUserByURI(ctx context.Context, uri *versiautils.URL) (*entity.User, error)
|
|
|
|
GetByID(ctx context.Context, id uuid.UUID) (*entity.User, error)
|
|
GetLocalByID(ctx context.Context, id uuid.UUID) (*entity.User, error)
|
|
GetLocalByUsername(ctx context.Context, username string) (*entity.User, error)
|
|
|
|
Discover(ctx context.Context, host, username string) (*entity.User, error)
|
|
|
|
Resolve(ctx context.Context, uri *versiautils.URL) (*entity.User, error)
|
|
ResolveMultiple(ctx context.Context, uris []versiautils.URL) ([]*entity.User, error)
|
|
|
|
LookupByURI(ctx context.Context, uri *versiautils.URL) (*entity.User, error)
|
|
LookupByURIs(ctx context.Context, uris []versiautils.URL) ([]*entity.User, error)
|
|
LookupByIDOrUsername(ctx context.Context, idOrUsername string) (*entity.User, error)
|
|
}
|
|
|
|
type FollowRepository interface {
|
|
GetByID(ctx context.Context, id uuid.UUID) (*entity.Follow, error)
|
|
|
|
Follow(ctx context.Context, follower, followee *entity.User) (*entity.Follow, error)
|
|
Unfollow(ctx context.Context, follower, followee *entity.User) error
|
|
AcceptFollow(ctx context.Context, follower, followee *entity.User) error
|
|
RejectFollow(ctx context.Context, follower, followee *entity.User) error
|
|
}
|
|
|
|
type NoteRepository interface {
|
|
NewNote(ctx context.Context, author *entity.User, content string, mentions []*entity.User) (*entity.Note, error)
|
|
ImportLysandNote(ctx context.Context, lNote *versia.Note) (*entity.Note, error)
|
|
|
|
GetByID(ctx context.Context, idOrUsername uuid.UUID) (*entity.Note, error)
|
|
}
|
|
|
|
type InstanceMetadataRepository interface {
|
|
GetByHost(ctx context.Context, host string) (*entity.InstanceMetadata, error)
|
|
ImportFromLysandByURI(ctx context.Context, uri *versiautils.URL) (*entity.InstanceMetadata, error)
|
|
}
|
|
|
|
type Manager interface {
|
|
Atomic(ctx context.Context, fn func(ctx context.Context, tx Manager) error) error
|
|
|
|
Users() UserRepository
|
|
Notes() NoteRepository
|
|
Follows() FollowRepository
|
|
InstanceMetadata() InstanceMetadataRepository
|
|
}
|