@@ -43,6 +43,13 @@ func (d *Driver) CreateLedger(ctx context.Context, l *ledger.Ledger) (*ledgersto
4343 l .Metadata = metadata.Metadata {}
4444 }
4545
46+ if err := d .systemStore .CreateLedger (ctx , l ); err != nil {
47+ if errors .Is (postgres .ResolveError (err ), postgres.ErrConstraintsFailed {}) {
48+ return nil , systemcontroller .ErrLedgerAlreadyExists
49+ }
50+ return nil , postgres .ResolveError (err )
51+ }
52+
4653 b := d .bucketFactory .Create (l .Bucket )
4754 isInitialized , err := b .IsInitialized (ctx )
4855 if err != nil {
@@ -57,24 +64,17 @@ func (d *Driver) CreateLedger(ctx context.Context, l *ledger.Ledger) (*ledgersto
5764 if ! upToDate {
5865 return nil , systemcontroller .ErrBucketOutdated
5966 }
60- }
6167
62- if err := b .Migrate (
63- ctx ,
64- migrations .WithLockRetryInterval (d .migratorLockRetryInterval ),
65- ); err != nil {
66- return nil , fmt .Errorf ("migrating bucket: %w" , err )
67- }
68-
69- if err := d .systemStore .CreateLedger (ctx , l ); err != nil {
70- if errors .Is (postgres .ResolveError (err ), postgres.ErrConstraintsFailed {}) {
71- return nil , systemcontroller .ErrLedgerAlreadyExists
68+ if err := b .AddLedger (ctx , * l ); err != nil {
69+ return nil , fmt .Errorf ("adding ledger to bucket: %w" , err )
70+ }
71+ } else {
72+ if err := b .Migrate (
73+ ctx ,
74+ migrations .WithLockRetryInterval (d .migratorLockRetryInterval ),
75+ ); err != nil {
76+ return nil , fmt .Errorf ("migrating bucket: %w" , err )
7277 }
73- return nil , postgres .ResolveError (err )
74- }
75-
76- if err := b .AddLedger (ctx , * l ); err != nil {
77- return nil , fmt .Errorf ("adding ledger to bucket: %w" , err )
7878 }
7979
8080 return d .ledgerStoreFactory .Create (b , * l ), nil
0 commit comments