rooms

package
v0.0.0-...-0451d2a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2023 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyRoomID             = errors.New("empty room id")
	ErrEmptyRoomName           = errors.New("empty room name")
	ErrEmptyRoomSecretKey      = errors.New("empty room secret key")
	ErrRoomNotFound            = errors.New("room not found")
	ErrRoomInsufficientMembers = errors.New("room has insufficient members")

	ErrRoomIsClosed      = errors.New("room is closed")
	ErrRoomIsOpened      = errors.New("room is opened")
	ErrRoomAlreadyExists = errors.New("room already exists")
	ErrRoomIsFull        = errors.New("room is full")

	ErrEmptyMemberID       = errors.New("empty member id")
	ErrMemberNotFound      = errors.New("member not found")
	ErrMemberAlreadyJoined = errors.New("member already joined")
	ErrMemberNotJoined     = errors.New("member not joined")
	ErrMemberNotInRoom     = errors.New("member not in room")

	ErrUnauthorized = errors.New("unauthorized")
)

Functions

func NewQuerier

func NewQuerier(view View) *querier

Types

type ListOption

type ListOption func(*ListOptions)

func WithAsceding

func WithAsceding(asceding bool) ListOption

func WithIDs

func WithIDs(ids ...string) ListOption

func WithOrderBy

func WithOrderBy(orderBy string) ListOption

type ListOptions

type ListOptions struct {
	// contains filtered or unexported fields
}

func (*ListOptions) Apply

func (r *ListOptions) Apply(opts ...ListOption)

func (*ListOptions) Asceding

func (o *ListOptions) Asceding() bool

func (*ListOptions) IDs

func (o *ListOptions) IDs() []string

func (*ListOptions) OrderBy

func (o *ListOptions) OrderBy() string

type Member

type Member struct {
	// contains filtered or unexported fields
}

func (*Member) ID

func (m *Member) ID() string

func (*Member) LastConnectedAt

func (m *Member) LastConnectedAt() time.Time

func (*Member) LastMessageAt

func (m *Member) LastMessageAt() time.Time

func (*Member) LastMessageID

func (m *Member) LastMessageID() int64

func (*Member) Restore

func (m *Member) Restore(mm *MemberMemento) *Member

func (*Member) SetLastMessageAt

func (m *Member) SetLastMessageAt(t time.Time)

func (*Member) SetLastMessageID

func (m *Member) SetLastMessageID(id int64)

func (*Member) SetOffline

func (m *Member) SetOffline()

func (*Member) SetOnline

func (m *Member) SetOnline()

func (*Member) Status

func (m *Member) Status() MemberStatus

type MemberMemento

type MemberMemento struct {
	ID              string
	LastMessageID   int64
	LastMessageAt   time.Time
	LastConnectedAt time.Time
	Status          MemberStatus
}

type MemberStatus

type MemberStatus int32
const (
	MemberStatusUnknown MemberStatus = iota
	MemberStatusOnline
	MemberStatusOffline
)

type Querier

type Querier interface {
	GetRoom(ctx context.Context, id string) (*Room, error)
	ListRooms(ctx context.Context, opts ...ListOption) ([]*Room, error)
}

type Room

type Room struct {
	// contains filtered or unexported fields
}

func NewRoom

func NewRoom(id, name, ownerID, secretKey string) (*Room, error)

func (*Room) AddMember

func (r *Room) AddMember(username string) (*Member, error)

func (*Room) Close

func (r *Room) Close()

func (*Room) CreatedAt

func (r *Room) CreatedAt() time.Time

func (*Room) Events

func (r *Room) Events() []pubsub.Event

func (*Room) HasMember

func (r *Room) HasMember(id string) bool

func (*Room) ID

func (r *Room) ID() string

func (*Room) IsClosed

func (r *Room) IsClosed() bool

func (*Room) IsOpened

func (r *Room) IsOpened() bool

func (*Room) IsSecretKeyValid

func (r *Room) IsSecretKeyValid(secretKey string) bool

func (*Room) Members

func (r *Room) Members() []*Member

func (*Room) Name

func (r *Room) Name() string

func (*Room) Open

func (r *Room) Open()

func (*Room) RemoveMember

func (r *Room) RemoveMember(id string) error

func (*Room) Restore

func (r *Room) Restore(rm *RoomMemento) *Room

func (*Room) SecretKey

func (r *Room) SecretKey() string

func (*Room) Status

func (r *Room) Status() Status

type RoomMemento

type RoomMemento struct {
	ID        string
	Name      string
	SecretKey string
	Members   []*MemberMemento
	Status    Status
	CreatedAt time.Time
}

type Status

type Status string
const (
	Opened Status = "opened"
	Closed Status = "closed"
)

type Storage

type Storage interface {
	Save(ctx context.Context, room *Room) (id string, err error)
	Get(ctx context.Context, id string) (*Room, error)
}

type View

type View interface {
	Get(ctx context.Context, id string) (*Room, error)
	List(ctx context.Context, opts ...ListOption) ([]*Room, error)
}

Directories

Path Synopsis
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL