sliding-sync/sync2/storage.go

46 lines
1014 B
Go
Raw Normal View History

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
}
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())
}
}