Fix SQL query for MySQL/Postgres on user profile (#424)
هذا الالتزام موجود في:
@@ -168,13 +168,6 @@ func GetAllGistsFromSearch(currentUserId uint, query string, offset int, sort st
|
|||||||
}
|
}
|
||||||
|
|
||||||
func gistsFromUserStatement(fromUserId uint, currentUserId uint) *gorm.DB {
|
func gistsFromUserStatement(fromUserId uint, currentUserId uint) *gorm.DB {
|
||||||
return db.
|
|
||||||
Where("((gists.private = 0) or (gists.private > 0 and gists.user_id = ?))", currentUserId).
|
|
||||||
Where("users.id = ?", fromUserId).
|
|
||||||
Joins("join users on gists.user_id = users.id")
|
|
||||||
}
|
|
||||||
|
|
||||||
func gistsFromUserStatementWithPreloads(fromUserId uint, currentUserId uint) *gorm.DB {
|
|
||||||
return db.Preload("User").Preload("Forked.User").Preload("Topics").
|
return db.Preload("User").Preload("Forked.User").Preload("Topics").
|
||||||
Where("((gists.private = 0) or (gists.private > 0 and gists.user_id = ?))", currentUserId).
|
Where("((gists.private = 0) or (gists.private > 0 and gists.user_id = ?))", currentUserId).
|
||||||
Where("users.id = ?", fromUserId).
|
Where("users.id = ?", fromUserId).
|
||||||
@@ -185,7 +178,7 @@ func GetAllGistsFromUser(fromUserId uint, currentUserId uint, title string, lang
|
|||||||
var gists []*Gist
|
var gists []*Gist
|
||||||
var count int64
|
var count int64
|
||||||
|
|
||||||
baseQuery := gistsFromUserStatementWithPreloads(fromUserId, currentUserId).Model(&Gist{})
|
baseQuery := gistsFromUserStatement(fromUserId, currentUserId).Model(&Gist{})
|
||||||
|
|
||||||
if title != "" {
|
if title != "" {
|
||||||
baseQuery = baseQuery.Where("gists.title like ?", "%"+title+"%")
|
baseQuery = baseQuery.Where("gists.title like ?", "%"+title+"%")
|
||||||
@@ -220,7 +213,7 @@ func GetAllGistsFromUser(fromUserId uint, currentUserId uint, title string, lang
|
|||||||
|
|
||||||
func CountAllGistsFromUser(fromUserId uint, currentUserId uint) (int64, error) {
|
func CountAllGistsFromUser(fromUserId uint, currentUserId uint) (int64, error) {
|
||||||
var count int64
|
var count int64
|
||||||
err := gistsFromUserStatementWithPreloads(fromUserId, currentUserId).Model(&Gist{}).Count(&count).Error
|
err := gistsFromUserStatement(fromUserId, currentUserId).Model(&Gist{}).Count(&count).Error
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,13 +14,15 @@ func GetGistLanguagesForUser(fromUserId, currentUserId uint) ([]struct {
|
|||||||
Count int64
|
Count int64
|
||||||
}
|
}
|
||||||
|
|
||||||
err := gistsFromUserStatement(fromUserId, currentUserId).Model(&GistLanguage{}).
|
err := db.Model(&GistLanguage{}).
|
||||||
Select("language, count(*) as count").
|
Select("language, count(*) as count").
|
||||||
Joins("JOIN gists ON gists.id = gist_languages.gist_id").
|
Joins("JOIN gists ON gists.id = gist_languages.gist_id").
|
||||||
Where("gists.user_id = ?", fromUserId).
|
Joins("JOIN users ON gists.user_id = users.id").
|
||||||
|
Where("((gists.private = 0) or (gists.private > 0 and gists.user_id = ?))", currentUserId).
|
||||||
|
Where("users.id = ?", fromUserId).
|
||||||
Group("language").
|
Group("language").
|
||||||
Order("count DESC").
|
Order("count DESC").
|
||||||
Limit(15). // Added limit of 15
|
Limit(15).
|
||||||
Find(&results).Error
|
Find(&results).Error
|
||||||
|
|
||||||
return results, err
|
return results, err
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم