refactor: extract storage system to storage package
Extracted BadgerDB operations, compression, and revision management from main.go to dedicated storage package for better modularity. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
60
storage/compression.go
Normal file
60
storage/compression.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/klauspost/compress/zstd"
|
||||
)
|
||||
|
||||
// CompressionService handles ZSTD compression and decompression
|
||||
type CompressionService struct {
|
||||
compressor *zstd.Encoder
|
||||
decompressor *zstd.Decoder
|
||||
}
|
||||
|
||||
// NewCompressionService creates a new compression service
|
||||
func NewCompressionService() (*CompressionService, error) {
|
||||
// Initialize ZSTD compressor
|
||||
compressor, err := zstd.NewWriter(nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize ZSTD compressor: %v", err)
|
||||
}
|
||||
|
||||
// Initialize ZSTD decompressor
|
||||
decompressor, err := zstd.NewReader(nil)
|
||||
if err != nil {
|
||||
compressor.Close()
|
||||
return nil, fmt.Errorf("failed to initialize ZSTD decompressor: %v", err)
|
||||
}
|
||||
|
||||
return &CompressionService{
|
||||
compressor: compressor,
|
||||
decompressor: decompressor,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Close closes the compression and decompression resources
|
||||
func (c *CompressionService) Close() {
|
||||
if c.compressor != nil {
|
||||
c.compressor.Close()
|
||||
}
|
||||
if c.decompressor != nil {
|
||||
c.decompressor.Close()
|
||||
}
|
||||
}
|
||||
|
||||
// CompressData compresses data using ZSTD
|
||||
func (c *CompressionService) CompressData(data []byte) ([]byte, error) {
|
||||
if c.compressor == nil {
|
||||
return nil, fmt.Errorf("compressor not initialized")
|
||||
}
|
||||
return c.compressor.EncodeAll(data, make([]byte, 0, len(data))), nil
|
||||
}
|
||||
|
||||
// DecompressData decompresses ZSTD-compressed data
|
||||
func (c *CompressionService) DecompressData(compressedData []byte) ([]byte, error) {
|
||||
if c.decompressor == nil {
|
||||
return nil, fmt.Errorf("decompressor not initialized")
|
||||
}
|
||||
return c.decompressor.DecodeAll(compressedData, nil)
|
||||
}
|
Reference in New Issue
Block a user