]>
Commit | Line | Data |
---|---|---|
7a9e5112 | 1 | package db |
2 | ||
299b6b6d | 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" | |
7a9e5112 | 12 | |
13 | type MarketConfig struct { | |
14 | Id int64 | |
299b6b6d | 15 | MarketName string |
16 | UserId int64 | |
17 | Status MarketConfigStatus | |
7a9e5112 | 18 | Config map[string]string |
2e4885d9 | 19 | |
20 | // Will be expanded by pg | |
21 | User User | |
7a9e5112 | 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 | } | |
299b6b6d | 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 | } | |
2e4885d9 | 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 | } |