(input: SubmitCompletionInput)
| 127 | * an UPDATE on `wanted` followed by an INSERT IGNORE on `completions`. |
| 128 | */ |
| 129 | export function submitCompletionDML(input: SubmitCompletionInput): string[] { |
| 130 | const hopField = sqlStringOrNull(input.hopUri); |
| 131 | |
| 132 | const update = |
| 133 | `UPDATE wanted SET status='in_review', evidence_url='${escapeSqlString(input.evidence)}', ` + |
| 134 | `updated_at=NOW() WHERE id='${escapeSqlString(input.wantedId)}' ` + |
| 135 | `AND status='claimed' AND claimed_by='${escapeSqlString(input.rigHandle)}'`; |
| 136 | |
| 137 | const insert = |
| 138 | `INSERT IGNORE INTO completions (id, wanted_id, completed_by, evidence, hop_uri, completed_at) ` + |
| 139 | `SELECT '${escapeSqlString(input.completionId)}', '${escapeSqlString(input.wantedId)}', ` + |
| 140 | `'${escapeSqlString(input.rigHandle)}', '${escapeSqlString(input.evidence)}', ${hopField}, NOW() ` + |
| 141 | `FROM wanted WHERE id='${escapeSqlString(input.wantedId)}' AND status='in_review' ` + |
| 142 | `AND claimed_by='${escapeSqlString(input.rigHandle)}' ` + |
| 143 | `AND NOT EXISTS (SELECT 1 FROM completions WHERE wanted_id='${escapeSqlString(input.wantedId)}')`; |
| 144 | |
| 145 | return [update, insert]; |
| 146 | } |
| 147 | |
| 148 | // AcceptCompletionDML (commons.go:680) |
| 149 |
no test coverage detected