From 682bba726dca2e33317876c459f6334ddf5f060a Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Sun, 25 Jun 2017 18:42:33 -0400 Subject: add tokens table --- data.go | 23 +++++++++++++++++++++++ migrations/20170625150613_token.sql | 14 ++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 migrations/20170625150613_token.sql diff --git a/data.go b/data.go index ba3157b..186e6a2 100644 --- a/data.go +++ b/data.go @@ -71,6 +71,9 @@ type DataStore interface { PutSession(*Session) error GetSession(key string) (*Session, error) GetClient(key string) (*Client, error) + GetToken(token string) (*Token, error) + NewToken() (string, error) + PutToken(token *Token) error PutScrobbles([]Scrobble) error PutNowPlaying(s Scrobble) error NowPlaying(userId int) *Scrobble @@ -129,6 +132,26 @@ func (store *SqlStore) GetClient(key string) (*Client, error) { return c, err } +func (store *SqlStore) NewToken() (string, error) { + token := randomToken(16) + query := `INSERT INTO tokens(token) VALUES($1)` + _, err := store.Exec(query, token) + return token, err +} + +func (store *SqlStore) PutToken(token *Token) error { + query := "UPDATE tokens SET user_id=$1 WHERE token=$2" + _, err := store.Exec(query, token.UserId, token.Val) + return err +} + +func (store *SqlStore) GetToken(token string) (*Token, error) { + row := store.QueryRow(`SELECT * FROM tokens WHERE token=$1`, token) + t := new(Token) + err := row.Scan(&t.Val, &t.Created, &t.UserId) + return t, err +} + func (store *SqlStore) GetScrobblingUser(lfmName string) (int, string, error) { var password string var userId int diff --git a/migrations/20170625150613_token.sql b/migrations/20170625150613_token.sql new file mode 100644 index 0000000..fa56fa2 --- /dev/null +++ b/migrations/20170625150613_token.sql @@ -0,0 +1,14 @@ + +-- +goose Up +-- SQL in section 'Up' is executed when this migration is applied + +CREATE TABLE tokens( + token text PRIMARY KEY, + created timestamp WITH time zone DEFAULT now(), + user_id integer REFERENCES users(user_id) +); + + +-- +goose Down +-- SQL section 'Down' is executed when this migration is rolled back +DROP TABLE tokens; -- cgit v1.2.3-70-g09d2