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