aboutsummaryrefslogtreecommitdiff
path: root/api/admin.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/admin.go')
-rw-r--r--api/admin.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/api/admin.go b/api/admin.go
new file mode 100644
index 0000000..0ac6050
--- /dev/null
+++ b/api/admin.go
@@ -0,0 +1,46 @@
1package api
2
3import (
4 "fmt"
5
6 "immae.eu/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front/db"
7)
8
9type GetAllPortfoliosQuery struct {
10 In struct {
11 Market string
12 }
13 Out map[string]Portfolio
14}
15
16func (q GetAllPortfoliosQuery) ValidateParams() *Error {
17 if q.In.Market != "poloniex" {
18 return &Error{BadRequest, "invalid market name", fmt.Errorf("'%v' is not a valid market name", q.In.Market)}
19 }
20
21 return nil
22}
23
24func (q GetAllPortfoliosQuery) Run() (interface{}, *Error) {
25 u, err := db.GetActiveUsers()
26 if err != nil {
27 return nil, NewInternalError(err)
28 }
29
30 q.Out = make(map[string]Portfolio)
31
32 for _, marketConfig := range u {
33 report, err := GetWeekPortfolio(marketConfig)
34 if ErrorIs(err, NotFound) {
35 continue
36 }
37
38 if err != nil {
39 return nil, NewInternalError(err)
40 }
41
42 q.Out[marketConfig.User.Email] = report.Round()
43 }
44
45 return q.Out, nil
46}