Skip to content

Commit d0bb612

Browse files
Merge pull request #2 from dipdup-io/refactoring/new-orm
Refactoring: new ORM
2 parents 943316b + 77362e9 commit d0bb612

File tree

17 files changed

+839
-340
lines changed

17 files changed

+839
-340
lines changed

.github/workflows/tests.yml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,31 @@ jobs:
99
steps:
1010
- uses: actions/setup-go@v3
1111
with:
12-
go-version: '1.19'
12+
go-version: '1.20'
1313
- uses: actions/checkout@v3
1414
- name: golangci-lint
1515
uses: golangci/golangci-lint-action@v3
1616
with:
1717
version: v1.51.2
18-
args: --timeout=3m
18+
args: --timeout=3m
19+
test:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: install Go
23+
uses: actions/setup-go@v2
24+
with:
25+
go-version: 1.20.x
26+
- name: checkout code
27+
uses: actions/checkout@v2
28+
- uses: actions/cache@v2
29+
with:
30+
path: ~/go/pkg/mod
31+
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
32+
restore-keys: |
33+
${{ runner.os }}-go-
34+
- name: golang tests
35+
env:
36+
GO111MODULE: on
37+
run: |
38+
go mod download
39+
go test ./...

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,7 @@ generate:
1818
-o ${GOPATH}/src/github.com/dipdup-io/uniswap \
1919
-c uniswap \
2020
-a 0xb78d5b29d50d0bb1ec8f9143bc64de0f4d1225df \
21-
-p github.com/dipdup-io/uniswap
21+
-p github.com/dipdup-io/uniswap
22+
23+
test:
24+
go test ./...

examples/storage/storage/postgres/core.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package postgres
22

33
import (
44
"context"
5+
"database/sql"
56

67
"github.com/dipdup-net/go-lib/config"
78
"github.com/dipdup-net/go-lib/database"
89
models "github.com/dipdup-net/indexer-sdk/examples/storage/storage"
910
"github.com/dipdup-net/indexer-sdk/pkg/storage/postgres"
10-
"github.com/go-pg/pg/v10"
11+
"github.com/uptrace/bun"
1112
)
1213

1314
// Storage -
@@ -30,10 +31,10 @@ func Create(ctx context.Context, cfg config.Database) (*Storage, error) {
3031
}, nil
3132
}
3233

