From eff7f60dc2e53df0dfc8de407bec43371e58a860 Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Wed, 16 Nov 2016 15:12:59 -0800 Subject: [PATCH] Fixes for bugs in MySQL migration (#501) * Fix users table name in MySQL ListUsers * Fix invalid SQL * Implement MarkHostSeen * Partial fix for targets autocompletion --- server/datastore/mysql/hosts.go | 16 ++++++++++++++-- server/datastore/mysql/labels.go | 4 ++++ server/datastore/mysql/sessions.go | 6 +++--- server/datastore/mysql/users.go | 2 +- server/kolide/sessions.go | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/server/datastore/mysql/hosts.go b/server/datastore/mysql/hosts.go index 41f09effab..150820ab3c 100644 --- a/server/datastore/mysql/hosts.go +++ b/server/datastore/mysql/hosts.go @@ -191,8 +191,20 @@ func (d *Datastore) AuthenticateHost(nodeKey string) (*kolide.Host, error) { } -func (d *Datastore) MarkHostSeen(*kolide.Host, time.Time) error { - panic("not implemented") +func (d *Datastore) MarkHostSeen(host *kolide.Host, t time.Time) error { + sqlStatement := ` + UPDATE hosts SET + updated_at = ? + WHERE node_key=? + ` + + _, err := d.db.Exec(sqlStatement, t, host.NodeKey) + if err != nil { + return errors.DatabaseError(err) + } + + host.UpdatedAt = t + return nil } func (d *Datastore) searchHostsWithOmits(query string, omits ...uint) ([]kolide.Host, error) { diff --git a/server/datastore/mysql/labels.go b/server/datastore/mysql/labels.go index acd33ef4c1..6ddd15b987 100644 --- a/server/datastore/mysql/labels.go +++ b/server/datastore/mysql/labels.go @@ -181,6 +181,10 @@ func (d *Datastore) ListHostsInLabel(lid uint) ([]kolide.Host, error) { } func (d *Datastore) ListUniqueHostsInLabels(labels []uint) ([]kolide.Host, error) { + if len(labels) == 0 { + return []kolide.Host{}, nil + } + sqlStatement := ` SELECT h.* FROM label_query_executions lqe diff --git a/server/datastore/mysql/sessions.go b/server/datastore/mysql/sessions.go index fadb225013..e1363762f7 100644 --- a/server/datastore/mysql/sessions.go +++ b/server/datastore/mysql/sessions.go @@ -8,7 +8,7 @@ import ( func (d *Datastore) SessionByKey(key string) (*kolide.Session, error) { sqlStatement := ` SELECT * FROM sessions - WHERE key = ? LIMIT 1 + WHERE ` + "`key`" + ` = ? LIMIT 1 ` session := &kolide.Session{} err := d.db.Get(session, sqlStatement, key) @@ -53,9 +53,9 @@ func (d *Datastore) NewSession(session *kolide.Session) (*kolide.Session, error) sqlStatement := ` INSERT INTO sessions ( user_id, - key + ` + "`key`" + ` ) - VALUES(?,?,?,?) + VALUES(?,?) ` result, err := d.db.Exec(sqlStatement, session.UserID, session.Key) if err != nil { diff --git a/server/datastore/mysql/users.go b/server/datastore/mysql/users.go index d810a955ae..e7688ea749 100644 --- a/server/datastore/mysql/users.go +++ b/server/datastore/mysql/users.go @@ -60,7 +60,7 @@ func (d *Datastore) User(username string) (*kolide.User, error) { // kolide.ListOptions func (d *Datastore) ListUsers(opt kolide.ListOptions) ([]*kolide.User, error) { sqlStatement := ` - SELECT * FROM USERS WHERE NOT deleted + SELECT * FROM users WHERE NOT deleted ` sqlStatement = appendListOptionsToSQL(sqlStatement, opt) users := []*kolide.User{} diff --git a/server/kolide/sessions.go b/server/kolide/sessions.go index e54d6f38de..6dcd2789f3 100644 --- a/server/kolide/sessions.go +++ b/server/kolide/sessions.go @@ -71,7 +71,7 @@ type Session struct { CreateTimestamp ID uint AccessedAt time.Time `db:"accessed_at"` - UserID uint + UserID uint `db:"user_id"` Key string }