From 1c1c6b119077f3d9aacc6351ac8284bb72405a62 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Fri, 20 Mar 2015 21:18:34 +0700 Subject: [PATCH] Update org model --- db/org.go | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/db/org.go b/db/org.go index ddc1cd8..6d0aa73 100644 --- a/db/org.go +++ b/db/org.go @@ -5,29 +5,35 @@ import ( ) type Org struct { - ID uint64 `json:"id"` - Login string `json:"login"` - Company string `json:"company"` - AvatarURL string `json:"avatar_url" db:"avatar_url"` + ID uint64 `json:"id"` + Login string `json:"login"` + Company string `json:"company"` + AvatarURL string `json:"avatar_url" db:"avatar_url"` + CreatedAt time.Time `json:"created_at" db:"created_at"` + UpdatedAt time.Time `json:"updated_at" db:"updated_at"` } -const userOrgsQuery = `select o.* from members m join orgs o on o.login = m.org where user = ?` -const saveOrgQuery = ` -insert into orgs (id, login, company, avatar_url, created_at, updated_at) -values (:id, :login, :company, :avatar_url, now(), now()) -on duplicate key update -login = values(login), -company = values(company), -avatar_url = values(avatar_url), -updated_at=now()` - func (o *Org) Save() { defer measure("SaveOrg", time.Now()) - mustExecN(saveOrgQuery, o) + mustExecN(` + insert into orgs (id, login, company, avatar_url, created_at, updated_at) + values (:id, :login, :company, :avatar_url, now(), now()) + on duplicate key update + login = values(login), + company = values(company), + avatar_url = values(avatar_url), + updated_at = now() + `, o) } func UserOrgs(login string) (orgs []*Org) { defer measure("UserOrgs", time.Now()) - mustSelect(&orgs, userOrgsQuery, login) + mustSelect(&orgs, ` + select o.* + from org_members m + join users u on u.id = m.user_id + join orgs o on o.id = m.org_id + where u.login = ? + `, login) return }