github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/worker_task_cache_factory.go (about) 1 package db 2 3 //go:generate counterfeiter . WorkerTaskCacheFactory 4 5 type WorkerTaskCacheFactory interface { 6 FindOrCreate(WorkerTaskCache) (*UsedWorkerTaskCache, error) 7 Find(WorkerTaskCache) (*UsedWorkerTaskCache, bool, error) 8 } 9 10 type workerTaskCacheFactory struct { 11 conn Conn 12 } 13 14 func NewWorkerTaskCacheFactory(conn Conn) WorkerTaskCacheFactory { 15 return &workerTaskCacheFactory{ 16 conn: conn, 17 } 18 } 19 20 func (f *workerTaskCacheFactory) Find(workerTaskCache WorkerTaskCache) (*UsedWorkerTaskCache, bool, error) { 21 return workerTaskCache.find(f.conn) 22 } 23 24 func (f *workerTaskCacheFactory) FindOrCreate(workerTaskCache WorkerTaskCache) (*UsedWorkerTaskCache, error) { 25 tx, err := f.conn.Begin() 26 if err != nil { 27 return nil, err 28 } 29 30 defer Rollback(tx) 31 32 usedWorkerTaskCache, err := workerTaskCache.findOrCreate(tx) 33 if err != nil { 34 return nil, err 35 } 36 37 err = tx.Commit() 38 if err != nil { 39 return nil, err 40 } 41 42 return usedWorkerTaskCache, nil 43 }