@hushed idol it depends what you are doing with the DB call output. If you are just returning a 200/403 and no content then its fine. But if you run in a goroutine , then you cant write any errors to the returned user (conditional 403 based on the success of the db operation).
That being said, looking at your code it seems fine, as there is nothing inherently bad about running db operations in a goroutine. But yes, it will come back to bite you in the ass because if you are planning to make this an actual API, it will be necessary to return results based on the operation results.
Additionally, you should add a deadline to your context (i'm assuming this is some long-running read/write). If its not a long-running read/write, I see no issue just not using the goroutine for this. However, if it is a long-running op, then I would suggest optimizing the query itself (adding necessary indexes, smarter storage of data, etc.). Also, no need to cast dnaString to a string again on line 45.
Deadline ctx:
// call cancel func to cancel the context, you can ignore this, but I would just defer it in
// your goroutine. This context will cancel automatically after 30 seconds
opCtx, cancelFunc := context.WithTimeout(ctx, time.Seconds * 30)