- Changed blob table to use ID (UUID) as primary key instead of hash - Blob records are now created at packing start, enabling immediate chunk associations - Implemented streaming chunking to process large files without memory exhaustion - Fixed blob manifest generation to include all referenced blobs - Updated all foreign key references from blob_hash to blob_id - Added progress reporting and improved error handling - Enforced encryption requirement for all blob packing - Updated tests to use test encryption keys - Added Cyrillic transliteration to README
41 lines
763 B
Go
41 lines
763 B
Go
package s3
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.eeqj.de/sneak/vaultik/internal/config"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
// Module exports S3 functionality
|
|
var Module = fx.Module("s3",
|
|
fx.Provide(
|
|
provideClient,
|
|
),
|
|
)
|
|
|
|
func provideClient(lc fx.Lifecycle, cfg *config.Config) (*Client, error) {
|
|
ctx := context.Background()
|
|
|
|
client, err := NewClient(ctx, Config{
|
|
Endpoint: cfg.S3.Endpoint,
|
|
Bucket: cfg.S3.Bucket,
|
|
Prefix: cfg.S3.Prefix,
|
|
AccessKeyID: cfg.S3.AccessKeyID,
|
|
SecretAccessKey: cfg.S3.SecretAccessKey,
|
|
Region: cfg.S3.Region,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
lc.Append(fx.Hook{
|
|
OnStop: func(ctx context.Context) error {
|
|
// S3 client doesn't need explicit cleanup
|
|
return nil
|
|
},
|
|
})
|
|
|
|
return client, nil
|
|
}
|