package biz

import (
	"context"
	"time"
)

type MediaFile struct {
	ID            uint
	CreatedAt     time.Time
	UpdatedAt     time.Time
	Name          string
	CategoryID    int
	URL, Tag, Key string
	Size          int64
	Mime, MD5     string
	UserID        uint
}

type MediaFilter struct {
	Page, PageSize int
	Keyword        string
	CategoryID     int
	Tag            string
	UserID         uint
	StartCreatedAt time.Time
	EndCreatedAt   time.Time
	OrderKey       string
	Desc           bool
}

type AttachmentCategory struct {
	ID        uint
	CreatedAt time.Time
	UpdatedAt time.Time
	Name      string
	ParentID  uint
	Children  []*AttachmentCategory
}

type MediaMetadataRepo interface {
	CreateMedia(context.Context, *MediaFile) error
	FindMedia(context.Context, uint) (*MediaFile, error)
	FindMediaByHash(context.Context, uint, string) (*MediaFile, error)
	ListMedia(context.Context, MediaFilter) ([]*MediaFile, int64, error)
	UpdateMediaName(context.Context, uint, string) error
	DeleteMedia(context.Context, uint) error
	MediaKeyReferences(context.Context, string) (int64, error)
	CreateMediaBatch(context.Context, []*MediaFile) error
	SaveCategory(context.Context, *AttachmentCategory) error
	DeleteCategory(context.Context, uint) error
	ListCategories(context.Context) ([]*AttachmentCategory, error)
}
