Refactor db ops measure
This commit is contained in:
		
							parent
							
								
									0a21d10276
								
							
						
					
					
						commit
						68c1465c92
					
				@ -15,7 +15,7 @@ type Contrib struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Contrib) Save() {
 | 
			
		||||
	defer measure("SaveContrib", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveContrib")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into contribs (week, org_id, repo_id, user_id, commits, additions, deletions)
 | 
			
		||||
		values (:week, :org_id, :repo_id, :user_id, :commits, :additions, :deletions)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								db/db.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								db/db.go
									
									
									
									
									
								
							@ -11,7 +11,7 @@ import (
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	db         *sqlx.DB
 | 
			
		||||
	queryQueue = make(chan func(), 1000)
 | 
			
		||||
	queryQueue = make(chan func())
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Connect(params string) (err error) {
 | 
			
		||||
@ -50,21 +50,18 @@ func Queue(fun func()) {
 | 
			
		||||
 | 
			
		||||
func processQueue() {
 | 
			
		||||
	for {
 | 
			
		||||
		fun := <-queryQueue
 | 
			
		||||
		fun()
 | 
			
		||||
		(<-queryQueue)()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func measure(op string, start time.Time) {
 | 
			
		||||
func measure(start time.Time, op string) {
 | 
			
		||||
	duration := time.Since(start).Nanoseconds()
 | 
			
		||||
	outcome := "succeeded"
 | 
			
		||||
	err := recover()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		outcome = "failed"
 | 
			
		||||
		defer panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Printf("Operation %s %s; time: %d (%dms)\n", op, outcome, duration, duration/1000000)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func SaveOrgMembers(orgID int, members []int) {
 | 
			
		||||
	defer measure("SaveOrgMembers", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveOrgMembers")
 | 
			
		||||
	tx := db.MustBegin()
 | 
			
		||||
 | 
			
		||||
	var ids = []string{}
 | 
			
		||||
@ -37,7 +37,7 @@ func SaveOrgMembers(orgID int, members []int) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SaveTeamMembers(orgID, teamID int, members []int) {
 | 
			
		||||
	defer measure("SaveTeamMembers", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveTeamMembers")
 | 
			
		||||
	tx := db.MustBegin()
 | 
			
		||||
 | 
			
		||||
	var ids = []string{}
 | 
			
		||||
@ -67,7 +67,7 @@ func SaveTeamMembers(orgID, teamID int, members []int) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SaveTeamRepos(orgID, teamID int, repos []int) {
 | 
			
		||||
	defer measure("SaveTeamRepos", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveTeamRepos")
 | 
			
		||||
	tx := db.MustBegin()
 | 
			
		||||
 | 
			
		||||
	var ids = []string{}
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ type Org struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o *Org) Save() {
 | 
			
		||||
	defer measure("SaveOrg", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveOrg")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into orgs (id, login, company, avatar_url, updated_at)
 | 
			
		||||
		values (:id, :login, :company, :avatar_url, now())
 | 
			
		||||
@ -26,7 +26,7 @@ func (o *Org) Save() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func UserOrgs(login string) (orgs []*Org) {
 | 
			
		||||
	defer measure("UserOrgs", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "UserOrgs")
 | 
			
		||||
	mustSelect(&orgs, `
 | 
			
		||||
		select o.*
 | 
			
		||||
		from org_members m
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ type Repo struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *Repo) Save() {
 | 
			
		||||
	defer measure("SaveRepo", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveRepo")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into repos (org_id, name, description, is_private, is_fork, updated_at)
 | 
			
		||||
		values (:org_id, :name, :description, :is_private, :is_fork, now())
 | 
			
		||||
@ -30,7 +30,7 @@ func (r *Repo) Save() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OrgRepos(login string) (repos []*Repo) {
 | 
			
		||||
	defer measure("OrgRepos", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "OrgRepos")
 | 
			
		||||
	mustSelect(&repos, `
 | 
			
		||||
		select *
 | 
			
		||||
		from repos r
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								db/stat.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								db/stat.go
									
									
									
									
									
								
							@ -31,7 +31,7 @@ join repos r on
 | 
			
		||||
    c.repo_id = r.id`
 | 
			
		||||
 | 
			
		||||
func StatOrgTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
	defer measure("StatOrgTop", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatOrgTop")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            %s as item,
 | 
			
		||||
@ -50,7 +50,7 @@ func StatOrgTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatOrgActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
	defer measure("StatOrgActivity", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatOrgActivity")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            %s as item,
 | 
			
		||||
@ -70,7 +70,7 @@ func StatOrgActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatTeamTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
	defer measure("StatTeamTop", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatTeamTop")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            %s as item,
 | 
			
		||||
@ -90,7 +90,7 @@ func StatTeamTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatTeamActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
	defer measure("StatTeamActivity", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatTeamActivity")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            %s as item,
 | 
			
		||||
@ -111,7 +111,7 @@ func StatTeamActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatUserTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
	defer measure("StatUserTop", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatUserTop")
 | 
			
		||||
	mustSelectN(&res, `
 | 
			
		||||
        select
 | 
			
		||||
            r.name as item,
 | 
			
		||||
@ -136,7 +136,7 @@ func StatUserTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatUserActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
	defer measure("StatUserActivity", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatUserActivity")
 | 
			
		||||
	mustSelectN(&res, `
 | 
			
		||||
        select
 | 
			
		||||
            c.week as week,
 | 
			
		||||
@ -162,7 +162,7 @@ func StatUserActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatRepoTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
	defer measure("StatRepoTop", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatRepoTop")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            %s as item,
 | 
			
		||||
@ -182,7 +182,7 @@ func StatRepoTop(p map[string]interface{}) (res []StatItem) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func StatRepoActivity(p map[string]interface{}) (res []StatPoint) {
 | 
			
		||||
	defer measure("StatRepoActivity", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "StatRepoActivity")
 | 
			
		||||
	mustSelectN(&res, fmt.Sprintf(`
 | 
			
		||||
        select
 | 
			
		||||
            c.week as week,
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ type Team struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *Team) Save() {
 | 
			
		||||
	defer measure("SaveTeam", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveTeam")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into teams (id, org_id, slug, name, permission, updated_at)
 | 
			
		||||
		values (:id, :org_id, :slug, :name, :permission, now())
 | 
			
		||||
@ -27,7 +27,7 @@ func (t *Team) Save() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OrgTeams(login string) (teams []*Team) {
 | 
			
		||||
	defer measure("OrgTeams", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "OrgTeams")
 | 
			
		||||
	mustSelect(&teams, `
 | 
			
		||||
		select t.*
 | 
			
		||||
		from teams t
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ type Token struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t *Token) Save() {
 | 
			
		||||
	defer measure("SaveToken", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveToken")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into tokens (user, token, quota, remaining, reset_at, created_at)
 | 
			
		||||
		values (:user, :token, :quota, :remaining, :reset_at, now())
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ type User struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (u *User) Save() {
 | 
			
		||||
	defer measure("SaveUser", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "SaveUser")
 | 
			
		||||
	mustExecN(`
 | 
			
		||||
		insert into users (id, login, name, avatar_url, updated_at)
 | 
			
		||||
		values (:id, :login, :name, :avatar_url, now())
 | 
			
		||||
@ -26,7 +26,7 @@ func (u *User) Save() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OrgUsers(login string) (users []*User) {
 | 
			
		||||
	defer measure("OrgUsers", time.Now())
 | 
			
		||||
	defer measure(time.Now(), "OrgUsers")
 | 
			
		||||
	mustSelect(&users, `
 | 
			
		||||
		select u.*
 | 
			
		||||
		from org_members om
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user