blob: 063c0844c8cd58a3a913fabd2aef9cd23aeb67a9 [file] [log] [blame]
iomodocf795602021-03-07 23:14:15 +04001package app
2
3import (
iomodo352127d2021-03-26 20:10:32 +04004 "github.com/giolekva/pcloud/core/kg/log"
iomodocf795602021-03-07 23:14:15 +04005 "github.com/giolekva/pcloud/core/kg/model"
6 "github.com/pkg/errors"
7)
8
9// GetUser returns user
10func (a *App) GetUser(userID string) (*model.User, error) {
11 user, err := a.store.User().Get(userID)
12 if err != nil {
13 return nil, errors.Wrap(err, "can't get user from store")
14 }
15 return user, nil
16}
iomodo352127d2021-03-26 20:10:32 +040017
iomodo5c377be2021-03-26 20:39:28 +040018// CreateUser creates a user. For now it is used only for creation of the very first user
iomodo352127d2021-03-26 20:10:32 +040019func (a *App) CreateUser(user *model.User) (*model.User, error) {
20 if !a.isFirstUserAccount() {
21 return nil, errors.New("not a first user")
22 }
23
24 user.HashPassword()
25 updatedUser, err := a.store.User().Save(user)
26 if err != nil {
27 return nil, errors.Wrap(err, "can't save user to the DB")
28 }
29 return updatedUser, nil
30}
31
iomodo5c377be2021-03-26 20:39:28 +040032//GetUsers returns list of users
33func (a *App) GetUsers(page, perPage int) ([]*model.User, error) {
34 users, err := a.store.User().GetAllWithOptions(page, perPage)
35 if err != nil {
36 return nil, errors.Wrap(err, "can't get users with options from store")
37 }
38 return users, nil
39}
40
iomodo352127d2021-03-26 20:10:32 +040041func (a *App) isFirstUserAccount() bool {
42 count, err := a.store.User().Count()
43 if err != nil {
44 a.logger.Error("error fetching first user account", log.Err(err))
45 }
46 return count > 0
47}