chat

package
v0.0.0-...-d2e3589 Latest Latest
Warning

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

Go to latest
Published: May 22, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Channel

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

func (*Channel) AddParticipant

func (c *Channel) AddParticipant(user User)

func (*Channel) Category

func (c *Channel) Category() ChannelCategory

func (*Channel) Description

func (c *Channel) Description() string

func (*Channel) ID

func (c *Channel) ID() string

func (*Channel) Memberships

func (c *Channel) Memberships() []Membership

func (*Channel) Messages

func (c *Channel) Messages() []Message

func (*Channel) Name

func (c *Channel) Name() string

func (*Channel) NewMessage

func (c *Channel) NewMessage(text string, senderID string, timestamp time.Time) (*Message, *[]Membership, error)

New Message receives a text. It returns the new message and the memberships that should receive it

func (*Channel) SendMessage

func (c *Channel) SendMessage(message Message)

func (*Channel) SetCategory

func (c *Channel) SetCategory(category ChannelCategory)

func (*Channel) SetDescription

func (c *Channel) SetDescription(description string)

func (*Channel) SetID

func (c *Channel) SetID(id string)

func (*Channel) SetMemberships

func (c *Channel) SetMemberships(memberships []Membership)

func (*Channel) SetMessages

func (c *Channel) SetMessages(messages []Message)

func (*Channel) SetName

func (c *Channel) SetName(name string)

func (*Channel) SetState

func (c *Channel) SetState(state ChannelState)

func (*Channel) State

func (c *Channel) State() ChannelState

func (*Channel) ValidateMembership

func (c *Channel) ValidateMembership(uid string) (User, error)

type ChannelCategory

type ChannelCategory string

ChannelCategory is an enum of channel categories.

const (
	// ChannelCategoryP2P is a a value denoting 'p2p channel.
	// PEER is only between two people
	ChannelCategoryP2P ChannelCategory = "PEER"

	// ChannelCategoryGroup is a a value denoting group channel.
	// Group is where users can send messages to each other
	ChannelCategoryGroup ChannelCategory = "GROUP"

	// ChannelCategoryChannel is a a value denoting group channel.
	// Channel is where only approved users can send messages
	ChannelCategoryChannel ChannelCategory = "CHANNEL"
)

func (ChannelCategory) String

func (t ChannelCategory) String() string

type ChannelConfig

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

func (*ChannelConfig) Flag

func (c *ChannelConfig) Flag() bool

func (*ChannelConfig) MaxMessageLength

func (c *ChannelConfig) MaxMessageLength() int

func (*ChannelConfig) Reactions

func (c *ChannelConfig) Reactions() bool

func (*ChannelConfig) Replies

func (c *ChannelConfig) Replies() bool

func (*ChannelConfig) Threads

func (c *ChannelConfig) Threads() bool

func (*ChannelConfig) TypingEvents

func (c *ChannelConfig) TypingEvents() bool

func (*ChannelConfig) Uploads

func (c *ChannelConfig) Uploads() bool

type ChannelState

type ChannelState string

ChannelState represents information on channel state, such as an indication Channel is suspended/soft-deleted.

const (
	// StateOK indicates normal channel.
	StateOK ChannelState = "OK"

	// StateSuspended indicates suspended channel.
	StateSuspended ChannelState = "SUSPENDED"

	// StateDeleted indicates soft-deleted channel.
	StateDeleted ChannelState = "DELETED"

	// StateUndefined indicates state which has not been set explicitly.
	StateUndefined ChannelState = "UNDEFINED"
)

func (ChannelState) String

func (o ChannelState) String() string

type Factory

type Factory struct{}

func NewFactory

func NewFactory() (Factory, error)

func (Factory) NewChannel

func (f Factory) NewChannel() Channel

func (Factory) NewMessage

func (f Factory) NewMessage() Message

func (Factory) NewUser

func (f Factory) NewUser(name string) User

func (Factory) UnmarshalChannelFromDatabase

func (f Factory) UnmarshalChannelFromDatabase(
	id string,
	description string,
	name string,
	state ChannelState,
	category ChannelCategory,
) (*Channel, error)

func (Factory) UnmarshalMembershipFromDatabase

func (f Factory) UnmarshalMembershipFromDatabase(
	id string,
	role MembershipRole,
	status MembershipStatus,
	channel Channel,
	user User,
) (*Membership, error)

