package system

import (
	"context"
	"time"
)

type SystemParameter struct {
	ID             uint
	CreatedAt      time.Time
	UpdatedAt      time.Time
	Name           string
	Key            string
	Value          string
	Desc           string
	StartCreatedAt *time.Time
	EndCreatedAt   *time.Time
}

type ParameterRepo interface {
	CreateParameter(context.Context, *SystemParameter) error
	UpdateParameter(context.Context, *SystemParameter) error
	DeleteParameters(context.Context, []string) error
	FindParameterByID(context.Context, string) (*SystemParameter, error)
	FindParameterByKey(context.Context, string) (*SystemParameter, error)
	ListParameters(context.Context, int, int, *SystemParameter) ([]*SystemParameter, int64, error)
}

type ParameterUsecase struct{ ParameterRepo }

func NewParameterUsecase(repo ParameterRepo) *ParameterUsecase {
	return &ParameterUsecase{ParameterRepo: repo}
}
