memory

package
v0.0.0-...-66bbac4 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2023 License: GPL-3.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BulkChangeMessageOwner

func BulkChangeMessageOwner(ctx context.Context, oldUser *User, newUser *User) error

func DeleteAllMessages

func DeleteAllMessages(ctx context.Context) error

func MergeUsers

func MergeUsers(ctx context.Context, users ...*User) error

func MergeUsersByID

func MergeUsersByID(ctx context.Context, ids ...uint) error

func Setup

func Setup(ctx context.Context) (*gorm.DB, error)

func Start

func Start(ctx context.Context)

Types

type APIKey

type APIKey struct {
	gorm.Model
	User   *User  `json:"user"`
	UserID uint   `json:"userId,omitempty"`
	Hash   string `json:"hash"`
	Key    string `json:"key" gorm:"-"`
}

func GetAPIKey

func GetAPIKey(key string) (*APIKey, error)

func NewAPIKey

func NewAPIKey(user *User) *APIKey

type CLIMessageSource

type CLIMessageSource struct{}

type DBLogger

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

func (DBLogger) Error

func (l DBLogger) Error(ctx context.Context, msg string, opts ...interface{})

func (DBLogger) Info

func (l DBLogger) Info(ctx context.Context, msg string, opts ...interface{})

func (DBLogger) LogMode

func (l DBLogger) LogMode(level logger.LogLevel) logger.Interface

func (DBLogger) Trace

func (l DBLogger) Trace(ctx context.Context, begin time.Time, f func() (string, int64), err error)

func (DBLogger) Warn

func (l DBLogger) Warn(ctx context.Context, msg string, opts ...interface{})

type DiscordMessageSource

type DiscordMessageSource struct {
	API         *discordgo.Session
	Message     *discordgo.Message
	Interaction bool
}

type ExternalID

type ExternalID struct {
	gorm.Model
	ExternalID string `json:"external_id"`
	UserID     uint   `json:"user_id"`
	Interface  string `json:"interface"`
}

type HTTPMessageSource

type HTTPMessageSource struct {
	Request *http.Request
}

type Message

type Message struct {
	gorm.Model
	Context               context.Context    `json:"-" gorm:"-"`
	ExternalID            string             `json:"externalId"`
	Interface             string             `json:"interface"`
	User                  *User              `json:"user,omitempty"`
	UserID                uint               `json:"userId,omitempty"`
	Source                *MessageSource     `json:"source" gorm:"-"`
	Name                  string             `json:"name"`
	Role                  string             `json:"role"`
	Content               string             `json:"content"`
	Summary               string             `json:"summary"`
	FunctionCallName      string             `json:"functionCallName"`
	FunctionCallArguments string             `json:"functionCallArguments"`
	Moderated             bool               `json:"moderated"`
	TokenCount            int                `json:"tokenCount"`
	Moderation            *MessageModeration `json:"moderation" gorm:"embedded;embeddedPrefix:moderation_"`
	ErrorCh               chan error         `json:"-" gorm:"-"`
	// contains filtered or unexported fields
}

func LoadNonModeratedMessages

func LoadNonModeratedMessages(ctx context.Context) ([]*Message, error)

func LoadNonSummarizedMessages

func LoadNonSummarizedMessages(ctx context.Context) ([]*Message, error)

func NewMessage

func NewMessage(externalID string, interf string) *Message

func (*Message) AddAudio

func (m *Message) AddAudio(path string)

func (*Message) AddImage

func (m *Message) AddImage(path string)

func (*Message) Copy

func (m *Message) Copy() *Message

func (*Message) GetAudios

func (m *Message) GetAudios() []string

func (*Message) GetContent

func (m *Message) GetContent() string

func (*Message) GetExternalMessageID

func (m *Message) GetExternalMessageID() string

func (*Message) GetImages

func (m *Message) GetImages() []string

func (*Message) GetTexts

func (m *Message) GetTexts() []string

func (*Message) NotifyAction

func (m *Message) NotifyAction(act string)

func (*Message) Save