33-
func initDatabase(ctx context.Context, conn *database.PgGo) error {
34+
func initDatabase(ctx context.Context, conn *database.Bun) error {
3435
// here you can create schemas, user grants or indexes
3536

36-
return conn.DB().RunInTransaction(ctx, func(tx *pg.Tx) error {
37+
return conn.DB().RunInTx(ctx, &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error {
3738
_, err := tx.ExecContext(ctx, `CREATE INDEX IF NOT EXISTS persons_name ON name (name)`)
3839
return err
3940
})

examples/storage/storage/postgres/person.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Person struct {
1414
}
1515

1616
// NewPerson -
17-
func NewPerson(db *database.PgGo) *Person {
17+
func NewPerson(db *database.Bun) *Person {
1818
return &Person{
1919
Table: postgres.NewTable[storage.Person](db),
2020
}
@@ -23,6 +23,6 @@ func NewPerson(db *database.PgGo) *Person {
2323
// GetByName-
2424
func (p *Person) GetByName(ctx context.Context, name string) (storage.Person, error) {
2525
var person storage.Person
26-
err := p.DB().ModelContext(ctx, &person).Where("name = ?", name).First()
26+
err := p.DB().NewSelect().Model(&person).Where("name = ?", name).Scan(ctx)
2727
return person, err
2828
}

go.mod

Lines changed: 80 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,105 @@
11
module github.com/dipdup-net/indexer-sdk
22

3-
go 1.19
3+
go 1.20
44

55
require (
6-
github.com/dipdup-net/go-lib v0.2.24
7-
github.com/ethereum/go-ethereum v1.10.26
8-
github.com/go-pg/pg/v10 v10.10.7
9-
github.com/iancoleman/strcase v0.2.0
6+
github.com/dipdup-net/go-lib v0.3.0
7+
github.com/ethereum/go-ethereum v1.12.0
8+
github.com/go-testfixtures/testfixtures/v3 v3.9.0
9+
github.com/iancoleman/strcase v0.3.0
1010
github.com/json-iterator/go v1.1.12
11+
github.com/lib/pq v1.10.9
1112
github.com/pkg/errors v0.9.1
12-
github.com/robfig/cron/v3 v3.0.0
13-
github.com/rs/zerolog v1.28.0
14-
github.com/spf13/cobra v1.6.1
15-
github.com/stretchr/testify v1.8.1
16-
google.golang.org/grpc v1.50.1
17-
google.golang.org/protobuf v1.28.1
13+
github.com/robfig/cron/v3 v3.0.1
14+
github.com/rs/zerolog v1.30.0
15+
github.com/spf13/cobra v1.7.0
16+
github.com/stretchr/testify v1.8.4
17+
github.com/uptrace/bun v1.1.14
18+
google.golang.org/grpc v1.57.0
19+
google.golang.org/protobuf v1.31.0
20+
gopkg.in/yaml.v3 v3.0.1
1821
)
1922

2023
require (
21-
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
24+
dario.cat/mergo v1.0.0 // indirect
25+
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
26+
github.com/ClickHouse/ch-go v0.58.0 // indirect
27+
github.com/ClickHouse/clickhouse-go/v2 v2.13.0 // indirect
28+
github.com/Microsoft/go-winio v0.6.1 // indirect
29+
github.com/andybalholm/brotli v1.0.5 // indirect
30+
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
31+
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
32+
github.com/containerd/containerd v1.7.3 // indirect
33+
github.com/cpuguy83/dockercfg v0.3.1 // indirect
2234
github.com/davecgh/go-spew v1.1.1 // indirect
23-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
35+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
36+
github.com/docker/distribution v2.8.2+incompatible // indirect
37+
github.com/docker/docker v24.0.5+incompatible // indirect
38+
github.com/docker/go-connections v0.4.0 // indirect
39+
github.com/docker/go-units v0.5.0 // indirect
40+
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
41+
github.com/go-faster/city v1.0.1 // indirect
42+
github.com/go-faster/errors v0.6.1 // indirect
43+
github.com/go-pg/pg/v10 v10.11.1 // indirect
2444
github.com/go-pg/zerochecker v0.2.0 // indirect
25-
github.com/go-playground/locales v0.14.0 // indirect
26-
github.com/go-playground/universal-translator v0.18.0 // indirect
27-
github.com/go-playground/validator/v10 v10.9.0 // indirect
28-
github.com/go-sql-driver/mysql v1.6.0 // indirect
29-
github.com/golang/protobuf v1.5.2 // indirect
30-
github.com/inconshreveable/mousetrap v1.0.1 // indirect
31-
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
32-
github.com/jackc/pgconn v1.10.1 // indirect
33-
github.com/jackc/pgio v1.0.0 // indirect
45+
github.com/go-playground/locales v0.14.1 // indirect
46+
github.com/go-playground/universal-translator v0.18.1 // indirect
47+
github.com/go-playground/validator/v10 v10.15.0 // indirect
48+
github.com/go-sql-driver/mysql v1.7.1 // indirect
49+
github.com/gogo/protobuf v1.3.2 // indirect
50+
github.com/golang/protobuf v1.5.3 // indirect
51+
github.com/google/uuid v1.3.0 // indirect
52+
github.com/holiman/uint256 v1.2.3 // indirect
53+
github.com/inconshreveable/mousetrap v1.1.0 // indirect
3454
github.com/jackc/pgpassfile v1.0.0 // indirect
35-
github.com/jackc/pgproto3/v2 v2.2.0 // indirect
36-
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
37-
github.com/jackc/pgtype v1.9.0 // indirect
38-
github.com/jackc/pgx/v4 v4.14.0 // indirect
55+
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
56+
github.com/jackc/pgx/v5 v5.4.3 // indirect
3957
github.com/jinzhu/inflection v1.0.0 // indirect
40-
github.com/jinzhu/now v1.1.3 // indirect
41-
github.com/leodido/go-urn v1.2.1 // indirect
58+
github.com/jinzhu/now v1.1.5 // indirect
59+
github.com/klauspost/compress v1.16.7 // indirect
60+
github.com/leodido/go-urn v1.2.4 // indirect
61+
github.com/magiconair/properties v1.8.7 // indirect
4262
github.com/mattn/go-colorable v0.1.13 // indirect
43-
github.com/mattn/go-isatty v0.0.16 // indirect
44-
github.com/mattn/go-sqlite3 v1.14.9 // indirect
63+
github.com/mattn/go-isatty v0.0.19 // indirect
64+
github.com/mattn/go-sqlite3 v1.14.17 // indirect
65+
github.com/moby/patternmatcher v0.5.0 // indirect
66+
github.com/moby/sys/sequential v0.5.0 // indirect
67+
github.com/moby/term v0.5.0 // indirect
4568
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4669
github.com/modern-go/reflect2 v1.0.2 // indirect
70+
github.com/morikuni/aec v1.0.0 // indirect
4771
github.com/nxadm/tail v1.4.8 // indirect
72+
github.com/opencontainers/go-digest v1.0.0 // indirect
73+
github.com/opencontainers/image-spec v1.1.0-rc4 // indirect
74+
github.com/opencontainers/runc v1.1.9 // indirect
75+
github.com/paulmach/orb v0.10.0 // indirect
76+
github.com/pierrec/lz4/v4 v4.1.18 // indirect
4877
github.com/pmezard/go-difflib v1.0.0 // indirect
78+
github.com/segmentio/asm v1.2.0 // indirect
79+
github.com/shopspring/decimal v1.3.1 // indirect
80+
github.com/sirupsen/logrus v1.9.3 // indirect
4981
github.com/spf13/pflag v1.0.5 // indirect
82+
github.com/testcontainers/testcontainers-go v0.22.0 // indirect
83+
github.com/testcontainers/testcontainers-go/modules/postgres v0.22.0 // indirect
5084
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
85+
github.com/uptrace/bun/dialect/pgdialect v1.1.14 // indirect
5186
github.com/vmihailenco/bufpool v0.1.11 // indirect
52-
github.com/vmihailenco/msgpack/v5 v5.3.4 // indirect
87+
github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
5388
github.com/vmihailenco/tagparser v0.1.2 // indirect
5489
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
55-
golang.org/x/crypto v0.0.0-20221012134737-56aed061732a // indirect
56-
golang.org/x/net v0.7.0 // indirect
57-
golang.org/x/sys v0.5.0 // indirect
58-
golang.org/x/text v0.7.0 // indirect
59-
google.golang.org/genproto v0.0.0-20220930163606-c98284e70a91 // indirect
60-
gopkg.in/yaml.v3 v3.0.1 // indirect
61-
gorm.io/driver/mysql v1.2.1 // indirect
62-
gorm.io/driver/postgres v1.2.3 // indirect
63-
gorm.io/driver/sqlite v1.2.6 // indirect
64-
gorm.io/gorm v1.22.4 // indirect
90+
go.opentelemetry.io/otel v1.16.0 // indirect
91+
go.opentelemetry.io/otel/trace v1.16.0 // indirect
92+
golang.org/x/crypto v0.12.0 // indirect
93+
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect
94+
golang.org/x/mod v0.12.0 // indirect
95+
golang.org/x/net v0.14.0 // indirect
96+
golang.org/x/sys v0.11.0 // indirect
97+
golang.org/x/text v0.12.0 // indirect
98+
golang.org/x/tools v0.12.0 // indirect
99+
google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect
100+
gorm.io/driver/mysql v1.5.1 // indirect
101+
gorm.io/driver/postgres v1.5.2 // indirect
102+
gorm.io/driver/sqlite v1.5.2 // indirect
103+
gorm.io/gorm v1.25.3 // indirect
65104
mellium.im/sasl v0.3.1 // indirect
66105
)

0 commit comments

Comments
 (0)