91 lines
2.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /futriis/internal/storage/tapple.go
// Пакет storage реализует операции с тапплами (базами данных)
package storage
import (
"errors"
"sync/atomic"
"futriis/pkg/types"
"futriis/pkg/utils"
)
// TappleManager управляет операциями с тапплами
type TappleManager struct {
tapples map[string]*types.Tapple
sliceManager *SliceManager
stats struct {
created int64
deleted int64
}
}
// NewTappleManager создаёт новый менеджер тапплов
func NewTappleManager() *TappleManager {
return &TappleManager{
tapples: make(map[string]*types.Tapple),
sliceManager: NewSliceManager(),
}
}
// CreateTapple создаёт новый таппл
func (tm *TappleManager) CreateTapple(name string) (*types.Tapple, error) {
if _, exists := tm.tapples[name]; exists {
return nil, errors.New("tapple already exists")
}
tapple := types.NewTapple(name)
tm.tapples[name] = tapple
atomic.AddInt64(&tm.stats.created, 1)
logger := utils.GetLogger()
if logger != nil {
logger.Log("INFO", "Created tapple: "+name)
}
return tapple, nil
}
// GetTapple возвращает таппл по имени
func (tm *TappleManager) GetTapple(name string) (*types.Tapple, error) {
tapple, exists := tm.tapples[name]
if !exists {
return nil, errors.New("tapple not found")
}
return tapple, nil
}
// DeleteTapple удаляет таппл
func (tm *TappleManager) DeleteTapple(name string) error {
if _, exists := tm.tapples[name]; !exists {
return errors.New("tapple not found")
}
delete(tm.tapples, name)
atomic.AddInt64(&tm.stats.deleted, 1)
logger := utils.GetLogger()
if logger != nil {
logger.Log("INFO", "Deleted tapple: "+name)
}
return nil
}
// ListTapples возвращает список всех тапплов
func (tm *TappleManager) ListTapples() []string {
tapples := make([]string, 0, len(tm.tapples))
for name := range tm.tapples {
tapples = append(tapples, name)
}
return tapples
}
// GetSliceManager возвращает менеджер слайсов
func (tm *TappleManager) GetSliceManager() *SliceManager {
return tm.sliceManager
}