// monorepo/cloud/maplefile-backend/internal/maplefile/domain/storageusageevent/interface.go
package storageusageevent

import (
	"context"
	"time"

	"github.com/gocql/gocql"
)

// StorageUsageEventRepository defines the interface for storage usage events
type StorageUsageEventRepository interface {
	Create(ctx context.Context, event *StorageUsageEvent) error
	CreateMany(ctx context.Context, events []*StorageUsageEvent) error
	GetByUserAndDay(ctx context.Context, userID gocql.UUID, eventDay time.Time) ([]*StorageUsageEvent, error)
	GetByUserDateRange(ctx context.Context, userID gocql.UUID, startDay, endDay time.Time) ([]*StorageUsageEvent, error)
	DeleteByUserAndDay(ctx context.Context, userID gocql.UUID, eventDay time.Time) error
	DeleteByUserID(ctx context.Context, userID gocql.UUID) error
	GetLast7DaysEvents(ctx context.Context, userID gocql.UUID) ([]*StorageUsageEvent, error)
	GetLastNDaysEvents(ctx context.Context, userID gocql.UUID, days int) ([]*StorageUsageEvent, error)
	GetMonthlyEvents(ctx context.Context, userID gocql.UUID, year int, month time.Month) ([]*StorageUsageEvent, error)
	GetYearlyEvents(ctx context.Context, userID gocql.UUID, year int) ([]*StorageUsageEvent, error)
}
