package user_token
import (
"time"
"github.com/google/uuid"
"github.com/limanmys/render-engine/app/models"
"github.com/limanmys/render-engine/internal/database"
gorandom "github.com/zekiahmetbayar/go-random"
)
func Create (user_id string ) (string , error ) {
var token models .Token
database .Connection ().Model (&models .Token {}).Where ("user_id = ?" , user_id ).First (&token )
if token .ID == "" {
uid := uuid .New ()
token := generate ()
if err := database .Connection ().Model (&models .Token {}).Create (models .Token {
ID : uid .String (),
CreatedAt : time .Now ().Format (time .RFC3339 ),
UpdatedAt : time .Now ().Format (time .RFC3339 ),
UserID : user_id ,
Token : token ,
}).Error ; err != nil {
return "" , err
}
return token , nil
}
updateDate , err := time .Parse (time .RFC3339 , token .UpdatedAt )
if err != nil {
return "" , err
}
if time .Since (updateDate ).Hours () > 6 {
token_str := generate ()
if err := database .Connection ().Model (&token ).Update ("token" , token_str ).Error ; err != nil {
return "" , err
}
return token_str , nil
}
return token .Token , nil
}
func generate() string {
token , err := gorandom .String (false , true , false , 32 )
if err != nil {
return ""
}
return token
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .