Skip to content

Commit

Permalink
feat: Sync with stack repository => 56c8bf3d78050d8dd20f20e84e03a0748…
Browse files Browse the repository at this point in the history
…876aac5
  • Loading branch information
flemzord committed Dec 18, 2023
1 parent 3f8717e commit a22d3a5
Show file tree
Hide file tree
Showing 8 changed files with 1,519 additions and 35 deletions.
8 changes: 8 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ builds:
- amd64
- arm64

release:
prerelease: auto
extra_files:
- glob: openapi.yaml
footer: |
## What to do next?
- Read the [documentation](https://docs.formance.com/)
- Join our [Slack server](https://formance.com/slack)
archives:
- id: "{{.ProjectName}}"
Expand Down
4 changes: 2 additions & 2 deletions internal/storage/ledgerstore/migrations_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,14 +133,14 @@ func batchLogs(
stmt, err := sqlTx.PrepareContext(ctx, pq.CopyInSchema(
schema,
"logs",
"id", "type", "hash", "date", "data",
"ledger", "id", "type", "hash", "date", "data",
))
if err != nil {
return err
}

for _, l := range logs {
_, err = stmt.ExecContext(ctx, l.ID, l.Type, l.Hash, l.Date, RawMessage(l.Data))
_, err = stmt.ExecContext(ctx, schema, l.ID, l.Type, l.Hash, l.Date, RawMessage(l.Data))
if err != nil {
return err
}
Expand Down
64 changes: 64 additions & 0 deletions internal/storage/migrate_ledger_v1_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package storage_test

import (
"database/sql"
"os"
"path/filepath"
"testing"

"github.com/formancehq/ledger/internal/storage/driver"
"github.com/formancehq/ledger/internal/storage/ledgerstore"
"github.com/formancehq/ledger/internal/storage/systemstore"
"github.com/formancehq/stack/libs/go-libs/bun/bunconnect"
"github.com/formancehq/stack/libs/go-libs/logging"
"github.com/formancehq/stack/libs/go-libs/pgtesting"
"github.com/stretchr/testify/require"
)

func TestMigrateLedgerV1(t *testing.T) {
require.NoError(t, pgtesting.CreatePostgresServer())
t.Cleanup(func() {
require.NoError(t, pgtesting.DestroyPostgresServer())
})

db, err := sql.Open("postgres", pgtesting.Server().GetDSN())
require.NoError(t, err)

data, err := os.ReadFile(filepath.Join("testdata", "v1-dump.sql"))
require.NoError(t, err)

_, err = db.Exec(string(data))
require.NoError(t, err)

ctx := logging.TestingContext()

d := driver.New(bunconnect.ConnectionOptions{
DatabaseSourceName: pgtesting.Server().GetDSN(),
Debug: testing.Verbose(),
Writer: os.Stdout,
})
require.NoError(t, d.Initialize(ctx))

ledgers, err := d.GetSystemStore().ListLedgers(ctx, systemstore.ListLedgersQuery{})
require.NoError(t, err)

for _, ledger := range ledgers.Data {
require.NotEmpty(t, ledger.Bucket)
require.Equal(t, ledger.Name, ledger.Bucket)

bucket, err := d.OpenBucket(ledger.Bucket)
require.NoError(t, err)
require.NoError(t, bucket.Migrate(ctx))

store, err := bucket.GetLedgerStore(ledger.Name)
require.NoError(t, err)

txs, err := store.GetTransactions(ctx, ledgerstore.NewGetTransactionsQuery(ledgerstore.PaginatedQueryOptions[ledgerstore.PITFilterWithVolumes]{}))
require.NoError(t, err)
require.NotEmpty(t, txs)

accounts, err := store.GetAccountsWithVolumes(ctx, ledgerstore.NewGetAccountsQuery(ledgerstore.PaginatedQueryOptions[ledgerstore.PITFilterWithVolumes]{}))
require.NoError(t, err)
require.NotEmpty(t, accounts)
}
}
11 changes: 9 additions & 2 deletions internal/storage/systemstore/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,15 @@ func Migrate(ctx context.Context, db bun.IDB) error {
Table("ledgers").
ColumnExpr("bucket varchar(255)").
Exec(ctx)

return errors.Wrap(err, "adding 'bucket' column")
if err != nil {
return errors.Wrap(err, "adding 'bucket' column")
}
_, err = tx.NewUpdate().
Table("ledgers").
Set("bucket = ledger").
Where("1 = 1").
Exec(ctx)
return errors.Wrap(err, "setting 'bucket' column")
}

_, err = tx.NewCreateTable().
Expand Down
959 changes: 959 additions & 0 deletions internal/storage/testdata/v1-dump.sql

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions libs/collectionutils/map.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
package collectionutils

import "fmt"

func Keys[K comparable, V any](m map[K]V) []K {
ret := make([]K, 0)
for k := range m {
ret = append(ret, k)
}
return ret
}

func ConvertMap[K comparable, FROM any, TO any](m map[K]FROM, mapper func(v FROM) TO) map[K]TO {
ret := make(map[K]TO)
for k, from := range m {
ret[k] = mapper(from)
}
return ret
}

func ToAny[V any](v V) any {
return v
}

func ToFmtString[V any](v any) string {
return fmt.Sprint(v)
}
Loading

0 comments on commit a22d3a5

Please sign in to comment.