func (m *Message) Save(ctx context.Context) error

func (*Message) SendError

func (m *Message) SendError(err error) error

SendError TODO: this is in the wrong place

func (*Message) SendText

func (m *Message) SendText(text string, notify bool, extraArgs ...interface{}) error

SendText TODO: this is in the wrong place and extraArgs is a mess

func (*Message) SetContent

func (m *Message) SetContent(content string)

func (*Message) SetSummary

func (m *Message) SetSummary(ctx context.Context, summary string) error

type MessageModeration

type MessageModeration struct {
	CategoryHate            bool `json:"categoryHate"`
	CategoryHateThreatening bool `json:"categoryHateThreatening"`
	CategorySelfHarm        bool `json:"categorySelfHarm"`
	CategorySexual          bool `json:"categorySexual"`
	CategorySexualMinors    bool `json:"categorySexualMinors"`
	CategoryViolence        bool `json:"categoryViolence"`
	CategoryViolenceGraphic bool `json:"categoryViolenceGraphic"`

	CategoryScoreHate            float32 `json:"categoryScoreHate"`
	CategoryScoreHateThreatening float32 `json:"categoryScoreHateThreatening"`
	CategoryScoreSelfHarm        float32 `json:"categoryScoreSelfHarm"`
	CategoryScoreSexual          float32 `json:"categoryScoreSexual"`
	CategoryScoreSexualMinors    float32 `json:"categoryScoreSexualMinors"`
	CategoryScoreViolence        float32 `json:"categoryScoreViolence"`
	CategoryScoreViolenceGraphic float32 `json:"categoryScoreViolenceGraphic"`

	Flagged bool `json:"flagged"`
}

type MessageSource

type MessageSource struct {
	Telegram *TelegramMessageSource `json:"telegram,omitempty"`
	HTTP     *HTTPMessageSource     `json:"http,omitempty"`
	Discord  *DiscordMessageSource  `json:"discord,omitempty"`
	Slack    *SlackMessageSource    `json:"slack,omitempty"`
	CLI      *CLIMessageSource      `json:"cli,omitempty"`
}

type SlackMessageSource

type SlackMessageSource struct {
	API          *slack.Client
	Message      *slackevents.MessageEvent
	SlashCommand slack.SlashCommand
}

type TelegramMessageSource

type TelegramMessageSource struct {
	API    *tgbotapi.BotAPI
	Update tgbotapi.Update
}

type User

type User struct {
	gorm.Model
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
	Username  string `json:"username"`
	Mode      string `json:"mode"`
}

func CreateUser

func CreateUser(ctx context.Context, firstName, lastName, username string) (*User, error)

func GetUser

func GetUser(ctx context.Context, id uint) (*User, error)

func GetUserByExternalID

func GetUserByExternalID(ctx context.Context, externalID, interf string) (*User, error)

func ListUsers

func ListUsers() ([]*User, error)

func (*User) AddExternalID

func (u *User) AddExternalID(ctx context.Context, externalID, interf string) error

func (*User) CreateAPIKey

func (u *User) CreateAPIKey(ctx context.Context) (string, error)

func (*User) Delete

func (u *User) Delete(ctx context.Context) error

func (*User) DeleteExternalID

func (u *User) DeleteExternalID(ctx context.Context, externalID, interf string) error

func (*User) DeleteMessages

func (u *User) DeleteMessages(ctx context.Context) error

func (*User) DeleteOldestMessage

func (u *User) DeleteOldestMessage(ctx context.Context) error

func (*User) GetExternalIDs

func (u *User) GetExternalIDs() ([]*ExternalID, error)

func (*User) ListMessages

func (u *User) ListMessages(ctx context.Context) ([]*Message, error)

func (*User) MustGetExternalID

func (u *User) MustGetExternalID(ctx context.Context, interf string) *ExternalID

func (*User) Save

func (u *User) Save(ctx context.Context) error

func (*User) SetMode

func (u *User) SetMode(ctx context.Context, mode string) error

Jump to

Keyboard shortcuts

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