package airrescuechecklist

import "context"

type TxRepository interface {
	CreateChecklist(ctx context.Context, row *AirRescuerChecklist) error
	NextChecklistPosition(ctx context.Context, hemsBaseID []byte, scopeCode string) (int, error)
	LockChecklistByID(ctx context.Context, id []byte) (*AirRescuerChecklist, error)
	UpdateChecklist(ctx context.Context, row *AirRescuerChecklist) error
	SoftDeleteChecklist(ctx context.Context, id []byte, deletedBy []byte) error
	SoftDeleteItemsByChecklistID(ctx context.Context, checklistID []byte, deletedBy []byte) error

	CreateChecklistItem(ctx context.Context, row *AirRescuerChecklistItem) error
	CreateChecklistItems(ctx context.Context, rows []AirRescuerChecklistItem) error
	NextChecklistItemPosition(ctx context.Context, checklistID []byte) (int, error)
	LockChecklistItemByID(ctx context.Context, id []byte) (*AirRescuerChecklistItem, error)
	UpdateChecklistItem(ctx context.Context, row *AirRescuerChecklistItem) error
	SoftDeleteChecklistItem(ctx context.Context, id []byte, deletedBy []byte) error
}

type Repository interface {
	InTx(ctx context.Context, fn func(txRepo TxRepository) error) error
	GetChecklistByID(ctx context.Context, id []byte) (*ChecklistHeaderView, error)
	GetChecklistItemByID(ctx context.Context, id []byte) (*ChecklistItemView, error)
	ListChecklistHeaders(ctx context.Context, filter ChecklistHeaderFilter) ([]ChecklistHeaderView, error)
	ListChecklistItemsByChecklistIDs(ctx context.Context, checklistIDs [][]byte) ([]ChecklistItemView, error)
	ListHEMSBases(ctx context.Context, filter HEMSBaseFilter) ([]HEMSBaseView, error)
}
