60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package database
|
|
|
|
import (
|
|
"context"
|
|
"system-trace/core/types"
|
|
)
|
|
|
|
type AuthToken struct {
|
|
UserID int32
|
|
AccessToken string `bun:"type:varchar"`
|
|
RefreshToken string `bun:"type:varchar"`
|
|
IsRevoked bool `bun:",default:false"`
|
|
}
|
|
|
|
func GetPairOfTokens(p *types.PairTokens) (*AuthToken, error) {
|
|
aut := new(AuthToken)
|
|
|
|
ctx := context.Background()
|
|
err := PG.NewSelect().
|
|
Model(aut).
|
|
Where("access_token = ?", p.AccessToken).
|
|
Where("refresh_token = ?", p.RefreshToken).
|
|
Where("is_revoked = ?", false).
|
|
Scan(ctx)
|
|
|
|
return aut, err
|
|
}
|
|
|
|
func InsertPairOfTokens(id int32, at, rt string) error {
|
|
p := AuthToken{
|
|
UserID: id,
|
|
AccessToken: at,
|
|
RefreshToken: rt,
|
|
}
|
|
|
|
ctx := context.Background()
|
|
_, err := PG.NewInsert().
|
|
Model(&p).
|
|
Returning("NULL").
|
|
Exec(ctx)
|
|
|
|
return err
|
|
}
|
|
|
|
func RevokePairOfTokens(p *types.PairTokens) error {
|
|
aut := AuthToken{
|
|
IsRevoked: true,
|
|
}
|
|
|
|
ctx := context.Background()
|
|
_, err := PG.NewUpdate().
|
|
Model(&aut).
|
|
Column("is_revoked").
|
|
Where("access_token = ?", p.AccessToken).
|
|
Where("refresh_token = ?", p.RefreshToken).
|
|
Exec(ctx)
|
|
|
|
return err
|
|
}
|