MCPcopy Index your code
hub / github.com/docker/docker-agent / scanSession

Function scanSession

pkg/session/store.go:639–692  ·  view source on GitHub ↗

scanSession scans a single row into a Session struct. Note: Messages are loaded separately from session_items table. The thinking column is read but discarded — it is kept in the schema for backward compatibility with older docker-agent versions that wrote it.

(scanner interface {
	Scan(dest ...any) error
},
)

Source from the content-addressed store, hash-verified

637// The thinking column is read but discarded — it is kept in the schema for
638// backward compatibility with older docker-agent versions that wrote it.
639func scanSession(scanner interface {
640 Scan(dest ...any) error
641},
642) (*Session, error) {
643 var (
644 sess Session
645 workingDir sql.NullString
646 permissionsJSON sql.NullString
647 parentID sql.NullString
648 agentModelOverridesJSON string
649 customModelsUsedJSON string
650 createdAtStr string
651 thinking bool // discarded
652 )
653
654 err := scanner.Scan(
655 &sess.ID, &sess.ToolsApproved, &sess.InputTokens, &sess.OutputTokens,
656 &sess.Title, &sess.Cost, &sess.SendUserMessage, &sess.MaxIterations,
657 &workingDir, &createdAtStr, &sess.Starred, &permissionsJSON,
658 &agentModelOverridesJSON, &customModelsUsedJSON, &thinking, &parentID,
659 )
660 if err != nil {
661 return nil, err
662 }
663
664 sess.CreatedAt, err = time.Parse(time.RFC3339, createdAtStr)
665 if err != nil {
666 return nil, err
667 }
668
669 sess.WorkingDir = workingDir.String
670 sess.ParentID = parentID.String
671
672 if permissionsJSON.Valid && permissionsJSON.String != "" {
673 sess.Permissions = &PermissionsConfig{}
674 if err := json.Unmarshal([]byte(permissionsJSON.String), sess.Permissions); err != nil {
675 return nil, err
676 }
677 }
678
679 if agentModelOverridesJSON != "" && agentModelOverridesJSON != "{}" {
680 if err := json.Unmarshal([]byte(agentModelOverridesJSON), &sess.AgentModelOverrides); err != nil {
681 return nil, err
682 }
683 }
684
685 if customModelsUsedJSON != "" && customModelsUsedJSON != "[]" {
686 if err := json.Unmarshal([]byte(customModelsUsedJSON), &sess.CustomModelsUsed); err != nil {
687 return nil, err
688 }
689 }
690
691 return &sess, nil
692}
693
694// GetSession retrieves a session by ID
695func (s *SQLiteSessionStore) GetSession(ctx context.Context, id string) (*Session, error) {

Callers 2

loadSessionMethod · 0.85
GetSessionsMethod · 0.85

Calls 1

ParseMethod · 0.80

Tested by

no test coverage detected