Repos api
This commit is contained in:
parent
4b6f79f366
commit
d03c5e41e0
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"app_domain": "localhost",
|
||||
"database_uri": "root@/empact",
|
||||
"database_uri": "root@/empact?parseTime=true",
|
||||
"github_auth_url": "https://github.com/login/oauth/authorize",
|
||||
"github_access_token_url": "https://github.com/login/oauth/access_token",
|
||||
"github_client_id": "XXXXXXXXXXXXXXXXXXXX",
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package db
|
||||
|
||||
type Contrib struct {
|
||||
Week int64 `json:"week"`
|
||||
Week uint64 `json:"week"`
|
||||
Author string `json:"author"`
|
||||
Owner string `json:"owner"`
|
||||
Repo string `json:"repo"`
|
||||
Commits int64 `json:"commits"`
|
||||
Additions int64 `json:"additions"`
|
||||
Deletions int64 `json:"deletions"`
|
||||
Commits uint64 `json:"commits"`
|
||||
Additions uint64 `json:"additions"`
|
||||
Deletions uint64 `json:"deletions"`
|
||||
}
|
||||
|
||||
const saveContribQuery = `
|
||||
|
|
|
@ -3,7 +3,7 @@ package db
|
|||
type Org struct {
|
||||
Login string `json:"login"`
|
||||
Descr string `json:"descr"`
|
||||
ID int64 `json:"id"`
|
||||
ID uint64 `json:"id"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
}
|
||||
|
||||
|
|
26
db/repo.go
26
db/repo.go
|
@ -1,12 +1,32 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Repo struct {
|
||||
Owner string `json:"owner"`
|
||||
Name string `json:"name"`
|
||||
ID uint64 `json:"id"`
|
||||
Owner string `json:"owner"`
|
||||
Name string `json:"name"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
IsPrivate bool `json:"is_private"`
|
||||
IsForm bool `json:"is_fork"`
|
||||
}
|
||||
|
||||
const saveRepoQuery = `replace into repos (owner, name, updated_at) values (?, ?, now())`
|
||||
const orgReposQuery = `select * from repos where owner = ?`
|
||||
const saveRepoQuery = `
|
||||
insert into repos (owner, name, updated_at)
|
||||
values (?, ?, now())
|
||||
on duplicate key update
|
||||
updated_at=now()`
|
||||
|
||||
func (r *Repo) Save() {
|
||||
conn.MustExec(saveRepoQuery, r.Owner, r.Name)
|
||||
}
|
||||
|
||||
func OrgRepos(login string) (repos []*Repo) {
|
||||
if err := conn.Select(&repos, orgReposQuery, login); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package db
|
||||
|
||||
type Team struct {
|
||||
ID int64 `json:"id"`
|
||||
ID uint64 `json:"id"`
|
||||
Owner string `json:"owner"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ import (
|
|||
)
|
||||
|
||||
type Token struct {
|
||||
ID int64 `json:"id"`
|
||||
ID uint64 `json:"id"`
|
||||
User string `json:"user"`
|
||||
Token string `json:"token"`
|
||||
Quota int64 `json:"quota"`
|
||||
Remaining int64 `json:"remaining"`
|
||||
Quota uint64 `json:"quota"`
|
||||
Remaining uint64 `json:"remaining"`
|
||||
ResetAt time.Time `json:"reset_at"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ package db
|
|||
type User struct {
|
||||
Login string `json:"login"`
|
||||
Name string `json:"name"`
|
||||
ID int64 `json:"id"`
|
||||
ID uint64 `json:"id"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"github.com/localhots/empact/db"
|
||||
)
|
||||
|
||||
func orgsListHandler(w http.ResponseWriter, r *http.Request) {
|
||||
func apiOrgsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
login := currentUser(r)
|
||||
orgs := db.UserOrgs(login)
|
||||
b, _ := json.Marshal(orgs)
|
||||
|
@ -16,10 +16,18 @@ func orgsListHandler(w http.ResponseWriter, r *http.Request) {
|
|||
w.Write(b)
|
||||
}
|
||||
|
||||
func orgTeamsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
func apiTeamsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
teams := db.OrgTeams(r.FormValue("org"))
|
||||
b, _ := json.Marshal(teams)
|
||||
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf8")
|
||||
w.Write(b)
|
||||
}
|
||||
|
||||
func apiReposHandler(w http.ResponseWriter, r *http.Request) {
|
||||
repos := db.OrgRepos(r.FormValue("org"))
|
||||
b, _ := json.Marshal(repos)
|
||||
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf8")
|
||||
w.Write(b)
|
||||
}
|
||||
|
|
|
@ -20,8 +20,9 @@ func init() {
|
|||
|
||||
http.HandleFunc("/", sessionHandler)
|
||||
http.HandleFunc("/api/", authHandler)
|
||||
http.HandleFunc("/api/orgs", orgsListHandler)
|
||||
http.HandleFunc("/api/teams", orgTeamsHandler)
|
||||
http.HandleFunc("/api/orgs", apiOrgsHandler)
|
||||
http.HandleFunc("/api/teams", apiTeamsHandler)
|
||||
http.HandleFunc("/api/repos", apiReposHandler)
|
||||
http.HandleFunc("/auth/hello", authHelloHandler)
|
||||
http.HandleFunc("/auth/signin", authSigninHandler)
|
||||
http.HandleFunc("/auth/callback", authCallbackHandler)
|
||||
|
|
|
@ -38,11 +38,9 @@ func sessionID(r *http.Request) string {
|
|||
return cook.Value
|
||||
}
|
||||
|
||||
func currentUser(r *http.Request) string {
|
||||
conn := redisC.Get()
|
||||
login, _ := redis.String(conn.Do("HGET", "sessions", sessionID(r)))
|
||||
|
||||
return login
|
||||
func currentUser(r *http.Request) (login string) {
|
||||
login, _ = redis.String(redisC.Get().Do("HGET", "sessions", sessionID(r)))
|
||||
return
|
||||
}
|
||||
|
||||
func authorize(r *http.Request, login string) {
|
||||
|
|
|
@ -19,8 +19,8 @@ func saveResponseMeta(token string, res *github.Response) {
|
|||
}
|
||||
tok := &db.Token{
|
||||
Token: token,
|
||||
Quota: int64(res.Limit),
|
||||
Remaining: int64(res.Remaining),
|
||||
Quota: uint64(res.Limit),
|
||||
Remaining: uint64(res.Remaining),
|
||||
ResetAt: res.Reset.Time,
|
||||
}
|
||||
tok.Save()
|
||||
|
|
|
@ -49,13 +49,13 @@ func SyncContrib(token, owner, repo string) {
|
|||
}
|
||||
|
||||
contrib := &db.Contrib{
|
||||
Week: week.Week.Time.Unix(),
|
||||
Week: uint64(week.Week.Time.Unix()),
|
||||
Author: *c.Author.Login,
|
||||
Owner: owner,
|
||||
Repo: repo,
|
||||
Commits: int64(*week.Commits),
|
||||
Additions: int64(*week.Additions),
|
||||
Deletions: int64(*week.Deletions),
|
||||
Commits: uint64(*week.Commits),
|
||||
Additions: uint64(*week.Additions),
|
||||
Deletions: uint64(*week.Deletions),
|
||||
}
|
||||
contrib.Save()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue