github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/resource_config_check_session_lifecycle.go (about) 1 package db 2 3 import ( 4 sq "github.com/Masterminds/squirrel" 5 ) 6 7 //go:generate counterfeiter . ResourceConfigCheckSessionLifecycle 8 9 type ResourceConfigCheckSessionLifecycle interface { 10 CleanInactiveResourceConfigCheckSessions() error 11 CleanExpiredResourceConfigCheckSessions() error 12 } 13 14 type resourceConfigCheckSessionLifecycle struct { 15 conn Conn 16 } 17 18 func NewResourceConfigCheckSessionLifecycle(conn Conn) ResourceConfigCheckSessionLifecycle { 19 return resourceConfigCheckSessionLifecycle{ 20 conn: conn, 21 } 22 } 23 24 func (lifecycle resourceConfigCheckSessionLifecycle) CleanInactiveResourceConfigCheckSessions() error { 25 usedByActiveUnpausedResources, _, err := sq. 26 Select("rccs.id"). 27 From("resource_config_check_sessions rccs"). 28 Join("resource_configs rc ON rccs.resource_config_id = rc.id"). 29 Join("resources r ON r.resource_config_id = rc.id"). 30 Join("pipelines p ON p.id = r.pipeline_id"). 31 Where(sq.Expr("r.active AND NOT p.paused")). 32 ToSql() 33 if err != nil { 34 return err 35 } 36 37 usedByActiveUnpausedResourceTypes, _, err := sq. 38 Select("rccs.id"). 39 From("resource_config_check_sessions rccs"). 40 Join("resource_configs rc ON rccs.resource_config_id = rc.id"). 41 Join("resource_types rt ON rt.resource_config_id = rc.id"). 42 Join("pipelines p ON p.id = rt.pipeline_id"). 43 Where(sq.Expr("rt.active AND NOT p.paused")). 44 ToSql() 45 if err != nil { 46 return err 47 } 48 49 _, err = sq.Delete("resource_config_check_sessions"). 50 Where("id NOT IN (" + usedByActiveUnpausedResources + " UNION " + usedByActiveUnpausedResourceTypes + ")"). 51 PlaceholderFormat(sq.Dollar). 52 RunWith(lifecycle.conn). 53 Exec() 54 55 return err 56 } 57 58 func (lifecycle resourceConfigCheckSessionLifecycle) CleanExpiredResourceConfigCheckSessions() error { 59 _, err := psql.Delete("resource_config_check_sessions"). 60 Where(sq.Expr("expires_at < NOW()")). 61 RunWith(lifecycle.conn). 62 Exec() 63 64 return err 65 }