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 }