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 }