2023-04-27 19:14:35 +01:00
|
|
|
package sync2
|
|
|
|
|
|
|
|
import (
|
2023-06-14 10:24:25 +01:00
|
|
|
"os"
|
|
|
|
|
2023-04-27 19:14:35 +01:00
|
|
|
"github.com/getsentry/sentry-go"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
"github.com/rs/zerolog"
|
|
|
|
)
|
|
|
|
|
|
|
|
var logger = zerolog.New(os.Stdout).With().Timestamp().Logger().Output(zerolog.ConsoleWriter{
|
|
|
|
Out: os.Stderr,
|
|
|
|
TimeFormat: "15:04:05",
|
|
|
|
})
|
|
|
|
|
|
|
|
type Storage struct {
|
|
|
|
DevicesTable *DevicesTable
|
2023-04-28 01:03:29 +01:00
|
|
|
TokensTable *TokensTable
|
2023-04-27 19:14:35 +01:00
|
|
|
DB *sqlx.DB
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewStore(postgresURI, secret string) *Storage {
|
|
|
|
db, err := sqlx.Open("postgres", postgresURI)
|
|
|
|
if err != nil {
|
|
|
|
sentry.CaptureException(err)
|
|
|
|
// TODO: if we panic(), will sentry have a chance to flush the event?
|
2023-05-02 12:09:20 +01:00
|
|
|
logger.Panic().Err(err).Str("uri", postgresURI).Msg("failed to open SQL DB")
|
2023-04-27 19:14:35 +01:00
|
|
|
}
|
2023-07-12 17:36:59 +01:00
|
|
|
return NewStoreWithDB(db, secret)
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewStoreWithDB(db *sqlx.DB, secret string) *Storage {
|
2023-04-27 19:14:35 +01:00
|
|
|
return &Storage{
|
2023-04-28 16:10:43 +01:00
|
|
|
DevicesTable: NewDevicesTable(db),
|
2023-04-28 01:03:29 +01:00
|
|
|
TokensTable: NewTokensTable(db, secret),
|
2023-04-27 19:14:35 +01:00
|
|
|
DB: db,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Storage) Teardown() {
|
|
|
|
err := s.DB.Close()
|
|
|
|
if err != nil {
|
|
|
|
panic("V2Storage.Teardown: " + err.Error())
|
|
|
|
}
|
|
|
|
}
|