database

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Database

type Database struct {
	*dbutil.Database

	User     *UserQuery
	Portal   *PortalQuery
	Puppet   *PuppetQuery
	Message  *MessageQuery
	Reaction *ReactionQuery
}

func New

func New(db *dbutil.Database) *Database

type Key

type Key struct {
	ID       string
	Receiver int
}

func (Key) MarshalZerologObject

func (p Key) MarshalZerologObject(e *zerolog.Event)

func (Key) String

func (p Key) String() string

type MediaPart

type MediaPart struct {
	EventID      id.EventID `json:"mxid,omitempty"`
	PendingMedia bool       `json:"pending_media,omitempty"`
}

type Message

type Message struct {
	Chat      Key
	ID        string
	MXID      id.EventID
	RoomID    id.RoomID
	Sender    string
	Timestamp time.Time
	Status    MessageStatus
	// contains filtered or unexported fields
}

func (*Message) Delete

func (msg *Message) Delete(ctx context.Context) error

func (*Message) GetMassInsertValues added in v0.4.0

func (msg *Message) GetMassInsertValues() [5]any

func (*Message) Insert

func (msg *Message) Insert(ctx context.Context) error

func (*Message) IsFakeMXID

func (msg *Message) IsFakeMXID() bool

func (*Message) Scan

func (msg *Message) Scan(row dbutil.Scannable) (*Message, error)

func (*Message) Update

func (msg *Message) Update(ctx context.Context) error

func (*Message) UpdateStatus

func (msg *Message) UpdateStatus(ctx context.Context) error

type MessageQuery

type MessageQuery struct {
	*dbutil.QueryHelper[*Message]
}

func (*MessageQuery) DeleteAllInChat added in v0.2.0

func (mq *MessageQuery) DeleteAllInChat(ctx context.Context, chat Key) error

func (*MessageQuery) GetByID

func (mq *MessageQuery) GetByID(ctx context.Context, receiver int, messageID string) (*Message, error)

func (*MessageQuery) GetByMXID

func (mq *MessageQuery) GetByMXID(ctx context.Context, mxid id.EventID) (*Message, error)

func (*MessageQuery) GetLastInChat

func (mq *MessageQuery) GetLastInChat(ctx context.Context, chat Key) (*Message, error)

func (*MessageQuery) GetLastInChatWithMXID

func (mq *MessageQuery) GetLastInChatWithMXID(ctx context.Context, chat Key) (*Message, error)

func (*MessageQuery) MassInsert

func (mq *MessageQuery) MassInsert(ctx context.Context, messages []*Message) error

type MessageStatus

type MessageStatus struct {
	Type gmproto.MessageStatusType `json:"type,omitempty"`

	MediaStatus string               `json:"media_status,omitempty"`
	MediaParts  map[string]MediaPart `json:"media_parts,omitempty"`
	PartCount   int                  `json:"part_count,omitempty"`

	MSSSent         bool `json:"mss_sent,omitempty"`
	MSSFailSent     bool `json:"mss_fail_sent,omitempty"`
	MSSDeliverySent bool `json:"mss_delivery_sent,omitempty"`
	ReadReceiptSent bool `json:"read_receipt_sent,omitempty"`
}

func (*MessageStatus) HasPendingMediaParts

func (ms *MessageStatus) HasPendingMediaParts() bool

type Portal

type Portal struct {
	Key
	OutgoingID  string
	OtherUserID string
	MXID        id.RoomID

	Type      gmproto.ConversationType
	Name      string
	NameSet   bool
	Encrypted bool
	InSpace   bool
	// contains filtered or unexported fields
}

func (*Portal) Delete

func (portal *Portal) Delete(ctx context.Context) error

func (*Portal) Insert

func (portal *Portal) Insert(ctx context.Context) error

func (*Portal) Scan

func (portal *Portal) Scan(row dbutil.Scannable) (*Portal, error)

func (*Portal) Update

func (portal *Portal) Update(ctx context.Context) error

type PortalQuery

type PortalQuery struct {
	*dbutil.QueryHelper[*Portal]
}

func (*PortalQuery) GetAll

func (pq *PortalQuery) GetAll(ctx context.Context) ([]*Portal, error)

func (*PortalQuery) GetAllForUser

func (pq *PortalQuery) GetAllForUser(ctx context.Context, receiver int) ([]*Portal, error)

func (*PortalQuery) GetByKey

func (pq *PortalQuery) GetByKey(ctx context.Context, key Key) (*Portal, error)

func (*PortalQuery) GetByMXID

func (pq *PortalQuery) GetByMXID(ctx context.Context, mxid id.RoomID) (*Portal, error)

func (*PortalQuery) GetByOtherUser added in v0.2.0

func (pq *PortalQuery) GetByOtherUser(ctx context.Context, key Key) (*Portal, error)

type Puppet

