Less models
This commit is contained in:
parent
255b6879c7
commit
3e0ac1ea2d
25
db/common.go
25
db/common.go
@ -1,7 +1,6 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
@ -11,32 +10,10 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
conn *sqlx.DB
|
conn *sqlx.DB
|
||||||
stmts map[string]*sqlx.Stmt
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Connect(params string) (err error) {
|
func Connect(params string) (err error) {
|
||||||
conn, err = sqlx.Connect("mysql", params)
|
conn, err = sqlx.Connect("mysql", params)
|
||||||
|
conn.Mappper = reflectx.NewMapperFunc("json", strings.ToLower)
|
||||||
conn.Mapper = reflectx.NewMapperFunc("json", strings.ToLower)
|
|
||||||
stmts = map[string]*sqlx.Stmt{}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func stmt(query string) *sqlx.Stmt {
|
|
||||||
if stmt, ok := stmts[query]; ok {
|
|
||||||
return stmt
|
|
||||||
} else {
|
|
||||||
stmt := prepareStatement(query)
|
|
||||||
stmts[query] = stmt
|
|
||||||
return stmt
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func prepareStatement(query string) *sqlx.Stmt {
|
|
||||||
if stmt, err := conn.Preparex(query); err == nil {
|
|
||||||
return stmt
|
|
||||||
} else {
|
|
||||||
fmt.Println(query)
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,29 +1,21 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
type Contrib struct {
|
||||||
"github.com/fatih/structs"
|
Week int64 `json:"week"`
|
||||||
)
|
Author string `json:"author"`
|
||||||
|
Owner string `json:"owner"`
|
||||||
type (
|
Repo string `json:"repo"`
|
||||||
Contrib struct {
|
Commits int64 `json:"commits"`
|
||||||
Week int64
|
Additions int64 `json:"additions"`
|
||||||
Author string
|
Deletions int64 `json:"deletions"`
|
||||||
Owner string
|
|
||||||
Repo string
|
|
||||||
Commits int
|
|
||||||
Additions int
|
|
||||||
Deletions int
|
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const saveContribQuery = `
|
||||||
saveContribQuery = "" +
|
insert into contributions (week, author, owner, repo, commits, additions, deletions)
|
||||||
"replace into contributions (week, author, owner, repo, commits, additions, deletions) " +
|
values (?, ?, ?, ?, ?, ?, ?)
|
||||||
"values (?, ?, ?, ?, ?, ?, ?)"
|
on duplicate key update
|
||||||
)
|
commits=values(commits), additions=values(additions), deletions=values(deletions)`
|
||||||
|
|
||||||
func (c *Contrib) Save() {
|
func (c *Contrib) Save() {
|
||||||
if _, err := stmt(saveContribQuery).Exec(structs.Values(c)); err != nil {
|
conn.MustExec(saveContribQuery, c.Week, c.Author, c.Owner, c.Repo, c.Commits, c.Additions, c.Deletions)
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
package db
|
|
||||||
|
|
||||||
type (
|
|
||||||
Hook struct {
|
|
||||||
ID int
|
|
||||||
Owner string
|
|
||||||
}
|
|
||||||
)
|
|
@ -1,8 +0,0 @@
|
|||||||
package db
|
|
||||||
|
|
||||||
type (
|
|
||||||
Member struct {
|
|
||||||
TeamID int
|
|
||||||
Login string
|
|
||||||
}
|
|
||||||
)
|
|
10
db/org.go
10
db/org.go
@ -1,20 +1,16 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
type (
|
type Org struct {
|
||||||
Org struct {
|
|
||||||
Login string `json:"login"`
|
Login string `json:"login"`
|
||||||
Descr string `json:"descr"`
|
Descr string `json:"descr"`
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
AvatarURL string `json:"avatar_url"`
|
AvatarURL string `json:"avatar_url"`
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const userOrgsQuery = `select o.* from members m join orgs o on o.login = m.org where user = ?`
|
||||||
userOrgsQuery = "select o.* from members m join orgs o on o.login = m.org where user = ?"
|
|
||||||
)
|
|
||||||
|
|
||||||
func UserOrgs(login string) (orgs []*Org) {
|
func UserOrgs(login string) (orgs []*Org) {
|
||||||
if err := stmt(userOrgsQuery).Select(&orgs, login); err != nil {
|
if err := conn.Select(&orgs, userOrgsQuery, login); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
package db
|
|
||||||
|
|
||||||
type (
|
|
||||||
Owner struct {
|
|
||||||
Login string
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
)
|
|
20
db/repo.go
20
db/repo.go
@ -1,22 +1,12 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
type Repo struct {
|
||||||
"github.com/fatih/structs"
|
Owner string `json:"owner"`
|
||||||
)
|
Name string `json:"name"`
|
||||||
|
|
||||||
type (
|
|
||||||
Repo struct {
|
|
||||||
Owner string
|
|
||||||
Name string
|
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const saveRepoQuery = `replace into repos (owner, name, updated_at) values (?, ?, now())`
|
||||||
saveRepoQuery = "replace into repos (owner, name, updated_at) values (?, ?, now())"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (r *Repo) Save() {
|
func (r *Repo) Save() {
|
||||||
if _, err := stmt(saveRepoQuery).Exec(structs.Values(r)); err != nil {
|
conn.MustExec(saveRepoQuery, r.Owner, r.Name)
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
39
db/task.go
39
db/task.go
@ -1,39 +0,0 @@
|
|||||||
package db
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
Task struct {
|
|
||||||
Token string
|
|
||||||
Owner string
|
|
||||||
Job string
|
|
||||||
Worker string
|
|
||||||
Duration int64
|
|
||||||
Error string
|
|
||||||
CreatedAt time.Time
|
|
||||||
StartedAt time.Time
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
saveTaskQuery = "" +
|
|
||||||
"insert into tasks (token, owner, job, worker, duration, error, created_at, started_at) " +
|
|
||||||
"values (?, ?, ?, ?, ?, ?, ?, ?)"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t *Task) Save() {
|
|
||||||
if _, err := stmt(saveTaskQuery).Exec(
|
|
||||||
t.Token, t.Owner,
|
|
||||||
t.Job, t.Worker,
|
|
||||||
t.Duration, t.Error,
|
|
||||||
t.CreatedAt, t.StartedAt,
|
|
||||||
); err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Task) T() *Task {
|
|
||||||
return t
|
|
||||||
}
|
|
19
db/team.go
19
db/team.go
@ -1,9 +1,16 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
type (
|
type Team struct {
|
||||||
Team struct {
|
ID int64 `json:"id"`
|
||||||
ID int
|
Owner string `json:"owner"`
|
||||||
Owner string
|
Name string `json:"name"`
|
||||||
Name string
|
}
|
||||||
|
|
||||||
|
const orgTeamsQuery = `select * from teams where owner = ?`
|
||||||
|
|
||||||
|
func OrgTeams(login string) (teams []*Team) {
|
||||||
|
if err := conn.Select(&teams, orgTeamsQuery, login); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
34
db/token.go
34
db/token.go
@ -4,28 +4,22 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type Token struct {
|
||||||
Token struct {
|
ID int64 `json:"id"`
|
||||||
ID int
|
User string `json:"user"`
|
||||||
User string
|
Token string `json:"token"`
|
||||||
Token string
|
Quota int64 `json:"quota"`
|
||||||
Limit int
|
Remaining int64 `json:"remaining"`
|
||||||
Remaining int
|
ResetAt time.Time `json:"reset_at"`
|
||||||
ResetAt time.Time
|
CreatedAt time.Time `json:"created_at"`
|
||||||
CreatedAt time.Time
|
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const saveTokenQuery = `
|
||||||
saveTokenQuery = "" +
|
insert into tokens (user, token, quota, remaining, reset_at, created_at)
|
||||||
"insert into tokens (`user`, token, `limit`, remaining, reset_at, created_at) " +
|
values (?, ?, ?, ?, ?, now())
|
||||||
"values (?, ?, ?, ?, ?, now()) " +
|
on duplicate key update
|
||||||
"on duplicate key update " +
|
quota = values(quota), remaining = values(remaining), reset_at = values(reset_at)`
|
||||||
"`limit` = values(`limit`), remaining = values(remaining), reset_at = values(reset_at)"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t *Token) Save() {
|
func (t *Token) Save() {
|
||||||
if _, err := stmt(saveTokenQuery).Exec(t.User, t.Token, t.Limit, t.Remaining, t.ResetAt); err != nil {
|
conn.MustExec(saveTokenQuery, t.User, t.Token, t.Quota, t.Remaining, t.ResetAt)
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
20
db/user.go
20
db/user.go
@ -1,24 +1,18 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
type (
|
type User struct {
|
||||||
User struct {
|
|
||||||
Login string `json:"login"`
|
Login string `json:"login"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
AvatarURL string `json:"avatar_url"`
|
AvatarURL string `json:"avatar_url"`
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const saveUserQuery = `
|
||||||
saveUserQuery = "" +
|
insert into users (login, name, id, avatar_url)
|
||||||
"insert into users (login, name, id, avatar_url) " +
|
values (?, ?, ?, ?)
|
||||||
"values (?, ?, ?, ?) " +
|
on duplicate key update
|
||||||
"on duplicate key update " +
|
login=values(login), name=values(name), avatar_url=values(avatar_url)`
|
||||||
"login=values(login), name=values(name), avatar_url=values(avatar_url)"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (u *User) Save() {
|
func (u *User) Save() {
|
||||||
if _, err := stmt(saveUserQuery).Exec(u.Login, u.Name, u.ID, u.AvatarURL); err != nil {
|
conn.MustExec(saveUserQuery, u.Login, u.Name, u.ID, u.AvatarURL)
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user