X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=api%2Fadmin.go;fp=api%2Fadmin.go;h=0ac6050777d839d46035f093d671e224a1bd5d9a;hb=2e4885d98ec49203180deb7e4e9148762e4720e7;hp=0000000000000000000000000000000000000000;hpb=6bf174a95ba0f71abf25397316fc101405381cdf;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FFront.git 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 @@ +package api + +import ( + "fmt" + + "immae.eu/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front/db" +) + +type GetAllPortfoliosQuery struct { + In struct { + Market string + } + Out map[string]Portfolio +} + +func (q GetAllPortfoliosQuery) ValidateParams() *Error { + if q.In.Market != "poloniex" { + return &Error{BadRequest, "invalid market name", fmt.Errorf("'%v' is not a valid market name", q.In.Market)} + } + + return nil +} + +func (q GetAllPortfoliosQuery) Run() (interface{}, *Error) { + u, err := db.GetActiveUsers() + if err != nil { + return nil, NewInternalError(err) + } + + q.Out = make(map[string]Portfolio) + + for _, marketConfig := range u { + report, err := GetWeekPortfolio(marketConfig) + if ErrorIs(err, NotFound) { + continue + } + + if err != nil { + return nil, NewInternalError(err) + } + + q.Out[marketConfig.User.Email] = report.Round() + } + + return q.Out, nil +}