Skip to content

Commit 145aa17

Browse files
committed
chore: use new database definitions and tooling
1 parent cc6c418 commit 145aa17

39 files changed

+415
-442
lines changed

play/bb.edn

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@
145145
(src-file "collator/oapi/oapi.yaml")
146146

147147
-sqlc-files
148-
(concat [(src-file "db/sqlc.yaml")] (fs/glob src-dir "**.sql"))
148+
(fs/glob src-dir "**/sqlc.yaml")
149+
150+
-sql-files
151+
(fs/glob src-dir "**.sql")
149152

150153
-go-files
151154
(->> (p/process ["go" "list" "-m" "-f={{.Dir}}"]
@@ -252,11 +255,11 @@
252255

253256
build:sqlc
254257
{:doc "Run sqlc"
255-
:depends [-sqlc-files]
258+
:depends [-sqlc-files -sql-files]
256259
:task (when (and (not windows?)
257-
(seq (fs/modified-since exe -sqlc-files)))
260+
(seq (fs/modified-since exe (concat -sqlc-files -sql-files))))
258261
(run '-install:sqlc)
259-
(run-process '[sqlc generate] {:dir (-> src-dir (fs/path "db") str)}))}
262+
(run-process '[go generate -run="sqlc generate" -x ./...] {:dir src-dir}))}
260263

261264
build:protoc
262265
{:doc "Run protoc"

rolling-shutter/chainobserver/observer.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import (
1313
"github.com/rs/zerolog/log"
1414
"golang.org/x/sync/errgroup"
1515

16+
cltrdb "github.com/shutter-network/rolling-shutter/rolling-shutter/chainobserver/db/collator"
17+
kprdb "github.com/shutter-network/rolling-shutter/rolling-shutter/chainobserver/db/keyper"
18+
syncdb "github.com/shutter-network/rolling-shutter/rolling-shutter/chainobserver/db/sync"
1619
"github.com/shutter-network/rolling-shutter/rolling-shutter/contract"
1720
"github.com/shutter-network/rolling-shutter/rolling-shutter/contract/deployment"
18-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/chainobsdb"
1921
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/eventsyncer"
2022
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/retry"
2123
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
@@ -50,7 +52,7 @@ func New(contracts *deployment.Contracts, dbpool *pgxpool.Pool) *ChainObserver {
5052
}
5153

5254
func (chainobs *ChainObserver) Observe(ctx context.Context, eventTypes []*eventsyncer.EventType) error {
53-
db := chainobsdb.New(chainobs.dbpool)
55+
db := syncdb.New(chainobs.dbpool)
5456
eventSyncProgress, err := db.GetEventSyncProgress(ctx)
5557
if err != nil {
5658
return errors.Wrap(err, "failed to get last synced event from db")
@@ -146,10 +148,12 @@ func (chainobs *ChainObserver) handleEventSyncUpdate(
146148
return err
147149
}
148150
return chainobs.dbpool.BeginFunc(ctx, func(tx pgx.Tx) error {
149-
db := chainobsdb.New(tx)
151+
kdb := kprdb.New(tx)
152+
cltdb := cltrdb.New(tx)
153+
sncdb := syncdb.New(tx)
150154

151155
if eventSyncUpdate.Event != nil {
152-
if err := chainobs.handleEvent(ctx, db, eventSyncUpdate.Event); err != nil {
156+
if err := chainobs.handleEvent(ctx, kdb, cltdb, eventSyncUpdate.Event); err != nil {
153157
return err
154158
}
155159
}
@@ -163,7 +167,7 @@ func (chainobs *ChainObserver) handleEventSyncUpdate(
163167
nextBlockNumber = eventSyncUpdate.BlockNumber
164168
nextLogIndex = eventSyncUpdate.LogIndex + 1
165169
}
166-
if err := db.UpdateEventSyncProgress(ctx, chainobsdb.UpdateEventSyncProgressParams{
170+
if err := sncdb.UpdateEventSyncProgress(ctx, syncdb.UpdateEventSyncProgressParams{
167171
NextBlockNumber: int32(nextBlockNumber),
168172
NextLogIndex: int32(nextLogIndex),
169173
}); err != nil {
@@ -174,14 +178,14 @@ func (chainobs *ChainObserver) handleEventSyncUpdate(
174178
}
175179

176180
func (chainobs *ChainObserver) handleEvent(
177-
ctx context.Context, db *chainobsdb.Queries, event interface{},
181+
ctx context.Context, kdb *kprdb.Queries, cltdb *cltrdb.Queries, event interface{},
178182
) error {
179183
var err error
180184
switch event := event.(type) {
181185
case newKeyperConfig:
182-
err = chainobs.handleKeypersConfigsListNewConfigEvent(ctx, db, event)
186+
err = chainobs.handleKeypersConfigsListNewConfigEvent(ctx, kdb, event)
183187
case newCollatorConfig:
184-
err = chainobs.handleCollatorConfigsListNewConfigEvent(ctx, db, event)
188+
err = chainobs.handleCollatorConfigsListNewConfigEvent(ctx, cltdb, event)
185189
default:
186190
log.Info().Str("event-type", reflect.TypeOf(event).String()).Interface("event", event).
187191
Msg("ignoring unknown event")
@@ -190,7 +194,7 @@ func (chainobs *ChainObserver) handleEvent(
190194
}
191195

192196
func (chainobs *ChainObserver) handleKeypersConfigsListNewConfigEvent(
193-
ctx context.Context, db *chainobsdb.Queries, event newKeyperConfig,
197+
ctx context.Context, db *kprdb.Queries, event newKeyperConfig,
194198
) error {
195199
log.Info().
196200
Uint64("block-number", event.Raw.BlockNumber).
@@ -203,7 +207,7 @@ func (chainobs *ChainObserver) handleKeypersConfigsListNewConfigEvent(
203207
"activation block number %d from config contract would overflow int64",
204208
event.ActivationBlockNumber)
205209
}
206-
err := db.InsertKeyperSet(ctx, chainobsdb.InsertKeyperSetParams{
210+
err := db.InsertKeyperSet(ctx, kprdb.InsertKeyperSetParams{
207211
KeyperConfigIndex: int64(event.KeyperConfigIndex),
208212
ActivationBlockNumber: int64(event.ActivationBlockNumber),
209213
Keypers: shdb.EncodeAddresses(event.addrs),
@@ -216,7 +220,7 @@ func (chainobs *ChainObserver) handleKeypersConfigsListNewConfigEvent(
216220
}
217221

218222
func (chainobs *ChainObserver) handleCollatorConfigsListNewConfigEvent(
219-
ctx context.Context, db *chainobsdb.Queries, event newCollatorConfig,
223+
ctx context.Context, db *cltrdb.Queries, event newCollatorConfig,
220224
) error {
221225
log.Info().
222226
Uint64("block-number", event.Raw.BlockNumber).
@@ -232,7 +236,7 @@ func (chainobs *ChainObserver) handleCollatorConfigsListNewConfigEvent(
232236
if len(event.addrs) > 1 {
233237
return errors.Errorf("got multiple collators from collator addrs set contract: %s", event.addrs)
234238
} else if len(event.addrs) == 1 {
235-
err := db.InsertChainCollator(ctx, chainobsdb.InsertChainCollatorParams{
239+
err := db.InsertChainCollator(ctx, cltrdb.InsertChainCollatorParams{
236240
ActivationBlockNumber: int64(event.ActivationBlockNumber),
237241
Collator: shdb.EncodeAddress(event.addrs[0]),
238242
})

rolling-shutter/cmd/collator/collator.go

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@ import (
55

66
"github.com/jackc/pgx/v4/pgxpool"
77
"github.com/pkg/errors"
8-
"github.com/rs/zerolog/log"
98
"github.com/spf13/cobra"
109

1110
"github.com/shutter-network/rolling-shutter/rolling-shutter/collator"
1211
"github.com/shutter-network/rolling-shutter/rolling-shutter/collator/config"
13-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/cltrdb"
14-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/metadb"
12+
"github.com/shutter-network/rolling-shutter/rolling-shutter/collator/database"
1513
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command"
14+
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
1615
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
17-
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
1816
)
1917

2018
func Cmd() *cobra.Command {
@@ -33,28 +31,12 @@ func Cmd() *cobra.Command {
3331

3432
func initDB(cfg *config.Config) error {
3533
ctx := context.Background()
36-
3734
dbpool, err := pgxpool.Connect(ctx, cfg.DatabaseURL)
3835
if err != nil {
3936
return errors.Wrap(err, "failed to connect to database")
4037
}
4138
defer dbpool.Close()
42-
43-
err = cltrdb.ValidateDB(ctx, dbpool)
44-
if err == nil {
45-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database already exists")
46-
return nil
47-
} else if errors.Is(err, metadb.ErrSchemaMismatch) {
48-
return err
49-
}
50-
51-
// initialize the db
52-
err = cltrdb.InitDB(ctx, dbpool)
53-
if err != nil {
54-
return err
55-
}
56-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database initialized")
57-
return nil
39+
return db.InitDB(ctx, dbpool, database.Definition.Name(), database.Definition)
5840
}
5941

6042
func main(cfg *config.Config) error {

rolling-shutter/cmd/keyper/keyper.go

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ import (
99
"github.com/spf13/cobra"
1010

1111
"github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion"
12-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/kprdb"
13-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/metadb"
1412
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper"
13+
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database"
1514
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command"
15+
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
1616
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
17-
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
1817
)
1918

2019
func Cmd() *cobra.Command {
@@ -41,28 +40,14 @@ func main(config *keyper.Config) error {
4140
return service.RunWithSighandler(context.Background(), keyper.New(config))
4241
}
4342

44-
func initDB(config *keyper.Config) error {
43+
func initDB(cfg *keyper.Config) error {
4544
ctx := context.Background()
4645

47-
dbpool, err := pgxpool.Connect(ctx, config.DatabaseURL)
46+
dbpool, err := pgxpool.Connect(ctx, cfg.DatabaseURL)
4847
if err != nil {
4948
return errors.Wrap(err, "failed to connect to database")
5049
}
5150
defer dbpool.Close()
5251

53-
err = kprdb.ValidateKeyperDB(ctx, dbpool)
54-
if err == nil {
55-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database already exists")
56-
return nil
57-
} else if errors.Is(err, metadb.ErrSchemaMismatch) {
58-
return err
59-
}
60-
61-
// initialize the db
62-
err = kprdb.InitDB(ctx, dbpool)
63-
if err != nil {
64-
return err
65-
}
66-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database initialized")
67-
return nil
52+
return db.InitDB(ctx, dbpool, database.Definition.Name(), database.Definition)
6853
}

rolling-shutter/cmd/snapshot/snapshot.go

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@ import (
55

66
"github.com/jackc/pgx/v4/pgxpool"
77
"github.com/pkg/errors"
8-
"github.com/rs/zerolog/log"
98
"github.com/spf13/cobra"
109

11-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/metadb"
12-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/snpdb"
1310
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command"
11+
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
1412
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
15-
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
1613
"github.com/shutter-network/rolling-shutter/rolling-shutter/snapshot"
14+
"github.com/shutter-network/rolling-shutter/rolling-shutter/snapshot/database"
1715
)
1816

1917
var (
@@ -36,31 +34,14 @@ func Cmd() *cobra.Command {
3634
return builder.Command()
3735
}
3836

39-
func initDB(config *snapshot.Config) error {
37+
func initDB(cfg *snapshot.Config) error {
4038
ctx := context.Background()
41-
42-
dbpool, err := pgxpool.Connect(ctx, config.DatabaseURL)
39+
dbpool, err := pgxpool.Connect(ctx, cfg.DatabaseURL)
4340
if err != nil {
4441
return errors.Wrap(err, "failed to connect to database")
4542
}
4643
defer dbpool.Close()
47-
48-
err = snpdb.ValidateSnapshotDB(ctx, dbpool)
49-
if err == nil {
50-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database already exists")
51-
return nil
52-
} else if errors.Is(err, metadb.ErrSchemaMismatch) {
53-
return err
54-
}
55-
56-
// initialize the db
57-
err = snpdb.InitDB(ctx, dbpool)
58-
if err != nil {
59-
return err
60-
}
61-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database initialized")
62-
63-
return nil
44+
return db.InitDB(ctx, dbpool, database.Definition.Name(), database.Definition)
6445
}
6546

6647
func main(config *snapshot.Config) error {

rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ import (
99
"github.com/spf13/cobra"
1010

1111
"github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion"
12-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/kprdb"
13-
"github.com/shutter-network/rolling-shutter/rolling-shutter/db/metadb"
1412
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper"
13+
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database"
1514
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command"
15+
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
1616
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
17-
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
1817
"github.com/shutter-network/rolling-shutter/rolling-shutter/snapshotkeyper"
1918
)
2019

@@ -52,20 +51,5 @@ func initDB(config *keyper.Config) error {
5251
return errors.Wrap(err, "failed to connect to database")
5352
}
5453
defer dbpool.Close()
55-
56-
err = kprdb.ValidateKeyperDB(ctx, dbpool)
57-
if err == nil {
58-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database already exists")
59-
return nil
60-
} else if errors.Is(err, metadb.ErrSchemaMismatch) {
61-
return err
62-
}
63-
64-
// initialize the db
65-
err = kprdb.InitDB(ctx, dbpool)
66-
if err != nil {
67-
return err
68-
}
69-
shdb.AddConnectionInfo(log.Info(), dbpool).Msg("database initialized")
70-
return nil
54+
return db.InitDB(ctx, dbpool, database.Definition.Name(), database.Definition)
7155
}

0 commit comments

Comments
 (0)