Documentation
¶
Overview ¶
Package toolcategory defines the ToolCategory domain entity. Tool categories can be platform-wide (builtin) or tenant-specific (custom).
Index ¶
- type Filter
- type Repository
- type ToolCategory
- func (tc *ToolCategory) CanBeModifiedByTenant(tenantID shared.ID) bool
- func (tc *ToolCategory) IsPlatformCategory() bool
- func (tc *ToolCategory) IsTenantCategory() bool
- func (tc *ToolCategory) Update(displayName string, description string, icon string, color string) error
- func (tc *ToolCategory) Validate() error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Filter ¶
type Filter struct {
TenantID *shared.ID // Include tenant custom categories
IsBuiltin *bool // Filter by builtin status
Search string // Search by name or display name
}
Filter defines filter options for listing categories.
type Repository ¶
type Repository interface {
// Create creates a new tool category.
Create(ctx context.Context, category *ToolCategory) error
// GetByID returns a category by ID.
GetByID(ctx context.Context, id shared.ID) (*ToolCategory, error)
// GetByName returns a category by name within a scope (tenant or platform).
// If tenantID is nil, it looks for platform category.
GetByName(ctx context.Context, tenantID *shared.ID, name string) (*ToolCategory, error)
// List returns categories matching the filter with pagination.
// Always includes platform (builtin) categories.
// If filter.TenantID is set, also includes that tenant's custom categories.
List(ctx context.Context, filter Filter, page pagination.Pagination) (pagination.Result[*ToolCategory], error)
// ListAll returns all categories for a tenant context (platform + tenant custom).
// This is a simpler method without pagination for dropdowns/selects.
ListAll(ctx context.Context, tenantID *shared.ID) ([]*ToolCategory, error)
// Update updates an existing category.
Update(ctx context.Context, category *ToolCategory) error
// Delete deletes a category by ID.
// Only tenant custom categories can be deleted.
Delete(ctx context.Context, id shared.ID) error
// ExistsByName checks if a category with the given name exists in the scope.
ExistsByName(ctx context.Context, tenantID *shared.ID, name string) (bool, error)
// CountByTenant returns the number of custom categories for a tenant.
CountByTenant(ctx context.Context, tenantID shared.ID) (int64, error)
}
Repository defines the interface for tool category persistence.
type ToolCategory ¶
type ToolCategory struct {
ID shared.ID
TenantID *shared.ID // nil = platform category, UUID = tenant custom category
Name string // Unique slug: 'sast', 'my-custom-cat'
DisplayName string // Display: 'SAST', 'My Custom Category'
Description string
// UI customization
Icon string // Lucide icon name
Color string // Badge color
// Status
IsBuiltin bool
SortOrder int
// Audit
CreatedBy *shared.ID
CreatedAt time.Time
UpdatedAt time.Time
}
ToolCategory represents a tool category. Platform categories (TenantID = nil, IsBuiltin = true) are available to all tenants. Tenant custom categories (TenantID = UUID, IsBuiltin = false) are private to that tenant.
func NewPlatformCategory ¶
func NewPlatformCategory( name string, displayName string, description string, icon string, color string, sortOrder int, ) (*ToolCategory, error)
NewPlatformCategory creates a new platform (builtin) category.
func NewTenantCategory ¶
func NewTenantCategory( tenantID shared.ID, createdBy shared.ID, name string, displayName string, description string, icon string, color string, ) (*ToolCategory, error)
NewTenantCategory creates a new tenant-specific (custom) category.
func (*ToolCategory) CanBeModifiedByTenant ¶
func (tc *ToolCategory) CanBeModifiedByTenant(tenantID shared.ID) bool
CanBeModifiedByTenant checks if a tenant can modify this category. Only tenant's own custom categories can be modified.
func (*ToolCategory) IsPlatformCategory ¶
func (tc *ToolCategory) IsPlatformCategory() bool
IsPlatformCategory returns true if this is a platform (builtin) category.
func (*ToolCategory) IsTenantCategory ¶
func (tc *ToolCategory) IsTenantCategory() bool
IsTenantCategory returns true if this is a tenant custom category.
func (*ToolCategory) Update ¶
func (tc *ToolCategory) Update( displayName string, description string, icon string, color string, ) error
Update updates the category fields.
func (*ToolCategory) Validate ¶
func (tc *ToolCategory) Validate() error
Validate validates the category data.