Detailed changes
@@ -60,6 +60,9 @@ func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
if q.getSessionByIDStmt, err = db.PrepareContext(ctx, getSessionByID); err != nil {
return nil, fmt.Errorf("error preparing query GetSessionByID: %w", err)
}
+ if q.listAllMessagesStmt, err = db.PrepareContext(ctx, listAllMessages); err != nil {
+ return nil, fmt.Errorf("error preparing query ListAllMessages: %w", err)
+ }
if q.listFilesByPathStmt, err = db.PrepareContext(ctx, listFilesByPath); err != nil {
return nil, fmt.Errorf("error preparing query ListFilesByPath: %w", err)
}
@@ -149,6 +152,11 @@ func (q *Queries) Close() error {
err = fmt.Errorf("error closing getSessionByIDStmt: %w", cerr)
}
}
+ if q.listAllMessagesStmt != nil {
+ if cerr := q.listAllMessagesStmt.Close(); cerr != nil {
+ err = fmt.Errorf("error closing listAllMessagesStmt: %w", cerr)
+ }
+ }
if q.listFilesByPathStmt != nil {
if cerr := q.listFilesByPathStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing listFilesByPathStmt: %w", cerr)
@@ -240,6 +248,7 @@ type Queries struct {
getFileByPathAndSessionStmt *sql.Stmt
getMessageStmt *sql.Stmt
getSessionByIDStmt *sql.Stmt
+ listAllMessagesStmt *sql.Stmt
listFilesByPathStmt *sql.Stmt
listFilesBySessionStmt *sql.Stmt
listLatestSessionFilesStmt *sql.Stmt
@@ -266,6 +275,7 @@ func (q *Queries) WithTx(tx *sql.Tx) *Queries {
getFileByPathAndSessionStmt: q.getFileByPathAndSessionStmt,
getMessageStmt: q.getMessageStmt,
getSessionByIDStmt: q.getSessionByIDStmt,
+ listAllMessagesStmt: q.listAllMessagesStmt,
listFilesByPathStmt: q.listFilesByPathStmt,
listFilesBySessionStmt: q.listFilesBySessionStmt,
listLatestSessionFilesStmt: q.listLatestSessionFilesStmt,
@@ -107,6 +107,46 @@ func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error) {
return i, err
}
+const listAllMessages = `-- name: ListAllMessages :many
+SELECT id, session_id, role, parts, model, created_at, updated_at, finished_at, provider, is_summary_message
+FROM messages
+ORDER BY created_at ASC
+`
+
+func (q *Queries) ListAllMessages(ctx context.Context) ([]Message, error) {
+ rows, err := q.query(ctx, q.listAllMessagesStmt, listAllMessages)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ items := []Message{}
+ for rows.Next() {
+ var i Message
+ if err := rows.Scan(
+ &i.ID,
+ &i.SessionID,
+ &i.Role,
+ &i.Parts,
+ &i.Model,
+ &i.CreatedAt,
+ &i.UpdatedAt,
+ &i.FinishedAt,
+ &i.Provider,
+ &i.IsSummaryMessage,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Close(); err != nil {
+ return nil, err
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const listMessagesBySession = `-- name: ListMessagesBySession :many
SELECT id, session_id, role, parts, model, created_at, updated_at, finished_at, provider, is_summary_message
FROM messages
@@ -21,6 +21,7 @@ type Querier interface {
GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
GetMessage(ctx context.Context, id string) (Message, error)
GetSessionByID(ctx context.Context, id string) (Session, error)
+ ListAllMessages(ctx context.Context) ([]Message, error)
ListFilesByPath(ctx context.Context, path string) ([]File, error)
ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)
ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
@@ -9,6 +9,11 @@ FROM messages
WHERE session_id = ?
ORDER BY created_at ASC;
+-- name: ListAllMessages :many
+SELECT *
+FROM messages
+ORDER BY created_at ASC;
+
-- name: CreateMessage :one
INSERT INTO messages (
id,
@@ -26,6 +26,7 @@ type Service interface {
Update(ctx context.Context, message Message) error
Get(ctx context.Context, id string) (Message, error)
List(ctx context.Context, sessionID string) ([]Message, error)
+ FullList(ctx context.Context) ([]Message, error)
Delete(ctx context.Context, id string) error
DeleteSessionMessages(ctx context.Context, sessionID string) error
}
@@ -151,6 +152,11 @@ func (s *service) List(ctx context.Context, sessionID string) ([]Message, error)
return messages, nil
}
+func (s *service) FullList(ctx context.Context) ([]Message, error) {
+ dbMessages, err := s.q.ListAllMessages(ctx)
+ return nil, nil
+}
+
func (s *service) fromDBItem(item db.Message) (Message, error) {
parts, err := unmarshallParts([]byte(item.Parts))
if err != nil {