]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blob - db/market_config.go
Admin minimal dashboard.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / db / market_config.go
1 package db
2
3 import (
4 "github.com/go-pg/pg"
5 )
6
7 type MarketConfigStatus string
8
9 const MarketConfigEnabled = "enabled"
10 const MarketConfigDisabled = "disabled"
11 const MarketConfigInvalidCredentials = "invalid_credentials"
12
13 type MarketConfig struct {
14 Id int64
15 MarketName string
16 UserId int64
17 Status MarketConfigStatus
18 Config map[string]string
19
20 // Will be expanded by pg
21 User User
22 }
23
24 func InsertMarketConfig(config *MarketConfig) error {
25 return DB.Insert(config)
26 }
27
28 func GetUserMarketConfig(userId int64, market string) (*MarketConfig, error) {
29 var config MarketConfig
30
31 err := DB.Model(&config).Where("user_id = ?", userId).Where("market_name = ?", market).First()
32
33 if err != nil && err != pg.ErrNoRows {
34 return nil, err
35 }
36
37 if err == pg.ErrNoRows {
38 return nil, nil
39 } else {
40 return &config, nil
41 }
42 }
43
44 func SetUserMarketConfig(userId int64, market string, newConfig map[string]string) (*MarketConfig, error) {
45 config := MarketConfig{
46 UserId: userId,
47 MarketName: market,
48 Config: newConfig,
49 }
50
51 _, err := DB.Model(&config).
52 OnConflict("(user_id, market_name) DO UPDATE").
53 Set("config = ?", newConfig).
54 Insert()
55
56 return &config, err
57 }
58
59 func SetMarketConfigStatus(marketConfig MarketConfig, status MarketConfigStatus) (*MarketConfig, error) {
60 marketConfig.Status = status
61 _, err := DB.Model(&marketConfig).
62 OnConflict("(user_id, market_name) DO UPDATE").
63 Set("status = ?", status).
64 Insert()
65
66 return &marketConfig, err
67 }
68
69 func GetActiveUsers() ([]MarketConfig, error) {
70 var configs []MarketConfig
71
72 err := DB.Model(&configs).Column("User").Where("market_config.status=?", "enabled").Select()
73 if err != nil {
74 return nil, err
75 }
76
77 return configs, nil
78 }