type Puppet struct {
	Key
	Phone          string
	ContactID      string
	Name           string
	NameSet        bool
	AvatarHash     [32]byte
	AvatarMXC      id.ContentURI
	AvatarSet      bool
	AvatarUpdateTS time.Time
	ContactInfoSet bool
	// contains filtered or unexported fields
}

func (*Puppet) Insert

func (puppet *Puppet) Insert(ctx context.Context) error

func (*Puppet) Scan

func (puppet *Puppet) Scan(row dbutil.Scannable) (*Puppet, error)

func (*Puppet) Update

func (puppet *Puppet) Update(ctx context.Context) error

type PuppetQuery

type PuppetQuery struct {
	*dbutil.QueryHelper[*Puppet]
}

func (*PuppetQuery) Get

func (pq *PuppetQuery) Get(ctx context.Context, key Key) (*Puppet, error)

func (*PuppetQuery) Reset added in v0.4.0

func (pq *PuppetQuery) Reset(ctx context.Context, userID int) error

Reset clears the phone number of all puppets, so that puppets can be upserted safely on relogin even if the internal IDs shuffled around. This does *not* delete the puppets, because otherwise avatars wouldn't get reset appropriately.

type Reaction

type Reaction struct {
	Chat      Key
	MessageID string
	Sender    string
	Reaction  string
	MXID      id.EventID
	// contains filtered or unexported fields
}

func (*Reaction) Delete

func (r *Reaction) Delete(ctx context.Context) error

func (*Reaction) GetMassInsertValues added in v0.4.0

func (r *Reaction) GetMassInsertValues() [4]any

func (*Reaction) Insert

func (r *Reaction) Insert(ctx context.Context) error

func (*Reaction) Scan

func (r *Reaction) Scan(row dbutil.Scannable) (*Reaction, error)

type ReactionQuery

type ReactionQuery struct {
	*dbutil.QueryHelper[*Reaction]
}

func (*ReactionQuery) DeleteAllByMessage

func (rq *ReactionQuery) DeleteAllByMessage(ctx context.Context, chat Key, messageID string) error

func (*ReactionQuery) GetAllByMessage

func (rq *ReactionQuery) GetAllByMessage(ctx context.Context, receiver int, messageID string) ([]*Reaction, error)

func (*ReactionQuery) GetByID

func (rq *ReactionQuery) GetByID(ctx context.Context, receiver int, messageID, sender string) (*Reaction, error)

func (*ReactionQuery) GetByMXID

func (rq *ReactionQuery) GetByMXID(ctx context.Context, mxid id.EventID) (*Reaction, error)

func (*ReactionQuery) MassInsert

func (rq *ReactionQuery) MassInsert(ctx context.Context, reactions []*Reaction) error

type Settings added in v0.2.0

type Settings struct {
	SettingsReceived    bool `json:"settings_received"`
	RCSEnabled          bool `json:"rcs_enabled"`
	ReadReceipts        bool `json:"read_receipts"`
	TypingNotifications bool `json:"typing_notifications"`
	IsDefaultSMSApp     bool `json:"is_default_sms_app"`
}

type User

type User struct {
	RowID   int
	MXID    id.UserID
	PhoneID string
	Session *libgm.AuthData

	ManagementRoom id.RoomID
	SpaceRoom      id.RoomID

	SelfParticipantIDs []string

	Settings Settings

	AccessToken string
	// contains filtered or unexported fields
}

func (*User) AddSelfParticipantID

func (user *User) AddSelfParticipantID(ctx context.Context, id string) error

func (*User) GetSIM added in v0.2.0

func (user *User) GetSIM(participantID string) *gmproto.SIMCard

func (*User) GetSIMsForBridgeState added in v0.2.0

func (user *User) GetSIMsForBridgeState() []bridgeStateSIMMeta

func (*User) Insert

func (user *User) Insert(ctx context.Context) error

func (*User) IsSelfParticipantID

func (user *User) IsSelfParticipantID(id string) bool

func (*User) SIMCount added in v0.2.0

func (user *User) SIMCount() int

func (*User) Scan

func (user *User) Scan(row dbutil.Scannable) (*User, error)

func (*User) SetSIMs added in v0.2.0

func (user *User) SetSIMs(sims []*gmproto.SIMCard) bool

func (*User) Update

func (user *User) Update(ctx context.Context) error

type UserQuery

type UserQuery struct {
	*dbutil.QueryHelper[*User]
}

func (*UserQuery) GetAllWithDoublePuppet

func (uq *UserQuery) GetAllWithDoublePuppet(ctx context.Context) ([]*User, error)

func (*UserQuery) GetAllWithSession

func (uq *UserQuery) GetAllWithSession(ctx context.Context) ([]*User, error)

func (*UserQuery) GetByMXID

func (uq *UserQuery) GetByMXID(ctx context.Context, userID id.UserID) (*User, error)

func (*UserQuery) GetByRowID

func (uq *UserQuery) GetByRowID(ctx context.Context, rowID int) (*User, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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