]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blob - api/admin.go
Admin minimal dashboard.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / admin.go
1 package api
2
3 import (
4 "fmt"
5
6 "immae.eu/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front/db"
7 )
8
9 type GetAllPortfoliosQuery struct {
10 In struct {
11 Market string
12 }
13 Out map[string]Portfolio
14 }
15
16 func (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
24 func (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 }