]>
Commit | Line | Data |
---|---|---|
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 | } |