mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 23:44:22 +00:00
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
package storage
|
|
|
|
import (
|
|
"novamd/internal/git"
|
|
)
|
|
|
|
// Manager interface combines all storage interfaces.
|
|
type Manager interface {
|
|
FileManager
|
|
WorkspaceManager
|
|
RepositoryManager
|
|
}
|
|
|
|
// Service represents the file system structure.
|
|
type Service struct {
|
|
fs fileSystem
|
|
RootDir string
|
|
GitRepos map[int]map[int]git.Client // map[userID]map[workspaceID]*git.Client
|
|
}
|
|
|
|
// NewService creates a new Storage instance.
|
|
// Parameters:
|
|
// - rootDir: the root directory for the storage
|
|
// Returns:
|
|
// - result: the new Storage instance
|
|
func NewService(rootDir string) *Service {
|
|
return NewServiceWithFS(rootDir, &osFS{})
|
|
}
|
|
|
|
// NewServiceWithFS creates a new Storage instance with the given filesystem.
|
|
// Parameters:
|
|
// - rootDir: the root directory for the storage
|
|
// - fs: the filesystem implementation to use
|
|
// Returns:
|
|
// - result: the new Storage instance
|
|
func NewServiceWithFS(rootDir string, fs fileSystem) *Service {
|
|
return &Service{
|
|
fs: fs,
|
|
RootDir: rootDir,
|
|
GitRepos: make(map[int]map[int]git.Client),
|
|
}
|
|
}
|