code: func (q *TransactionQuery) RunOne(model Model) {
  	if q.hasError() {
  		q.tx.setError(q.err)
  		return
  	}
  	if err := q.collection.spec.checkModelType(model); err != nil {
  		q.tx.setError(err)
  		return
  	}
  	idsKey, tmpKeys, err := generateIDsSet(q.query, q.tx)
  	if err != nil {
  		q.tx.setError(err)
  		return
  	}
  	sortArgs := q.collection.spec.sortArgs(idsKey, q.redisFieldNames(), 1, q.offset, q.order.kind == descendingOrder)
  	q.tx.Command("SORT", sortArgs, newScanOneModelHandler(q.query, q.collection.spec, append(q.fieldNames(), "-"), model))
  	if len(tmpKeys) > 0 {
  		q.tx.Command("DEL", (redis.Args{}).Add(tmpKeys...), nil)
  	}
  }
docs: // RunOne will run the query and scan the first model which matches the query
  // criteria into model. If no model matches the query criteria, it will set a
  // ModelNotFoundError on the Transaction. It works very similarly to
  // Query.RunOne, so you can check the documentation for Query.RunOne for more
  // information. The first error encountered will be saved to the corresponding
  // Transaction (if there is not already an error for the Transaction) and
  // returned when you call Transaction.Exec.