Changeset 0.21.1 (#86)
This commit is contained in:
66
server/models/models_workspace.go
Normal file
66
server/models/models_workspace.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// =========================================
|
||||
// WORKSPACES (v0.21.0)
|
||||
// =========================================
|
||||
|
||||
// Workspace owner type constants.
|
||||
const (
|
||||
WorkspaceOwnerUser = "user"
|
||||
WorkspaceOwnerProject = "project"
|
||||
WorkspaceOwnerChannel = "channel"
|
||||
WorkspaceOwnerTeam = "team"
|
||||
)
|
||||
|
||||
// Workspace status constants.
|
||||
const (
|
||||
WorkspaceStatusActive = "active"
|
||||
WorkspaceStatusArchived = "archived"
|
||||
WorkspaceStatusDeleting = "deleting"
|
||||
)
|
||||
|
||||
// Workspace represents a file workspace bound to an owner (user, project, channel, or team).
|
||||
type Workspace struct {
|
||||
BaseModel
|
||||
OwnerType string `json:"owner_type" db:"owner_type"`
|
||||
OwnerID string `json:"owner_id" db:"owner_id"`
|
||||
Name string `json:"name" db:"name"`
|
||||
RootPath string `json:"-" db:"root_path"` // never expose filesystem path
|
||||
MaxBytes *int64 `json:"max_bytes,omitempty" db:"max_bytes"`
|
||||
Status string `json:"status" db:"status"`
|
||||
|
||||
// Computed fields (not DB columns)
|
||||
FileCount int `json:"file_count,omitempty"`
|
||||
TotalBytes int64 `json:"total_bytes,omitempty"`
|
||||
}
|
||||
|
||||
// WorkspacePatch holds optional fields for updating a workspace.
|
||||
type WorkspacePatch struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
MaxBytes *int64 `json:"max_bytes,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// WorkspaceFile represents metadata for a single file or directory in a workspace.
|
||||
type WorkspaceFile struct {
|
||||
ID string `json:"id" db:"id"`
|
||||
WorkspaceID string `json:"workspace_id" db:"workspace_id"`
|
||||
Path string `json:"path" db:"path"`
|
||||
IsDirectory bool `json:"is_directory" db:"is_directory"`
|
||||
ContentType string `json:"content_type,omitempty" db:"content_type"`
|
||||
SizeBytes int64 `json:"size_bytes" db:"size_bytes"`
|
||||
SHA256 string `json:"sha256,omitempty" db:"sha256"`
|
||||
CreatedAt time.Time `json:"created_at" db:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
|
||||
}
|
||||
|
||||
// WorkspaceStats holds aggregate storage metrics for a workspace.
|
||||
type WorkspaceStats struct {
|
||||
WorkspaceID string `json:"workspace_id"`
|
||||
FileCount int `json:"file_count"`
|
||||
DirCount int `json:"dir_count"`
|
||||
TotalBytes int64 `json:"total_bytes"`
|
||||
MaxBytes *int64 `json:"max_bytes,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user