26
data/user.go
26
data/user.go
@@ -73,10 +73,10 @@ func (self *User) SetAllowPublic(s bool) *User {
|
||||
return self
|
||||
}
|
||||
|
||||
func (self *User) GetByEmail(ctx *context.Context, email *string) (*User, error) {
|
||||
func (self *User) GetByEmail(ctx context.Context, email *string) (*User, error) {
|
||||
var user User
|
||||
|
||||
err := Database.WithContext(*ctx).
|
||||
err := Database.WithContext(ctx).
|
||||
Where("email = ?", email).
|
||||
First(&user).Error
|
||||
|
||||
@@ -90,10 +90,10 @@ func (self *User) GetByEmail(ctx *context.Context, email *string) (*User, error)
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (self *User) GetByUserId(ctx *context.Context, userId *uuid.UUID) (*User, error) {
|
||||
func (self *User) GetByUserId(ctx context.Context, userId *uuid.UUID) (*User, error) {
|
||||
var user User
|
||||
|
||||
err := Database.WithContext(*ctx).
|
||||
err := Database.WithContext(ctx).
|
||||
Where("user_id = ?", userId).
|
||||
First(&user).Error
|
||||
|
||||
@@ -107,12 +107,12 @@ func (self *User) GetByUserId(ctx *context.Context, userId *uuid.UUID) (*User, e
|
||||
return &user, err
|
||||
}
|
||||
|
||||
func (self *User) Create(ctx *context.Context) error {
|
||||
func (self *User) Create(ctx context.Context) error {
|
||||
self.UUID = uuid.New()
|
||||
self.UserId = uuid.New()
|
||||
|
||||
// DB transaction only
|
||||
if err := Database.WithContext(*ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if err := Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Create(self).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -122,7 +122,7 @@ func (self *User) Create(ctx *context.Context) error {
|
||||
}
|
||||
|
||||
// Search index (eventual consistency)
|
||||
if err := self.UpdateSearchIndex(ctx); err != nil {
|
||||
if err := self.UpdateSearchIndex(&ctx); err != nil {
|
||||
// TODO: async retry / log
|
||||
return err
|
||||
}
|
||||
@@ -130,8 +130,8 @@ func (self *User) Create(ctx *context.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *User) UpdateByUserID(ctx *context.Context, userId *uuid.UUID) error {
|
||||
return Database.WithContext(*ctx).Transaction(func(tx *gorm.DB) error {
|
||||
func (self *User) UpdateByUserID(ctx context.Context, userId *uuid.UUID) error {
|
||||
return Database.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Model(&User{}).Where("user_id = ?", userId).Updates(&self).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -139,20 +139,20 @@ func (self *User) UpdateByUserID(ctx *context.Context, userId *uuid.UUID) error
|
||||
})
|
||||
}
|
||||
|
||||
func (self *User) GetFullTable(ctx *context.Context) (*[]User, error) {
|
||||
func (self *User) GetFullTable(ctx context.Context) (*[]User, error) {
|
||||
var users []User
|
||||
err := Database.WithContext(*ctx).Find(&users).Error
|
||||
err := Database.WithContext(ctx).Find(&users).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &users, nil
|
||||
}
|
||||
|
||||
func (self *User) FastListUsers(ctx *context.Context, limit, offset *int64) (*[]UserSearchDoc, error) {
|
||||
func (self *User) FastListUsers(ctx context.Context, limit, offset *int64) (*[]UserSearchDoc, error) {
|
||||
index := MeiliSearch.Index("user")
|
||||
|
||||
// Fast read from MeiliSearch, no DB involved
|
||||
result, err := index.SearchWithContext(*ctx, "", &meilisearch.SearchRequest{
|
||||
result, err := index.SearchWithContext(ctx, "", &meilisearch.SearchRequest{
|
||||
Limit: *limit,
|
||||
Offset: *offset,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user