github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/access_token_lifecycle.go (about) 1 package db 2 3 import ( 4 "fmt" 5 "time" 6 7 sq "github.com/Masterminds/squirrel" 8 ) 9 10 //go:generate counterfeiter . AccessTokenLifecycle 11 12 type AccessTokenLifecycle interface { 13 RemoveExpiredAccessTokens(leeway time.Duration) (int, error) 14 } 15 16 type accessTokenLifecycle struct { 17 conn Conn 18 } 19 20 func NewAccessTokenLifecycle(conn Conn) AccessTokenLifecycle { 21 return &accessTokenLifecycle{conn} 22 } 23 24 func (a accessTokenLifecycle) RemoveExpiredAccessTokens(leeway time.Duration) (int, error) { 25 res, err := sq.Delete("access_tokens"). 26 Where( 27 sq.Expr(fmt.Sprintf("expires_at < now() - '%d seconds'::interval", int(leeway.Seconds()))), 28 ). 29 RunWith(a.conn). 30 Exec() 31 if err != nil { 32 return 0, err 33 } 34 n, err := res.RowsAffected() 35 if err != nil { 36 return 0, err 37 } 38 return int(n), nil 39 }