19 lines
628 B
Go
19 lines
628 B
Go
package chat
|
||
|
||
import (
|
||
"crypto/rand"
|
||
"encoding/hex"
|
||
"time"
|
||
)
|
||
|
||
// newQuestionID генерирует уникальный идентификатор вопроса (блок 4:
|
||
// идентификатор в каждом Message, чтобы связать ответ с вопросом).
|
||
func newQuestionID() string {
|
||
b := make([]byte, 8)
|
||
if _, err := rand.Read(b); err != nil {
|
||
// крипто-rand недоступен — fallback по времени (уникален на практике)
|
||
return "q_" + hex.EncodeToString([]byte(time.Now().Format("150405.000000000")))
|
||
}
|
||
return "q_" + hex.EncodeToString(b)
|
||
}
|