github.com/wrgl/wrgl@v0.14.0/pkg/ref/sql/logreader.go (about)

     1  package refsql
     2  
     3  import (
     4  	"database/sql"
     5  	"io"
     6  
     7  	"github.com/google/uuid"
     8  	"github.com/wrgl/wrgl/pkg/ref"
     9  )
    10  
    11  type ReflogReader struct {
    12  	db      *sql.DB
    13  	ref     string
    14  	ordinal int
    15  }
    16  
    17  func (l *ReflogReader) Read() (*ref.Reflog, error) {
    18  	if l.ordinal == 0 {
    19  		return nil, io.EOF
    20  	}
    21  	row := l.db.QueryRow(
    22  		`SELECT oldoid, newoid, authorname, authoremail, time, action, message, txid
    23  		FROM reflogs WHERE ref = ? AND ordinal = ?`,
    24  		l.ref, l.ordinal,
    25  	)
    26  	rl := &ref.Reflog{}
    27  	var txid *uuid.UUID
    28  	if err := row.Scan(&rl.OldOID, &rl.NewOID, &rl.AuthorName, &rl.AuthorEmail, &rl.Time, &rl.Action, &rl.Message, &txid); err != nil {
    29  		return nil, err
    30  	}
    31  	if txid != nil {
    32  		rl.Txid = txid
    33  	}
    34  	l.ordinal -= 1
    35  	return rl, nil
    36  }
    37  
    38  func (l *ReflogReader) Close() error {
    39  	return nil
    40  }