Skip to content

Commit c4631fe

Browse files
committed
Tidy up migrations
1 parent 93a1732 commit c4631fe

File tree

6 files changed

+26
-31
lines changed

6 files changed

+26
-31
lines changed

cmd/contract-event-processor/main.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ func main() {
2929
switch subCommand := os.Args[1]; subCommand {
3030
case "migrate":
3131
command := "up"
32-
services.MigrateDatabase(logger, &settings, command, "chain_indexer")
32+
if len(os.Args) > 2 {
33+
command = os.Args[2]
34+
if command == "down-to" || command == "up-to" {
35+
command = command + " " + os.Args[3]
36+
}
37+
}
38+
migrateDatabase(logger, &settings, command)
3339
return
3440
case "override":
3541
if len(os.Args) > 2 {
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
package services
1+
package main
22

33
import (
44
"database/sql"
5-
"fmt"
65

76
"github.com/DIMO-Network/contract-event-processor/internal/config"
8-
"github.com/pressly/goose/v3"
7+
"github.com/pressly/goose"
98
"github.com/rs/zerolog"
10-
11-
_ "github.com/lib/pq"
129
)
1310

14-
func MigrateDatabase(logger zerolog.Logger, s *config.Settings, command, schemaName string) {
11+
func migrateDatabase(logger zerolog.Logger, settings *config.Settings, command string) {
1512
var db *sql.DB
1613
// setup database
17-
db, err := sql.Open("postgres", s.DB.BuildConnectionString(true))
14+
db, err := sql.Open("postgres", settings.DB.BuildConnectionString(true))
1815
defer func() {
1916
if err := db.Close(); err != nil {
2017
logger.Fatal().Msgf("goose: failed to close DB: %v\n", err)
@@ -23,23 +20,20 @@ func MigrateDatabase(logger zerolog.Logger, s *config.Settings, command, schemaN
2320
if err != nil {
2421
logger.Fatal().Msgf("failed to open db connection: %v\n", err)
2522
}
26-
2723
if err = db.Ping(); err != nil {
2824
logger.Fatal().Msgf("failed to ping db: %v\n", err)
2925
}
30-
3126
// set default
3227
if command == "" {
3328
command = "up"
3429
}
35-
// must create schema so that can set migrations table to that schema
36-
_, err = db.Exec(fmt.Sprintf("CREATE SCHEMA IF NOT EXISTS %s;", schemaName))
30+
// todo manually run sql to create devices_api schema
31+
_, err = db.Exec("CREATE SCHEMA IF NOT EXISTS contract_event_processor;")
3732
if err != nil {
38-
logger.Fatal().Err(err).Msgf("could not create schema, %s", schemaName)
33+
logger.Fatal().Err(err).Msg("could not create schema")
3934
}
40-
goose.SetTableName(fmt.Sprintf("%s.migrations", schemaName))
35+
goose.SetTableName("contract_event_processor.migrations")
4136
if err := goose.Run(command, db, "migrations"); err != nil {
4237
logger.Fatal().Msgf("failed to apply go code migrations: %v\n", err)
4338
}
44-
// if we add any code migrations import _ "github.com/DIMO-Network/users-api/migrations" // migrations won't work without this
4539
}

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ require (
7676
github.com/go-ole/go-ole v1.2.1 // indirect
7777
github.com/go-stack/stack v1.8.0 // indirect
7878
github.com/gorilla/websocket v1.4.2 // indirect
79+
github.com/pressly/goose v2.7.0+incompatible
7980
github.com/rs/zerolog v1.28.0
8081
github.com/segmentio/ksuid v1.0.4
8182
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
473473
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
474474
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
475475
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
476+
github.com/pressly/goose v2.7.0+incompatible h1:PWejVEv07LCerQEzMMeAtjuyCKbyprZ/LBa6K5P0OCQ=
477+
github.com/pressly/goose v2.7.0+incompatible/go.mod h1:m+QHWCqxR3k8D9l7qfzuC/djtlfzxr34mozWDYEu1z8=
476478
github.com/pressly/goose/v3 v3.7.0 h1:jblaZul15uCIEKHRu5KUdA+5wDA7E60JC0TOthdrtf8=
477479
github.com/pressly/goose/v3 v3.7.0/go.mod h1:N5gqPdIzdxf3BiPWdmoPreIwHStkxsvKWE5xjUvfYNk=
478480
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
-- +goose Up
22
-- +goose StatementBegin
3-
SELECT 'up SQL query';
4-
53
REVOKE CREATE ON schema public FROM public; -- public schema isolation
64
CREATE SCHEMA IF NOT EXISTS contract_event_processor;
7-
85
-- +goose StatementEnd
96

107
-- +goose Down
118
-- +goose StatementBegin
12-
SELECT 'down SQL query';
13-
14-
DROP SCHEMA chain_indexer CASCADE;
9+
DROP SCHEMA contract_event_processor CASCADE;
1510
GRANT CREATE, USAGE ON schema public TO public;
16-
1711
-- +goose StatementEnd

migrations/2_blocks.sql renamed to migrations/00002_blocks.sql

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
-- +goose Up
22
-- +goose StatementBegin
3-
SELECT 'up SQL query';
4-
5-
SET search_path TO contract_event_processor;
3+
SET search_path TO contract_event_processor, public;
64

75
CREATE TABLE IF NOT EXISTS blocks (
8-
hash bytea PRIMARY KEY,
9-
number bigint NOT NULL,
10-
processed_at timestamp default (now() at time zone 'utc')
6+
number bigint PRIMARY KEY
7+
CONSTRAINT blocks_number_check CHECK (number > 0),
8+
hash bytea
9+
CONSTRAINT blocks_hash_check CHECK (length(hash) = 32),
10+
processed_at timestamptz default current_timestamp
1111
);
1212

1313
ALTER TABLE blocks
@@ -20,9 +20,7 @@ on blocks (number);
2020

2121
-- +goose Down
2222
-- +goose StatementBegin
23-
SELECT 'down SQL query';
24-
25-
SET search_path TO contract_event_processor;
23+
SET search_path TO contract_event_processor, public;
2624

2725
DROP TABLE IF EXISTS blocks;
2826

0 commit comments

Comments
 (0)