Add methods to db user

This commit is contained in:
Melody Becker 2025-04-07 17:42:53 +02:00
parent d691b5193e
commit 59b2bc0deb
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
2 changed files with 140 additions and 36 deletions

View file

@ -1457,17 +1457,20 @@ type IUserDo interface {
schema.Tabler
GetByUsername(username string) (result *models.User, err error)
GetPagedTruePublic(pageNr uint) (result []models.User, err error)
GetPagedAllDeleted(pageNr uint) (result []models.User, err error)
GetPagedAllNonDeleted(pageNr uint) (result []models.User, err error)
}
// Get a user by a username
//
// SELECT * FROM @@table WHERE username = @username LIMIT 1
// SELECT * FROM @@table WHERE username = @username AND deleted_at IS NULL LIMIT 1
func (u userDo) GetByUsername(username string) (result *models.User, err error) {
var params []interface{}
var generateSQL strings.Builder
params = append(params, username)
generateSQL.WriteString("SELECT * FROM users WHERE username = ? LIMIT 1 ")
generateSQL.WriteString("SELECT * FROM users WHERE username = ? AND deleted_at IS NULL LIMIT 1 ")
var executeSQL *gorm.DB
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Take(&result) // ignore_security_alert
@ -1476,6 +1479,79 @@ func (u userDo) GetByUsername(username string) (result *models.User, err error)
return
}
// Get all true public accounts (verified & no restricted follow & indexable)
// in a paged manner, sorted by date saved
//
// SELECT * FROM @@table WHERE
//
// deleted_at IS NULL AND
// verified = true AND
// restricted_follow = false AND
// indexable = true
//
// ORDER BY created_at ASC
// LIMIT 50
// OFFSET @pageNr * 50
func (u userDo) GetPagedTruePublic(pageNr uint) (result []models.User, err error) {
var params []interface{}
var generateSQL strings.Builder
params = append(params, pageNr)
generateSQL.WriteString("SELECT * FROM users WHERE deleted_at IS NULL AND verified = true AND restricted_follow = false AND indexable = true ORDER BY created_at ASC LIMIT 50 OFFSET ? * 50 ")
var executeSQL *gorm.DB
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Find(&result) // ignore_security_alert
err = executeSQL.Error
return
}
// Get all deleted accounts in a paged manner, sorted by date saved
//
// SELECT * FROM @@table WHERE
//
// deleted_at IS NOT NULL AND
//
// ORDER BY created_at ASC
// LIMIT 50
// OFFSET @pageNr * 50
func (u userDo) GetPagedAllDeleted(pageNr uint) (result []models.User, err error) {
var params []interface{}
var generateSQL strings.Builder
params = append(params, pageNr)
generateSQL.WriteString("SELECT * FROM users WHERE deleted_at IS NOT NULL AND ORDER BY created_at ASC LIMIT 50 OFFSET ? * 50 ")
var executeSQL *gorm.DB
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Find(&result) // ignore_security_alert
err = executeSQL.Error
return
}
// Get all accounts that aren't deleted in a paged manner, sorted by date saved
//
// SELECT * FROM @@table WHERE
//
// deleted_at IS NULL
//
// ORDER BY created_at ASC
// LIMIT 50
// OFFSET @pageNr * 50
func (u userDo) GetPagedAllNonDeleted(pageNr uint) (result []models.User, err error) {
var params []interface{}
var generateSQL strings.Builder
params = append(params, pageNr)
generateSQL.WriteString("SELECT * FROM users WHERE deleted_at IS NULL ORDER BY created_at ASC LIMIT 50 OFFSET ? * 50 ")
var executeSQL *gorm.DB
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Find(&result) // ignore_security_alert
err = executeSQL.Error
return
}
func (u userDo) Debug() IUserDo {
return u.withDO(u.DO.Debug())
}