package domain

import (
	"context"
	"time"

	"github.com/google/uuid"
)

type TestType struct {
	ID          uuid.UUID `json:"id"`
	Code        string    `json:"code"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	Category    string    `json:"category"`
	Config      any       `json:"config"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

type TestTypeRepository interface {
	Create(ctx context.Context, tt *TestType) error
	GetByID(ctx context.Context, id uuid.UUID) (*TestType, error)
	GetAll(ctx context.Context) ([]*TestType, error)
	Update(ctx context.Context, tt *TestType) error
	Delete(ctx context.Context, id uuid.UUID) error
}

type TestTypeUsecase interface {
	Create(ctx context.Context, tt *TestType) error
	GetByID(ctx context.Context, id uuid.UUID) (*TestType, error)
	GetAll(ctx context.Context) ([]*TestType, error)
	Update(ctx context.Context, tt *TestType) error
	Delete(ctx context.Context, id uuid.UUID) error
}
