chat

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UserDataType          = "user"
	GroupChatDataType     = "groupchat"
	DirectMessageDataType = "directmessage"
	MessageDataType       = "message"
)
View Source
const (
	FirestoreUsersCollection          = "users"
	FirestoreGroupChatCollection      = "gcs"
	FirestoreDirectMessagesCollection = "dms"
	FirestoreMessagesCollection       = "messages"
)
View Source
const (
	JoinChat joinQuitAction = "join"
	QuitChat joinQuitAction = "quit"
)

Variables

This section is empty.

Functions

func HandleAccessFirestore added in v1.2.0

func HandleAccessFirestore(dataSubjectId string, currentDbObjLocator pal.Locator, dbObj pal.DatabaseObject) (data map[string]interface{}, err error)

func HandleAccessMongo added in v1.2.0

func HandleAccessMongo(dataSubjectId string, currentDbObjLocator pal.Locator, dbObj pal.DatabaseObject) (data map[string]interface{}, err error)

func HandleAccessOld

func HandleAccessOld(dataSubjectId string, currentDbObjLocator pal.Locator, obj pal.DatabaseObject) map[string]interface{}

func HandleDeletionFirestore added in v1.2.0

func HandleDeletionFirestore(dataSubjectId string, currentDbObjLocator pal.Locator, dbObj pal.DatabaseObject) (nodesToTraverse []pal.Locator, deleteNode bool, fieldsToUpdate pal.FieldUpdates, err error)

func HandleDeletionMongo added in v1.2.0

func HandleDeletionMongo(dataSubjectId string, currentDbObjLocator pal.Locator, dbObj pal.DatabaseObject) (nodesToTraverse []pal.Locator, deleteNode bool, fieldsToUpdate pal.FieldUpdates, err error)

Types

type DirectMessage

type DirectMessage struct {
	ID       string    `firestore:"id,omitempty" bson:"_id,omitempty"`
	User1    string    `firestore:"user1" bson:"user1"`
	User2    string    `firestore:"user2" bson:"user2"`
	Messages []Message `firestore:"-" bson:"messages"` // subcollection
}

func GetDirectMessageFirestore

func GetDirectMessageFirestore(ID string) (chat *DirectMessage, err error)

func GetDirectMessageMongo

func GetDirectMessageMongo(ID string) (chat *DirectMessage, err error)

type GroupChat

type GroupChat struct {
	ID       string    `firestore:"id,omitempty" bson:"_id,omitempty"`
	Owner    string    `firestore:"owner" bson:"owner"`
	Users    []string  `firestore:"users" bson:"users"`
	Messages []Message `firestore:"-" bson:"messages"` // subcollection
}

func GetGroupChatFirestore

func GetGroupChatFirestore(ID string) (chat *GroupChat, err error)

func GetGroupChatMongo

func GetGroupChatMongo(ID string) (chat *GroupChat, err error)

func (*GroupChat) HandleAccess

func (g *GroupChat) HandleAccess(dataSubjectId string, currentDbObjLocator pal.Locator) map[string]interface{}

type Message

type Message struct {
	ID        string    `firestore:"id,omitempty" bson:"_id,omitempty"`
	ChatID    string    `firestore:"-" bson:"chatId"`
	UserID    string    `firestore:"userId" bson:"userId"`
	Content   string    `firestore:"content" bson:"content"`
	Timestamp time.Time `firestore:"timestamp" bson:"timestamp"`
}

func (*Message) HandleAccess

func (m *Message) HandleAccess(dataSubjectId string, currentDbObjLocator pal.Locator) map[string]interface{}

type User

type User struct {
	ID   string            `firestore:"id,omitempty" bson:"_id,omitempty"`
	Name string            `firestore:"name" bson:"name"`
	GCs  []string          `firestore:"gcs" bson:"gcs"`
	DMs  map[string]string `firestore:"dms" bson:"dms"` // map from other user id to dm id
}

func CreateUserFirestore

func CreateUserFirestore(name string) (user *User, err error)

func CreateUserMongo

func CreateUserMongo(name string) (user *User, err error)

func GetUserFirestore

func GetUserFirestore(ID string) (user *User, err error)

func GetUserMongo

func GetUserMongo(ID string) (user *User, err error)

func (*User) CreateDirectMessageFirestore

func (u *User) CreateDirectMessageFirestore(user2ID string) (chat *DirectMessage, err error)

func (*User) CreateDirectMessageMongo

func (u *User) CreateDirectMessageMongo(user2ID string) (chat *DirectMessage, err error)

func (*User) CreateGroupChatFirestore

func (u *User) CreateGroupChatFirestore() (chat *GroupChat, err error)

func (*User) CreateGroupChatMongo

func (u *User) CreateGroupChatMongo() (chat *GroupChat, err error)

func (*User) HandleAccess

func (u *User) HandleAccess(dataSubjectId string, currentDbObjLocator pal.Locator) map[string]interface{}

TODO: in documentation You can also make your structs implement the handle access function, which allows you to access the data in the object

func (*User) JoinOrQuitGroupChatFirestore

func (u *User) JoinOrQuitGroupChatFirestore(chatID string, action joinQuitAction) (err error)

func (*User) JoinOrQuitGroupChatMongo

func (u *User) JoinOrQuitGroupChatMongo(chatID string, action joinQuitAction) (err error)

func (*User) SendMessageToDirectMessageFirestore

func (u *User) SendMessageToDirectMessageFirestore(chatID string, message string) error

func (*User) SendMessageToDirectMessageMongo

func (u *User) SendMessageToDirectMessageMongo(chatID string, message string) error

func (*User) SendMessageToGroupChatFirestore

func (u *User) SendMessageToGroupChatFirestore(chatID string, message string) error

func (*User) SendMessageToGroupChatMongo

func (u *User) SendMessageToGroupChatMongo(chatID string, message string) error

Jump to

Keyboard shortcuts

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