mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-06 16:04:23 +00:00
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package filesystem
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
)
|
|
|
|
// GetWorkspacePath returns the path to the workspace directory for the given user and workspace IDs.
|
|
// Parameters:
|
|
// - userID: the ID of the user who owns the workspace
|
|
// - workspaceID: the ID of the workspace
|
|
// Returns:
|
|
// - result: the path to the workspace directory
|
|
func (s *Storage) GetWorkspacePath(userID, workspaceID int) string {
|
|
return filepath.Join(s.RootDir, fmt.Sprintf("%d", userID), fmt.Sprintf("%d", workspaceID))
|
|
}
|
|
|
|
// InitializeUserWorkspace creates the workspace directory for the given user and workspace IDs.
|
|
// Parameters:
|
|
// - userID: the ID of the user who owns the workspace
|
|
// - workspaceID: the ID of the workspace to initialize
|
|
// Returns:
|
|
// - error: any error that occurred during the operation
|
|
func (s *Storage) InitializeUserWorkspace(userID, workspaceID int) error {
|
|
workspacePath := s.GetWorkspacePath(userID, workspaceID)
|
|
err := s.fs.MkdirAll(workspacePath, 0755)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create workspace directory: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// DeleteUserWorkspace deletes the workspace directory for the given user and workspace IDs.
|
|
// Parameters:
|
|
// - userID: the ID of the user who owns the workspace
|
|
// - workspaceID: the ID of the workspace to delete
|
|
// Returns:
|
|
// - error: any error that occurred during the operation
|
|
func (s *Storage) DeleteUserWorkspace(userID, workspaceID int) error {
|
|
workspacePath := s.GetWorkspacePath(userID, workspaceID)
|
|
err := s.fs.RemoveAll(workspacePath)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to delete workspace directory: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|