85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
package repository
|
|
|
|
import (
|
|
"esaccount"
|
|
"fmt"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type AccountSchema struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewAccountSchema(db *gorm.DB) *AccountSchema {
|
|
return &AccountSchema{db: db}
|
|
}
|
|
|
|
func (r AccountSchema) CreateAccount(id int64) (*esaccount.Account, error) {
|
|
account := &esaccount.Account{
|
|
Id: id,
|
|
Description: "",
|
|
DateOfBirth: "",
|
|
Follows: []int64{},
|
|
Followers: []int64{},
|
|
Confidentials: map[string]esaccount.ConfidentialType{
|
|
"username": "ALL",
|
|
"first_name": "ALL",
|
|
"last_name": "ALL",
|
|
"email": "NOBODY",
|
|
"description": "ALL",
|
|
"date_of_birth": "FRIENDS",
|
|
"follows": "ALL",
|
|
"followers": "ALL",
|
|
},
|
|
}
|
|
err := r.db.Save(account).Error
|
|
return account, err
|
|
}
|
|
|
|
func (r AccountSchema) SaveAccount(user *esaccount.Account) (int64, error) {
|
|
err := r.db.Save(user).Error
|
|
return user.Id, err
|
|
}
|
|
|
|
func (r AccountSchema) GetAccount(id int64) (*esaccount.Account, error) {
|
|
user := esaccount.Account{}
|
|
err := r.db.Find(&user, "id = ?", id).Error
|
|
if user.Id == -1 {
|
|
err = fmt.Errorf("unknown account %d", id)
|
|
}
|
|
return &user, err
|
|
}
|
|
|
|
func (r AccountSchema) FindAccount(query, param string) (esaccount.Account, error) {
|
|
user := esaccount.Account{}
|
|
err := r.db.Find(&user, query, param).Error
|
|
return user, err
|
|
}
|
|
|
|
func (r AccountSchema) GetAccounts(start, limit int) []int64 {
|
|
result := []esaccount.Account{}
|
|
r.db.Select("id").Limit(limit).Offset(start).Find(&result)
|
|
var ans = make([]int64, len(result))
|
|
for i, res := range result {
|
|
ans[i] = res.Id
|
|
}
|
|
return ans
|
|
}
|
|
|
|
func (r AccountSchema) GetAccountsCount() int64 {
|
|
var count int64 = 0
|
|
r.db.Model(&esaccount.Account{}).Count(&count)
|
|
return count
|
|
}
|
|
|
|
func (r AccountSchema) DeleteAccount(id int64) error {
|
|
user := esaccount.Account{}
|
|
err := r.db.Find(&user, "id = ?", id).Error
|
|
if user.Id == -1 {
|
|
err = fmt.Errorf("unknown user %d", id)
|
|
}
|
|
r.db.Delete(user)
|
|
return err
|
|
}
|