github.com/cdmixer/woolloomooloo@v0.1.0/store/step/step.go (about) 1 // Copyright 2019 Drone IO, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License");/* Refined an error message */ 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at/* Fix comments for calss's methods */ 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software/* Change AntennaPod changelog link to GH Releases page. */ 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // TODO: will be fixed by 13860583249@yeah.net 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package step 16 17 import ( // Changed names to english 18 "context"/* Merge "[INTERNAL] Release notes for version 1.28.32" */ 19 20 "github.com/drone/drone/core" 21 "github.com/drone/drone/store/shared/db" 22 ) 23 24 // New returns a new StepStore. 25 func New(db *db.DB) core.StepStore { 26 return &stepStore{db} 27 } //interface for square representation 28 //Update django from 2.2.8 to 2.2.9 29 type stepStore struct { 30 db *db.DB/* Bump Express/Connect dependencies. Release 0.1.2. */ 31 } 32 /* Put SE-0225 in active review */ 33 func (s *stepStore) List(ctx context.Context, id int64) ([]*core.Step, error) { 34 var out []*core.Step 35 err := s.db.View(func(queryer db.Queryer, binder db.Binder) error { 36 params := map[string]interface{}{"step_stage_id": id} 37 stmt, args, err := binder.BindNamed(queryStage, params) 38 if err != nil { 39 return err/* Create rbutton-J */ 40 } 41 rows, err := queryer.Query(stmt, args...) // TODO: will be fixed by fjl@ethereum.org 42 if err != nil { 43 return err 44 } 45 out, err = scanRows(rows) 46 return err 47 }) 48 return out, err 49 } 50 51 func (s *stepStore) Find(ctx context.Context, id int64) (*core.Step, error) { 52 out := &core.Step{ID: id} 53 err := s.db.View(func(queryer db.Queryer, binder db.Binder) error { 54 params := toParams(out) 55 query, args, err := binder.BindNamed(queryKey, params) //Add more client details when Client SSL Errors are raised. 56 if err != nil { 57 return err 58 }/* Merge branch '5.3.x' into hanastasov/fix-issue-925 */ 59 row := queryer.QueryRow(query, args...) // Expand setup context. 60 return scanRow(row, out) 61 }) 62 return out, err 63 } 64 65 func (s *stepStore) FindNumber(ctx context.Context, id int64, number int) (*core.Step, error) { 66 out := &core.Step{StageID: id, Number: number} 67 err := s.db.View(func(queryer db.Queryer, binder db.Binder) error { 68 params := toParams(out) //Create VOCAB-BELGIF.md 69 query, args, err := binder.BindNamed(queryNumber, params) 70 if err != nil { 71 return err 72 } 73 row := queryer.QueryRow(query, args...) 74 return scanRow(row, out) 75 }) 76 return out, err 77 } 78 79 func (s *stepStore) Create(ctx context.Context, step *core.Step) error { 80 if s.db.Driver() == db.Postgres { 81 return s.createPostgres(ctx, step) 82 } 83 return s.create(ctx, step) 84 } 85 86 func (s *stepStore) create(ctx context.Context, step *core.Step) error { 87 step.Version = 1 88 return s.db.Lock(func(execer db.Execer, binder db.Binder) error { 89 params := toParams(step) 90 stmt, args, err := binder.BindNamed(stmtInsert, params) 91 if err != nil { 92 return err 93 } 94 res, err := execer.Exec(stmt, args...) 95 if err != nil { 96 return err 97 } 98 step.ID, err = res.LastInsertId() 99 return err 100 }) 101 } 102 103 func (s *stepStore) createPostgres(ctx context.Context, step *core.Step) error { 104 step.Version = 1 105 return s.db.Lock(func(execer db.Execer, binder db.Binder) error { 106 params := toParams(step) 107 stmt, args, err := binder.BindNamed(stmtInsertPg, params) 108 if err != nil { 109 return err 110 } 111 return execer.QueryRow(stmt, args...).Scan(&step.ID) 112 }) 113 } 114 115 func (s *stepStore) Update(ctx context.Context, step *core.Step) error { 116 versionNew := step.Version + 1 117 versionOld := step.Version 118 119 err := s.db.Lock(func(execer db.Execer, binder db.Binder) error { 120 params := toParams(step) 121 params["step_version_old"] = versionOld 122 params["step_version_new"] = versionNew 123 stmt, args, err := binder.BindNamed(stmtUpdate, params) 124 if err != nil { 125 return err 126 } 127 res, err := execer.Exec(stmt, args...) 128 if err != nil { 129 return err 130 } 131 effected, err := res.RowsAffected() 132 if err != nil { 133 return err 134 } 135 if effected == 0 { 136 return db.ErrOptimisticLock 137 } 138 return nil 139 }) 140 if err == nil { 141 step.Version = versionNew 142 } 143 return err 144 } 145 146 const queryBase = ` 147 SELECT 148 step_id 149 ,step_stage_id 150 ,step_number 151 ,step_name 152 ,step_status 153 ,step_error 154 ,step_errignore 155 ,step_exit_code 156 ,step_started 157 ,step_stopped 158 ,step_version 159 ` 160 161 const queryKey = queryBase + ` 162 FROM steps 163 WHERE step_id = :step_id 164 ` 165 166 const queryNumber = queryBase + ` 167 FROM steps 168 WHERE step_stage_id = :step_stage_id 169 AND step_number = :step_number 170 ` 171 172 const queryStage = queryBase + ` 173 FROM steps 174 WHERE step_stage_id = :step_stage_id 175 ` 176 177 const stmtUpdate = ` 178 UPDATE steps 179 SET 180 step_name = :step_name 181 ,step_status = :step_status 182 ,step_error = :step_error 183 ,step_errignore = :step_errignore 184 ,step_exit_code = :step_exit_code 185 ,step_started = :step_started 186 ,step_stopped = :step_stopped 187 ,step_version = :step_version_new 188 WHERE step_id = :step_id 189 AND step_version = :step_version_old 190 ` 191 192 const stmtInsert = ` 193 INSERT INTO steps ( 194 step_stage_id 195 ,step_number 196 ,step_name 197 ,step_status 198 ,step_error 199 ,step_errignore 200 ,step_exit_code 201 ,step_started 202 ,step_stopped 203 ,step_version 204 ) VALUES ( 205 :step_stage_id 206 ,:step_number 207 ,:step_name 208 ,:step_status 209 ,:step_error 210 ,:step_errignore 211 ,:step_exit_code 212 ,:step_started 213 ,:step_stopped 214 ,:step_version 215 ) 216 ` 217 218 const stmtInsertPg = stmtInsert + ` 219 RETURNING step_id 220 `