Skip to content

Commit f02a349

Browse files
authored
support query device data from old db (#64)
1 parent 5857895 commit f02a349

4 files changed

Lines changed: 32 additions & 7 deletions

File tree

cmd/server/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type Config struct {
1616
ServiceEndpoint string `env:"HTTP_SERVICE_ENDPOINT"`
1717
PrvKey string `env:"PRIVATE_KEY,optional"`
1818
DatabaseDSN string `env:"DATABASE_DSN"`
19+
OldDatabaseDSN string `env:"OLD_DATABASE_DSN"`
1920
ChainEndpoint string `env:"CHAIN_ENDPOINT,optional"`
2021
BeginningBlockNumber uint64 `env:"BEGINNING_BLOCK_NUMBER,optional"`
2122
IoIDProjectID uint64 `env:"IOID_PROJECT_ID,optional"`

cmd/server/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func main() {
3131
log.Fatal(errors.Wrap(err, "failed to parse private key"))
3232
}
3333

34-
db, err := db.New(cfg.DatabaseDSN)
34+
db, err := db.New(cfg.DatabaseDSN, cfg.OldDatabaseDSN)
3535
if err != nil {
3636
log.Fatal(errors.Wrap(err, "failed to new db"))
3737
}

db/device_record.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,29 @@ func (d *DB) QueryDeviceRecord(latitude, longitude string) (*DeviceRecord, error
4343
if err := d.db.Raw(fmt.Sprintf(sql, longitude, latitude)).Scan(&ids).Error; err != nil {
4444
return nil, errors.Wrap(err, "failed to query device record geo data")
4545
}
46-
if len(ids) == 0 {
46+
if len(ids) != 0 {
47+
t := &DeviceRecord{}
48+
if err := d.db.Where("id IN ?", ids).Order("timestamp DESC").First(&t).Error; err != nil {
49+
if err == gorm.ErrRecordNotFound {
50+
return nil, nil
51+
}
52+
return nil, errors.Wrap(err, "failed to query device record")
53+
}
54+
return t, nil
55+
}
56+
oldIDs := []string{}
57+
if err := d.oldDB.Raw(fmt.Sprintf(sql, longitude, latitude)).Scan(&ids).Error; err != nil {
58+
return nil, errors.Wrap(err, "failed to query device record geo data from old db")
59+
}
60+
if len(oldIDs) == 0 {
4761
return nil, nil
4862
}
4963
t := &DeviceRecord{}
50-
if err := d.db.Where("id IN ?", ids).Order("timestamp DESC").First(&t).Error; err != nil {
64+
if err := d.oldDB.Where("id IN ?", oldIDs).Order("timestamp DESC").First(&t).Error; err != nil {
5165
if err == gorm.ErrRecordNotFound {
5266
return nil, nil
5367
}
54-
return nil, errors.Wrap(err, "failed to query device record")
68+
return nil, errors.Wrap(err, "failed to query device record from old db")
5569
}
5670
return t, nil
5771
}

db/postgres.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import (
88
)
99

1010
type DB struct {
11-
db *gorm.DB
11+
db *gorm.DB
12+
oldDB *gorm.DB
1213
}
1314

14-
func New(dsn string) (*DB, error) {
15+
func New(dsn, oldDSN string) (*DB, error) {
1516
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
1617
Logger: logger.Default.LogMode(logger.Silent),
1718
})
@@ -32,5 +33,14 @@ func New(dsn string) (*DB, error) {
3233
); err != nil {
3334
return nil, errors.Wrap(err, "failed to migrate model")
3435
}
35-
return &DB{db}, nil
36+
oldDB, err := gorm.Open(postgres.Open(oldDSN), &gorm.Config{
37+
Logger: logger.Default.LogMode(logger.Silent),
38+
})
39+
if err != nil {
40+
return nil, errors.Wrap(err, "failed to connect old postgres")
41+
}
42+
return &DB{
43+
db: db,
44+
oldDB: oldDB,
45+
}, nil
3646
}

0 commit comments

Comments
 (0)