func (Factory) UnmarshalUserFromDatabase

func (f Factory) UnmarshalUserFromDatabase(
	id string,
	name string,
) (*User, error)

type Membership

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

func (*Membership) CanReceiveMessage

func (m *Membership) CanReceiveMessage() bool

func (*Membership) Channel

func (m *Membership) Channel() Channel

func (*Membership) ID

func (m *Membership) ID() string

func (*Membership) Role

func (m *Membership) Role() MembershipRole

func (*Membership) SetChannel

func (m *Membership) SetChannel(channel Channel)

func (*Membership) SetID

func (m *Membership) SetID(id string)

func (*Membership) SetRole

func (m *Membership) SetRole(role MembershipRole)

func (*Membership) SetStatus

func (m *Membership) SetStatus(status MembershipStatus)

func (*Membership) SetUser

func (m *Membership) SetUser(user User)

func (*Membership) Status

func (m *Membership) Status() MembershipStatus

func (*Membership) User

func (m *Membership) User() User

type MembershipRole

type MembershipRole string
const (
	MembershipRoleAdmin     MembershipRole = "ADMIN"
	MembershipRoleModerator MembershipRole = "MODERATOR"
	MembershipRoleOwner     MembershipRole = "OWNER"
)

func (MembershipRole) String

func (m MembershipRole) String() string

type MembershipStatus

type MembershipStatus string
const (
	MembershipStatusOk     MembershipStatus = "OK"
	MembershipStatusBanned MembershipStatus = "BANNED"
)

type Message

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

func (*Message) Author

func (m *Message) Author() User

func (*Message) Channel

func (m *Message) Channel() Channel

func (*Message) Content

func (m *Message) Content() MessageContent

func (*Message) Headers

func (m *Message) Headers() MessageHeaders

func (*Message) ID

func (m *Message) ID() string

func (*Message) Recipients

func (m *Message) Recipients() []Recipient

func (*Message) Timestamp

func (m *Message) Timestamp() time.Time

type MessageContent

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

func (MessageContent) Text

func (m MessageContent) Text() string

type MessageHeaders

type MessageHeaders struct{}

type Recipient

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

func (*Recipient) MessageID

func (a *Recipient) MessageID() string

func (*Recipient) SetMessageID

func (a *Recipient) SetMessageID(id string)

func (*Recipient) SetStatus

func (a *Recipient) SetStatus(status string)

func (*Recipient) SetStatusAt

func (a *Recipient) SetStatusAt(time time.Time)

func (*Recipient) SetUserID

func (a *Recipient) SetUserID(id string)

func (*Recipient) Status

func (a *Recipient) Status() string

func (*Recipient) StatusAt

func (a *Recipient) StatusAt() time.Time

func (*Recipient) User

func (a *Recipient) User() User

func (*Recipient) UserID

func (a *Recipient) UserID() string

type Repository

type Repository interface {
	CreateUser(ctx context.Context, user *User) error
	GetUser(ctx context.Context, id string) (*User, error)
	GetUsers(ctx context.Context) (*[]User, error)

	CreateChannel(ctx context.Context, channel *Channel) error
	GetChannel(ctx context.Context, id string, preload bool) (*Channel, error)
	GetChannels(ctx context.Context) (*[]Channel, error)
	UpdateChannel(
		ctx context.Context,
		cid string,
		updateFn func(h *Channel) (*Channel, error),
	) error

	GetAllMemberships(ctx context.Context) ([]string, error)
	CreateMembership(ctx context.Context, membership *Membership) error
	GetMembership(ctx context.Context, id string, preload bool) (*Membership, error)
	GetUserMemberships(ctx context.Context, userID string) (*[]Membership, error)
	GetUserChannelMembership(ctx context.Context, userID, channelID string) (*Membership, error)
	UpdateMembership(
		ctx context.Context,
		cid string,
		updateFn func(h *Membership) (*Membership, error),
	) error

	CreateMessage(ctx context.Context, message *Message, userID, channelID string) error
	CreateRecipient(ctx context.Context, resp *Recipient) error
}

type User

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

func (*User) ID

func (u *User) ID() string

func (*User) Name

func (u *User) Name() string

func (*User) SetID

func (u *User) SetID(id string)

func (*User) SetName

func (u *User) SetName(name string)

Jump to

Keyboard shortcuts

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