tercul-backend/internal/app/category/commands.go
Damir Mukimov d50722dad5
Some checks failed
Test / Integration Tests (push) Successful in 4s
Build / Build Binary (push) Failing after 2m9s
Docker Build / Build Docker Image (push) Failing after 2m32s
Test / Unit Tests (push) Failing after 3m12s
Lint / Go Lint (push) Failing after 1m0s
Refactor ID handling to use UUIDs across the application
- Updated database models and repositories to replace uint IDs with UUIDs.
- Modified test fixtures to generate and use UUIDs for authors, translations, users, and works.
- Adjusted mock implementations to align with the new UUID structure.
- Ensured all relevant functions and methods are updated to handle UUIDs correctly.
- Added necessary imports for UUID handling in various files.
2025-12-27 00:33:34 +01:00

69 lines
1.8 KiB
Go

package category
import (
"context"
"tercul/internal/domain"
"github.com/google/uuid"
)
// CategoryCommands contains the command handlers for the category aggregate.
type CategoryCommands struct {
repo domain.CategoryRepository
}
// NewCategoryCommands creates a new CategoryCommands handler.
func NewCategoryCommands(repo domain.CategoryRepository) *CategoryCommands {
return &CategoryCommands{repo: repo}
}
// CreateCategoryInput represents the input for creating a new category.
type CreateCategoryInput struct {
Name string
Description string
ParentID *uuid.UUID
}
// CreateCategory creates a new category.
func (c *CategoryCommands) CreateCategory(ctx context.Context, input CreateCategoryInput) (*domain.Category, error) {
category := &domain.Category{
Name: input.Name,
Description: input.Description,
ParentID: input.ParentID,
}
err := c.repo.Create(ctx, category)
if err != nil {
return nil, err
}
return category, nil
}
// UpdateCategoryInput represents the input for updating an existing category.
type UpdateCategoryInput struct {
ID uuid.UUID
Name string
Description string
ParentID *uuid.UUID
}
// UpdateCategory updates an existing category.
func (c *CategoryCommands) UpdateCategory(ctx context.Context, input UpdateCategoryInput) (*domain.Category, error) {
category, err := c.repo.GetByID(ctx, input.ID)
if err != nil {
return nil, err
}
category.Name = input.Name
category.Description = input.Description
category.ParentID = input.ParentID
err = c.repo.Update(ctx, category)
if err != nil {
return nil, err
}
return category, nil
}
// DeleteCategory deletes a category by ID.
func (c *CategoryCommands) DeleteCategory(ctx context.Context, id uuid.UUID) error {
return c.repo.Delete(ctx, id)
}