Skip to content

Commit 8b7d6bd

Browse files
Fix block confirmation and bump ETL chain ID guard (#992)
## Summary - allow `/block_confirmation` to confirm rows indexed under the legacy/fallback `--` chain id, which rescues rows already written during the bad indexer windows - bump `github.com/OpenAudio/go-openaudio` and `github.com/OpenAudio/go-openaudio/pkg/etl` to merged commit `0cdce60e` from OpenAudio/go-openaudio#402 so new `core-indexer` retries Core node-info lookup and then fails startup instead of writing `chain_id = --` - keep checking the configured chain id via the same indexed lookup path ## Related - Root writer fix: OpenAudio/go-openaudio#402 ## Testing - `go test ./api -run ^$` - `go test ./indexer -run ^$` ## Notes - DB-backed test runs for `TestBlockConfirmation` and `./indexer` could not complete locally because the test Postgres on `localhost:21300` is not running (`connection refused`).
1 parent 10d29bc commit 8b7d6bd

4 files changed

Lines changed: 59 additions & 5 deletions

File tree

api/block_confirmation.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"github.com/jackc/pgx/v5"
66
)
77

8+
const fallbackChainID = "--"
9+
810
type BlockConfirmationQueryParams struct {
911
BlockHash string `query:"blockhash"`
1012
BlockNumber int64 `query:"blocknumber"`
@@ -22,14 +24,14 @@ func (app *ApiServer) BlockConfirmation(c *fiber.Ctx) error {
2224
(
2325
SELECT EXISTS (
2426
SELECT 1 FROM core_indexed_blocks
25-
WHERE chain_id = @chainId AND height = @blockNumber
27+
WHERE chain_id = ANY(@chainIds) AND height = @blockNumber
2628
LIMIT 1
2729
)
2830
) AS block_passed,
2931
(
3032
SELECT EXISTS (
3133
SELECT 1 FROM core_indexed_blocks
32-
WHERE chain_id = @chainId AND blockhash = @blockHash
34+
WHERE chain_id = ANY(@chainIds) AND blockhash = @blockHash
3335
LIMIT 1
3436
)
3537
) AS block_found
@@ -38,7 +40,7 @@ func (app *ApiServer) BlockConfirmation(c *fiber.Ctx) error {
3840
rows, err := app.pool.Query(c.Context(), sql, pgx.NamedArgs{
3941
"blockHash": params.BlockHash,
4042
"blockNumber": params.BlockNumber,
41-
"chainId": app.config.ChainId,
43+
"chainIds": []string{app.config.ChainId, fallbackChainID},
4244
})
4345
if err != nil {
4446
return err

api/block_confirmation_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ func TestBlockConfirmation(t *testing.T) {
2323
"chain_id": "audius-devnet",
2424
"blockhash": "0xabc234",
2525
},
26+
{
27+
"height": 3,
28+
"chain_id": "--",
29+
"blockhash": "0xfallback",
30+
},
2631
},
2732
}
2833

@@ -41,4 +46,11 @@ func TestBlockConfirmation(t *testing.T) {
4146
"data.block_passed": true,
4247
"data.block_found": true,
4348
})
49+
50+
statusFallback, bodyFallback := testGet(t, app, "/block_confirmation?blockhash=0xfallback&blocknumber=3")
51+
assert.Equal(t, 200, statusFallback)
52+
jsonAssert(t, bodyFallback, map[string]any{
53+
"data.block_passed": true,
54+
"data.block_found": true,
55+
})
4456
}

