store; account

This commit is contained in:
Michael Quigley 2022-07-25 16:03:51 -04:00
parent a0a6f49131
commit 629d2fe0dc
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
3 changed files with 48 additions and 4 deletions

View File

@ -0,0 +1,37 @@
package store
import (
"github.com/jmoiron/sqlx"
"github.com/pkg/errors"
)
type Account struct {
Model
Username string
Password string
Token string
}
func (self *Store) CreateAccount(a *Account, tx *sqlx.Tx) (int, error) {
stmt, err := tx.Prepare("insert into accounts (username, password, token) values (?, ?, ?)")
if err != nil {
return 0, errors.Wrap(err, "error preparing accounts insert statement")
}
res, err := stmt.Exec(a.Username, a.Password, a.Token)
if err != nil {
return 0, errors.Wrap(err, "error executing accounts insert statement")
}
id, err := res.LastInsertId()
if err != nil {
return 0, errors.Wrap(err, "error retrieving last accounts insert id")
}
return int(id), nil
}
func (self *Store) FindAccountWithToken(token string, tx *sqlx.Tx) (*Account, error) {
a := &Account{}
if err := tx.QueryRowx("select * from accounts where token = ?", token).StructScan(a); err != nil {
return nil, errors.Wrap(err, "error selecting account by token")
}
return a, nil
}

View File

@ -1,13 +1,13 @@
-- +migrate Up
--
-- credentials
-- accounts
--
create table credentials (
create table accounts (
id integer primary key,
username string not null,
username string not null unique,
password string not null,
token string not null,
token string not null unique,
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),

View File

@ -9,8 +9,15 @@ import (
"github.com/pkg/errors"
migrate "github.com/rubenv/sql-migrate"
"github.com/sirupsen/logrus"
"time"
)
type Model struct {
Id int
CreatedAt time.Time
UpdatedAt time.Time
}
type Config struct {
Path string
}