Documentation
¶
Index ¶
- Variables
- func Connect() (*sql.DB, error)
- func GetProjectID(workingDir string) string
- type CreateFileParams
- type CreateMessageParams
- type CreateSessionParams
- type DBTX
- type File
- type GetFileByPathAndSessionParams
- type Message
- type MySQLProvider
- type MySQLQuerier
- func (q *MySQLQuerier) CreateFile(ctx context.Context, arg CreateFileParams) (File, error)
- func (q *MySQLQuerier) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)
- func (q *MySQLQuerier) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
- func (q *MySQLQuerier) DeleteFile(ctx context.Context, id string) error
- func (q *MySQLQuerier) DeleteMessage(ctx context.Context, id string) error
- func (q *MySQLQuerier) DeleteSession(ctx context.Context, id string) error
- func (q *MySQLQuerier) DeleteSessionFiles(ctx context.Context, sessionID string) error
- func (q *MySQLQuerier) DeleteSessionMessages(ctx context.Context, sessionID string) error
- func (q *MySQLQuerier) GetFile(ctx context.Context, id string) (File, error)
- func (q *MySQLQuerier) GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
- func (q *MySQLQuerier) GetMessage(ctx context.Context, id string) (Message, error)
- func (q *MySQLQuerier) GetSessionByID(ctx context.Context, id string) (Session, error)
- func (q *MySQLQuerier) ListChildSessions(ctx context.Context, rootSessionID sql.NullString) ([]Session, error)
- func (q *MySQLQuerier) ListFilesByPath(ctx context.Context, path string) ([]File, error)
- func (q *MySQLQuerier) ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)
- func (q *MySQLQuerier) ListFilesBySessionTree(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
- func (q *MySQLQuerier) ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
- func (q *MySQLQuerier) ListLatestSessionTreeFiles(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
- func (q *MySQLQuerier) ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)
- func (q *MySQLQuerier) ListSessions(ctx context.Context, projectID sql.NullString) ([]Session, error)
- func (q *MySQLQuerier) UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)
- func (q *MySQLQuerier) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
- func (q *MySQLQuerier) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)
- func (q *MySQLQuerier) WithTx(tx *sql.Tx) *MySQLQuerier
- type Provider
- type Querier
- type QuerierWithTx
- type Queries
- func (q *Queries) Close() error
- func (q *Queries) CreateFile(ctx context.Context, arg CreateFileParams) (File, error)
- func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)
- func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
- func (q *Queries) DeleteFile(ctx context.Context, id string) error
- func (q *Queries) DeleteMessage(ctx context.Context, id string) error
- func (q *Queries) DeleteSession(ctx context.Context, id string) error
- func (q *Queries) DeleteSessionFiles(ctx context.Context, sessionID string) error
- func (q *Queries) DeleteSessionMessages(ctx context.Context, sessionID string) error
- func (q *Queries) GetFile(ctx context.Context, id string) (File, error)
- func (q *Queries) GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
- func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error)
- func (q *Queries) GetSessionByID(ctx context.Context, id string) (Session, error)
- func (q *Queries) ListChildSessions(ctx context.Context, rootSessionID sql.NullString) ([]Session, error)
- func (q *Queries) ListFilesByPath(ctx context.Context, path string) ([]File, error)
- func (q *Queries) ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)
- func (q *Queries) ListFilesBySessionTree(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
- func (q *Queries) ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
- func (q *Queries) ListLatestSessionTreeFiles(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
- func (q *Queries) ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)
- func (q *Queries) ListSessions(ctx context.Context, projectID sql.NullString) ([]Session, error)
- func (q *Queries) UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)
- func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
- func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)
- func (q *Queries) WithTx(tx *sql.Tx) *Queries
- type SQLiteProvider
- type Session
- type UpdateFileParams
- type UpdateMessageParams
- type UpdateSessionParams
Constants ¶
This section is empty.
Variables ¶
var FS embed.FS
Functions ¶
func GetProjectID ¶
GetProjectID determines the project ID for the given working directory. It first attempts to use the Git repository origin URL, falling back to the directory name if Git is not available or configured. Results are cached per working directory.
Types ¶
type CreateFileParams ¶
type CreateMessageParams ¶
type CreateSessionParams ¶
type CreateSessionParams struct {
ID string `json:"id"`
ProjectID sql.NullString `json:"project_id"`
ParentSessionID sql.NullString `json:"parent_session_id"`
RootSessionID sql.NullString `json:"root_session_id"`
Title string `json:"title"`
MessageCount int64 `json:"message_count"`
PromptTokens int64 `json:"prompt_tokens"`
CompletionTokens int64 `json:"completion_tokens"`
Cost float64 `json:"cost"`
}
type MySQLProvider ¶
type MySQLProvider struct {
// contains filtered or unexported fields
}
MySQLProvider implements the Provider interface for MySQL databases.
func NewMySQLProvider ¶
func NewMySQLProvider(cfg config.MySQLConfig) *MySQLProvider
NewMySQLProvider creates a new MySQL provider instance.
func (*MySQLProvider) Connect ¶
func (p *MySQLProvider) Connect() (*sql.DB, error)
Connect establishes a connection to the MySQL database.
func (*MySQLProvider) Dialect ¶
func (p *MySQLProvider) Dialect() string
Dialect returns the SQL dialect name for migrations.
func (*MySQLProvider) Type ¶
func (p *MySQLProvider) Type() config.ProviderType
Type returns the provider type.
type MySQLQuerier ¶
type MySQLQuerier struct {
*Queries
// contains filtered or unexported fields
}
MySQLQuerier wraps the MySQL-generated queries and implements the Querier interface
func NewMySQLQuerier ¶
func NewMySQLQuerier(database *sql.DB) *MySQLQuerier
NewMySQLQuerier creates a new MySQL querier wrapper
func (*MySQLQuerier) CreateFile ¶
func (q *MySQLQuerier) CreateFile(ctx context.Context, arg CreateFileParams) (File, error)
CreateFile creates a file and returns it
func (*MySQLQuerier) CreateMessage ¶
func (q *MySQLQuerier) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)
CreateMessage creates a message and returns it
func (*MySQLQuerier) CreateSession ¶
func (q *MySQLQuerier) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
CreateSession creates a session and returns it
func (*MySQLQuerier) DeleteFile ¶
func (q *MySQLQuerier) DeleteFile(ctx context.Context, id string) error
DeleteFile deletes a file
func (*MySQLQuerier) DeleteMessage ¶
func (q *MySQLQuerier) DeleteMessage(ctx context.Context, id string) error
DeleteMessage deletes a message
func (*MySQLQuerier) DeleteSession ¶
func (q *MySQLQuerier) DeleteSession(ctx context.Context, id string) error
DeleteSession deletes a session
func (*MySQLQuerier) DeleteSessionFiles ¶
func (q *MySQLQuerier) DeleteSessionFiles(ctx context.Context, sessionID string) error
DeleteSessionFiles deletes all files for a session
func (*MySQLQuerier) DeleteSessionMessages ¶
func (q *MySQLQuerier) DeleteSessionMessages(ctx context.Context, sessionID string) error
DeleteSessionMessages deletes all messages for a session
func (*MySQLQuerier) GetFileByPathAndSession ¶
func (q *MySQLQuerier) GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
GetFileByPathAndSession gets a file by path and session
func (*MySQLQuerier) GetMessage ¶
GetMessage gets a message by ID
func (*MySQLQuerier) GetSessionByID ¶
GetSessionByID gets a session by ID
func (*MySQLQuerier) ListChildSessions ¶
func (q *MySQLQuerier) ListChildSessions(ctx context.Context, rootSessionID sql.NullString) ([]Session, error)
ListChildSessions lists child sessions by root session ID
func (*MySQLQuerier) ListFilesByPath ¶
ListFilesByPath lists files by path
func (*MySQLQuerier) ListFilesBySession ¶
ListFilesBySession lists files by session
func (*MySQLQuerier) ListFilesBySessionTree ¶
func (q *MySQLQuerier) ListFilesBySessionTree(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
ListFilesBySessionTree lists files by session tree
func (*MySQLQuerier) ListLatestSessionFiles ¶
func (q *MySQLQuerier) ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
ListLatestSessionFiles lists the latest files for a session
func (*MySQLQuerier) ListLatestSessionTreeFiles ¶
func (q *MySQLQuerier) ListLatestSessionTreeFiles(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
ListLatestSessionTreeFiles lists the latest files for a session tree
func (*MySQLQuerier) ListMessagesBySession ¶
func (q *MySQLQuerier) ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)
ListMessagesBySession lists messages by session
func (*MySQLQuerier) ListSessions ¶
func (q *MySQLQuerier) ListSessions(ctx context.Context, projectID sql.NullString) ([]Session, error)
ListSessions lists sessions
func (*MySQLQuerier) UpdateFile ¶
func (q *MySQLQuerier) UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)
UpdateFile updates a file and returns it
func (*MySQLQuerier) UpdateMessage ¶
func (q *MySQLQuerier) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
UpdateMessage updates a message
func (*MySQLQuerier) UpdateSession ¶
func (q *MySQLQuerier) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)
UpdateSession updates a session and returns it
func (*MySQLQuerier) WithTx ¶
func (q *MySQLQuerier) WithTx(tx *sql.Tx) *MySQLQuerier
WithTx creates a new MySQLQuerier with a transaction
type Provider ¶
type Provider interface {
// Connect establishes a connection to the database and returns a *sql.DB instance.
// It should handle provider-specific connection setup, including:
// - Connection string/DSN building
// - Connection pooling configuration
// - Provider-specific optimizations (pragmas, settings, etc.)
// - Connection verification (ping)
Connect() (*sql.DB, error)
// Type returns the provider type (sqlite or mysql).
Type() config.ProviderType
// Dialect returns the SQL dialect name for migration purposes.
Dialect() string
}
Provider defines the interface for database connection providers.
type Querier ¶
type Querier interface {
CreateFile(ctx context.Context, arg CreateFileParams) (File, error)
CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)
CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
DeleteFile(ctx context.Context, id string) error
DeleteMessage(ctx context.Context, id string) error
DeleteSession(ctx context.Context, id string) error
DeleteSessionFiles(ctx context.Context, sessionID string) error
DeleteSessionMessages(ctx context.Context, sessionID string) error
GetFile(ctx context.Context, id string) (File, error)
GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
GetMessage(ctx context.Context, id string) (Message, error)
GetSessionByID(ctx context.Context, id string) (Session, error)
ListChildSessions(ctx context.Context, rootSessionID sql.NullString) ([]Session, error)
ListFilesByPath(ctx context.Context, path string) ([]File, error)
ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)
ListFilesBySessionTree(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
ListLatestSessionTreeFiles(ctx context.Context, rootSessionID sql.NullString) ([]File, error)
ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)
ListSessions(ctx context.Context, projectID sql.NullString) ([]Session, error)
UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)
UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)
}
type QuerierWithTx ¶
type QuerierWithTx interface {
Querier
WithTx(tx *sql.Tx) QuerierWithTx
}
QuerierWithTx extends the Querier interface with transaction support
func NewQuerier ¶
func NewQuerier(db *sql.DB) QuerierWithTx
NewQuerier creates a new Querier based on the configured provider type
type Queries ¶
type Queries struct {
// contains filtered or unexported fields
}
func (*Queries) CreateFile ¶
func (*Queries) CreateMessage ¶
func (*Queries) CreateSession ¶
func (*Queries) DeleteMessage ¶
func (*Queries) DeleteSession ¶
func (*Queries) DeleteSessionFiles ¶
func (*Queries) DeleteSessionMessages ¶
func (*Queries) GetFileByPathAndSession ¶
func (*Queries) GetMessage ¶
func (*Queries) GetSessionByID ¶
func (*Queries) ListChildSessions ¶
func (*Queries) ListFilesByPath ¶
func (*Queries) ListFilesBySession ¶
func (*Queries) ListFilesBySessionTree ¶
func (*Queries) ListLatestSessionFiles ¶
func (*Queries) ListLatestSessionTreeFiles ¶
func (*Queries) ListMessagesBySession ¶
func (*Queries) ListSessions ¶
func (*Queries) UpdateFile ¶
func (*Queries) UpdateMessage ¶
func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
func (*Queries) UpdateSession ¶
type SQLiteProvider ¶
type SQLiteProvider struct {
// contains filtered or unexported fields
}
SQLiteProvider implements the Provider interface for SQLite databases.
func NewSQLiteProvider ¶
func NewSQLiteProvider(dataDir string) *SQLiteProvider
NewSQLiteProvider creates a new SQLite provider instance.
func (*SQLiteProvider) Connect ¶
func (p *SQLiteProvider) Connect() (*sql.DB, error)
Connect establishes a connection to the SQLite database.
func (*SQLiteProvider) Dialect ¶
func (p *SQLiteProvider) Dialect() string
Dialect returns the SQL dialect name for migrations.
func (*SQLiteProvider) Type ¶
func (p *SQLiteProvider) Type() config.ProviderType
Type returns the provider type.
type Session ¶
type Session struct {
ID string `json:"id"`
ParentSessionID sql.NullString `json:"parent_session_id"`
Title string `json:"title"`
MessageCount int64 `json:"message_count"`
PromptTokens int64 `json:"prompt_tokens"`
CompletionTokens int64 `json:"completion_tokens"`
Cost float64 `json:"cost"`
UpdatedAt int64 `json:"updated_at"`
CreatedAt int64 `json:"created_at"`
SummaryMessageID sql.NullString `json:"summary_message_id"`
ProjectID sql.NullString `json:"project_id"`
RootSessionID sql.NullString `json:"root_session_id"`
}