Refactor snapshot management: integrate logging, enhance concurrency with mutex, add clean extraction option, and update gRPC ListSnapshots with ListOptions.
This commit is contained in:
		@@ -31,6 +31,13 @@ type SnapshotInfo struct {
 | 
			
		||||
	CreationTime time.Time // Время создания
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListOptions provides options for filtering and paginating snapshot lists
 | 
			
		||||
type ListOptions struct {
 | 
			
		||||
	FilterByName string // Filter snapshots by name (substring match)
 | 
			
		||||
	Limit        int    // Maximum number of snapshots to return
 | 
			
		||||
	Offset       int    // Number of snapshots to skip
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MetadataStore определяет интерфейс для хранения и извлечения метаданных снапшотов.
 | 
			
		||||
type MetadataStore interface {
 | 
			
		||||
	// SaveSnapshotMetadata сохраняет полные метаданные снапшота, включая список файлов.
 | 
			
		||||
@@ -41,8 +48,8 @@ type MetadataStore interface {
 | 
			
		||||
	// Возвращает agate.ErrNotFound, если снапшот не найден.
 | 
			
		||||
	GetSnapshotMetadata(ctx context.Context, snapshotID string) (*Snapshot, error)
 | 
			
		||||
 | 
			
		||||
	// ListSnapshotsMetadata извлекает краткую информацию обо всех снапшотах.
 | 
			
		||||
	ListSnapshotsMetadata(ctx context.Context) ([]SnapshotInfo, error)
 | 
			
		||||
	// ListSnapshotsMetadata извлекает краткую информацию о снапшотах с фильтрацией и пагинацией.
 | 
			
		||||
	ListSnapshotsMetadata(ctx context.Context, opts ListOptions) ([]SnapshotInfo, error)
 | 
			
		||||
 | 
			
		||||
	// DeleteSnapshotMetadata удаляет метаданные снапшота по его ID.
 | 
			
		||||
	// Не должен возвращать ошибку, если снапшот не найден.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user