go.mod

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ require (
66
connectrpc.com/connect v1.18.1
77
github.com/AlecAivazis/survey/v2 v2.3.7
88
github.com/Doist/unfurlist v0.0.0-20250409100812-515f2735f8e5
9-
github.com/OpenAudio/go-openaudio v1.5.1-0.20260701053044-b75c8bb6f8c5
10-
github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260701053044-b75c8bb6f8c5
9+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713193215-0cdce60eaefe
10+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713193215-0cdce60eaefe
1111
github.com/aquasecurity/esquery v0.2.0
1212
github.com/axiomhq/axiom-go v0.23.0
1313
github.com/axiomhq/hyperloglog v0.2.5
@@ -138,6 +138,8 @@ require (
138138
github.com/jackc/pgpassfile v1.0.0 // indirect
139139
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
140140
github.com/jackc/puddle/v2 v2.2.2 // indirect
141+
github.com/jinzhu/inflection v1.0.0 // indirect
142+
github.com/jinzhu/now v1.1.5 // indirect
141143
github.com/jmhodges/levigo v1.0.0 // indirect
142144
github.com/json-iterator/go v1.1.12 // indirect
143145
github.com/kamstrup/intmap v0.5.1 // indirect
@@ -171,6 +173,7 @@ require (
171173
github.com/multiformats/go-varint v0.0.6 // indirect
172174
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
173175
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect
176+
github.com/oklog/ulid/v2 v2.1.0 // indirect
174177
github.com/opentracing/opentracing-go v1.2.0 // indirect
175178
github.com/petermattis/goid v0.0.0-20250319124200-ccd6737f222a // indirect
176179
github.com/pkg/errors v0.9.1 // indirect
@@ -224,6 +227,8 @@ require (
224227
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect
225228
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect
226229
gopkg.in/yaml.v3 v3.0.1 // indirect
230+
gorm.io/driver/postgres v1.5.0 // indirect
231+
gorm.io/gorm v1.25.5 // indirect
227232
lukechampine.com/blake3 v1.1.6 // indirect
228233
rsc.io/markdown v0.0.0-20241212154241-6bf72452917f // indirect
229234
rsc.io/tmplfunc v0.0.3 // indirect

go.sum

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ github.com/OpenAudio/go-openaudio v1.5.1-0.20260629214354-ad45fd6ad456 h1:cyZrZP
2828
github.com/OpenAudio/go-openaudio v1.5.1-0.20260629214354-ad45fd6ad456/go.mod h1:lLRvUF5oWkxOyZx8rp/ecqxuMo3yzPvuvJbLSfvxguQ=
2929
github.com/OpenAudio/go-openaudio v1.5.1-0.20260701053044-b75c8bb6f8c5 h1:Xxf3vrnI8NhaT0FAcmt71NlNOfQhnwlXTmKgeFUuM1k=
3030
github.com/OpenAudio/go-openaudio v1.5.1-0.20260701053044-b75c8bb6f8c5/go.mod h1:lLRvUF5oWkxOyZx8rp/ecqxuMo3yzPvuvJbLSfvxguQ=
31+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713190923-29faf2f6af6c h1:Ahly9zqD+Zl93L4vpZNZGUgmV0UcMTJU5Bi/zkdEhO4=
32+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713190923-29faf2f6af6c/go.mod h1:lLRvUF5oWkxOyZx8rp/ecqxuMo3yzPvuvJbLSfvxguQ=
33+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713192613-dc213444dcab h1:Mhgrb5Or9+hHZ49gmKBZZhGRyc6bOv+xSI7qwfJPbyE=
34+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713192613-dc213444dcab/go.mod h1:lLRvUF5oWkxOyZx8rp/ecqxuMo3yzPvuvJbLSfvxguQ=
35+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713193215-0cdce60eaefe h1:kNdn60SpWfE/RT+BzicJVQtCDyDg/sPG2g/qxWb7/Tk=
36+
github.com/OpenAudio/go-openaudio v1.6.1-0.20260713193215-0cdce60eaefe/go.mod h1:lLRvUF5oWkxOyZx8rp/ecqxuMo3yzPvuvJbLSfvxguQ=
3137
github.com/OpenAudio/go-openaudio/pkg/etl v1.4.1-0.20260618012656-5aa118b67bc1 h1:DeKyFpz5BFelTSFRqSnu58RfDDwn38BCtYfBsoUg3gg=
3238
github.com/OpenAudio/go-openaudio/pkg/etl v1.4.1-0.20260618012656-5aa118b67bc1/go.mod h1:qOtZr4+Xkp/Zp+yM4axDcKdYF03+xA98PjhwjFQMGvg=
3339
github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260629182311-eb976ab7d10a h1:brZAgN0X5AWXgnoXywusHFCQ28H3lxIDNw4llsY89JQ=
@@ -36,6 +42,12 @@ github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260629214354-ad45fd6ad456 h
3642
github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260629214354-ad45fd6ad456/go.mod h1:GOtIlg6gDySPB0ekNVP1SPrlky6EfIigP2MGZ9g+ih4=
3743
github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260701053044-b75c8bb6f8c5 h1:Sa9tQeYMTW41L0fhYB1HQdHKc2GdTuyVwHMjpHW/YTI=
3844
github.com/OpenAudio/go-openaudio/pkg/etl v1.5.1-0.20260701053044-b75c8bb6f8c5/go.mod h1:GOtIlg6gDySPB0ekNVP1SPrlky6EfIigP2MGZ9g+ih4=
45+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713190923-29faf2f6af6c h1:FwlegwactX0wPpgXITHxtTBP19mUcyqPh0DFVMs5Hlc=
46+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713190923-29faf2f6af6c/go.mod h1:AVIHYrm0NwiYUr2XgRjOv6GXw8YMmKJl/vYvyexMAaw=
47+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713192613-dc213444dcab h1:44bYSaAcLPjVhuP5mbiKGASJonNj2O0HYBIl5sI0mnc=
48+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713192613-dc213444dcab/go.mod h1:AVIHYrm0NwiYUr2XgRjOv6GXw8YMmKJl/vYvyexMAaw=
49+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713193215-0cdce60eaefe h1:h0AdrH4rzeb3lYAIj5WjB/WcbE3cNNeiUaJaqOpgBlY=
50+
github.com/OpenAudio/go-openaudio/pkg/etl v1.6.1-0.20260713193215-0cdce60eaefe/go.mod h1:AVIHYrm0NwiYUr2XgRjOv6GXw8YMmKJl/vYvyexMAaw=
3951
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
4052
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
4153
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
@@ -347,12 +359,15 @@ github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438 h1:Dj0L5fhJ9F82ZJy
347359
github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds=
348360
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
349361
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
362+
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
350363
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
351364
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
365+
github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
352366
github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg=
353367
github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ=
354368
github.com/jackc/pgxlisten v0.0.0-20241106001234-1d6f6656415c h1:bTgmg761ac9Ki27HoLx8IBvc+T+Qj6eptBpKahKIRT4=
355369
github.com/jackc/pgxlisten v0.0.0-20241106001234-1d6f6656415c/go.mod h1:N4E1APLOYrbM11HH5kdqAjDa8RJWVwD3JqWpvH22h64=
370+
github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
356371
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
357372
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
358373
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
@@ -361,6 +376,10 @@ github.com/jgroeneveld/schema v1.0.0 h1:J0E10CrOkiSEsw6dfb1IfrDJD14pf6QLVJ3tRPl/
361376
github.com/jgroeneveld/schema v1.0.0/go.mod h1:M14lv7sNMtGvo3ops1MwslaSYgDYxrSmbzWIQ0Mr5rs=
362377
github.com/jgroeneveld/trial v2.0.0+incompatible h1:d59ctdgor+VqdZCAiUfVN8K13s0ALDioG5DWwZNtRuQ=
363378
github.com/jgroeneveld/trial v2.0.0+incompatible/go.mod h1:I6INLW96EN8WysNBXUFI3M4RIC8ePg9ntAc/Wy+U/+M=
379+
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
380+
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
381+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
382+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
364383
github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
365384
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
366385
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
@@ -382,6 +401,7 @@ github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuV
382401
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
383402
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
384403
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
404+
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
385405
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
386406
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
387407
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -471,6 +491,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
471491
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
472492
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=
473493
github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=
494+
github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU=
495+
github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
474496
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
475497
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
476498
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -496,6 +518,7 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4
496518
github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
497519
github.com/pashagolub/pgxmock/v4 v4.8.0 h1:RBtNUZXNG/ZwyOT7sJdSEx9RlAw19sgVPlnmEdlpT08=
498520
github.com/pashagolub/pgxmock/v4 v4.8.0/go.mod h1:9L57pC193h2aKRHVyiiE817avasIPZnPwPlw3JczWvM=
521+
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
499522
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM=
500523
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
501524
github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
@@ -542,6 +565,7 @@ github.com/rickyrombo/solana-go v0.0.0-20251201234416-e59646f7798f/go.mod h1:l/q
542565
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
543566
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
544567
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
568+
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
545569
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
546570
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
547571
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
@@ -686,6 +710,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
686710
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
687711
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
688712
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
713+
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
689714
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
690715
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
691716
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -716,6 +741,7 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
716741
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
717742
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
718743
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
744+
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
719745
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
720746
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
721747
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -726,6 +752,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
726752
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
727753
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
728754
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
755+
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
729756
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
730757
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
731758
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -759,6 +786,7 @@ golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
759786
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
760787
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
761788
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
789+
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
762790
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
763791
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
764792
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -767,6 +795,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
767795
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
768796
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
769797
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
798+
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
770799
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
771800
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
772801
golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
@@ -819,6 +848,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
819848
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
820849
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
821850
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
851+
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
822852
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
823853
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
824854
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
@@ -833,6 +863,11 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
833863
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
834864
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
835865
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
866+
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
867+
gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A=
868+
gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
869+
gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
870+
gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
836871
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
837872
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
838873
lukechampine.com/blake3 v1.1.6 h1:H3cROdztr7RCfoaTpGZFQsrqvweFLrqS73j7L7cmR5c=

0 commit comments

Comments
 (0)