datastore

package
v0.0.0-...-5e664b8 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2024 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ExecutableStatusActive     = 1
	ExecutableStatusProcessing = 2
	ExecutableStatusArchived   = 3
)
View Source
const (
	OrderAscending  = 1
	OrderDescending = -1
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Executable

type Executable struct {
	ID                      primitive.ObjectID    `bson:"_id" json:"id"`
	TenantID                primitive.ObjectID    `bson:"tenant_id" json:"tenant_id"`
	ProgramID               primitive.ObjectID    `bson:"program_id" json:"program_id"`
	ProgramName             string                `bson:"program_name" json:"program_name"`
	ProgramBusinessFunction int8                  `bson:"program_business_function" json:"program_business_function"`
	Question                string                `bson:"question" json:"question"`
	Status                  int8                  `bson:"status" json:"status"`
	PublicID                uint64                `bson:"public_id" json:"public_id"`
	CreatedAt               time.Time             `bson:"created_at" json:"created_at"`
	CreatedByUserID         primitive.ObjectID    `bson:"created_by_user_id" json:"created_by_user_id,omitempty"`
	CreatedByUserName       string                `bson:"created_by_user_name" json:"created_by_user_name"`
	CreatedFromIPAddress    string                `bson:"created_from_ip_address" json:"created_from_ip_address"`
	ModifiedAt              time.Time             `bson:"modified_at" json:"modified_at"`
	ModifiedByUserID        primitive.ObjectID    `bson:"modified_by_user_id" json:"modified_by_user_id,omitempty"`
	ModifiedByUserName      string                `bson:"modified_by_user_name" json:"modified_by_user_name"`
	ModifiedFromIPAddress   string                `bson:"modified_from_ip_address" json:"modified_from_ip_address"`
	Directories             []*UploadFolderOption `bson:"directories" json:"directories,omitempty"`
	OpenAIAssistantID       string                `bson:"openai_assistant_id" json:"openai_assistant_id"` // https://platform.openai.com/docs/assistants/tools/supported-files
	OpenAIAssistantThreadID string                `bson:"openai_assistant_thread_id" json:"openai_assistant_thread_id"`
	UserID                  primitive.ObjectID    `bson:"user_id" json:"user_id"`
	UserName                string                `bson:"user_name" json:"user_name"`
	UserLexicalName         string                `bson:"user_lexical_name" json:"user_lexical_name"`
	Messages                []*Message            `bson:"messages" json:"messages,omitempty"`
}

func (*Executable) GetOpenAIFileIDs

func (a *Executable) GetOpenAIFileIDs() []string

GetOpenAIFileIDs function will iterate through all the assistant files and return the OpenAI file ID values.

func (*Executable) GetUploadDirectoryIDs

func (a *Executable) GetUploadDirectoryIDs() []primitive.ObjectID

type ExecutableAsSelectOption

type ExecutableAsSelectOption struct {
	Value primitive.ObjectID `bson:"_id" json:"value"` // Extract from the database `_id` field and output through API as `value`.
	Label string             `bson:"text" json:"label"`
}

type ExecutableListResult

type ExecutableListResult struct {
	Results     []*Executable      `json:"results"`
	NextCursor  primitive.ObjectID `json:"next_cursor"`
	HasNextPage bool               `json:"has_next_page"`
}

type ExecutablePaginationListFilter

type ExecutablePaginationListFilter struct {
	// Pagination related.
	Cursor    string
	PageSize  int64
	SortField string
	SortOrder int8 // 1=ascending | -1=descending

	// Filter related.
	TenantID   primitive.ObjectID
	Status     int8
	SearchText string
}

type ExecutablePaginationListResult

type ExecutablePaginationListResult struct {
	Results     []*Executable `json:"results"`
	NextCursor  string        `json:"next_cursor"`
	HasNextPage bool          `json:"has_next_page"`
}

ExecutablePaginationListResult represents the paginated list results for the associate records.

type ExecutableStorer

type ExecutableStorer interface {
	Create(ctx context.Context, m *Executable) error
	CreateOrGetByID(ctx context.Context, hh *Executable) (*Executable, error)
	GetByID(ctx context.Context, id primitive.ObjectID) (*Executable, error)
	GetByPublicID(ctx context.Context, oldID uint64) (*Executable, error)
	GetByText(ctx context.Context, text string) (*Executable, error)
	GetLatestByTenantID(ctx context.Context, tenantID primitive.ObjectID) (*Executable, error)
	CheckIfExistsByEmail(ctx context.Context, email string) (bool, error)
	UpdateByID(ctx context.Context, m *Executable) error
	ListByFilter(ctx context.Context, f *ExecutablePaginationListFilter) (*ExecutablePaginationListResult, error)
	ListAsSelectOptionByFilter(ctx context.Context, f *ExecutablePaginationListFilter) ([]*ExecutableAsSelectOption, error)
	ListByTenantID(ctx context.Context, tid primitive.ObjectID) (*ExecutablePaginationListResult, error)
	DeleteByID(ctx context.Context, id primitive.ObjectID) error
}

ExecutableStorer Interface for user.

func NewDatastore

func NewDatastore(appCfg *c.Conf, loggerp *slog.Logger, client *mongo.Client) ExecutableStorer

type ExecutableStorerImpl

type ExecutableStorerImpl struct {
	Logger     *slog.Logger
	DbClient   *mongo.Client
	Collection *mongo.Collection
}

func (ExecutableStorerImpl) CheckIfExistsByEmail

func (impl ExecutableStorerImpl) CheckIfExistsByEmail(ctx context.Context, email string) (bool, error)

func (ExecutableStorerImpl) Create

func (impl ExecutableStorerImpl) Create(ctx context.Context, u *Executable) error

func (ExecutableStorerImpl) CreateOrGetByID

func (impl ExecutableStorerImpl) CreateOrGetByID(ctx context.Context, hh *Executable) (*Executable, error)

func (ExecutableStorerImpl) DeleteByID

func (impl ExecutableStorerImpl) DeleteByID(ctx context.Context, id primitive.ObjectID) error

func (ExecutableStorerImpl) GetByID

func (ExecutableStorerImpl) GetByPublicID

func (impl ExecutableStorerImpl) GetByPublicID(ctx context.Context, oldID uint64) (*Executable, error)

func (ExecutableStorerImpl) GetByText

func (impl ExecutableStorerImpl) GetByText(ctx context.Context, text string) (*Executable, error)

func (ExecutableStorerImpl) GetLatestByTenantID

func (impl ExecutableStorerImpl) GetLatestByTenantID(ctx context.Context, tenantID primitive.ObjectID) (*Executable, error)

func (ExecutableStorerImpl) ListAsSelectOptionByFilter

func (ExecutableStorerImpl) ListByTenantID

func (ExecutableStorerImpl) UpdateByID

func (impl ExecutableStorerImpl) UpdateByID(ctx context.Context, m *Executable) error

type Message

type Message struct {
	ID              primitive.ObjectID `bson:"_id" json:"id"`
	Content         string             `bson:"content" json:"content"`
	OpenAIMessageID string             `bson:"openai_message_id" json:"openai_message_id"`
	CreatedAt       time.Time          `bson:"created_at" json:"created_at"`
	Status          int8               `bson:"status" json:"status"`
	FromExecutable  bool               `bson:"from_executable" json:"from_executable"`
}

type UploadFileOption

type UploadFileOption struct {
	ID           primitive.ObjectID `bson:"_id" json:"id"`
	Name         string             `bson:"name" json:"name"`
	Description  string             `bson:"description" json:"description"`
	OpenAIFileID string             `bson:"openai_file_id" json:"openai_file_id"` // https://platform.openai.com/docs/assistants/tools/supported-files
	Status       int8               `bson:"status" json:"status"`
}

type UploadFolderOption

type UploadFolderOption struct {
	ID          primitive.ObjectID  `bson:"_id" json:"id"`
	Name        string              `bson:"name" json:"name"`
	Description string              `bson:"description" json:"description"`
	Status      int8                `bson:"status" json:"status"`
	Files       []*UploadFileOption `bson:"files" json:"files,omitempty"`
}

Jump to

Keyboard shortcuts

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