package service

import (
	"context"

	"github.com/go-sonic/sonic/consts"
	"github.com/go-sonic/sonic/model/entity"
	"github.com/go-sonic/sonic/model/param"
)

type PostService interface {
	BasePostService
	Page(ctx context.Context, postQuery param.PostQuery) ([]*entity.Post, int64, error)
	IncreaseLike(ctx context.Context, postID int32) error
	GetPrevPosts(ctx context.Context, post *entity.Post, size int) ([]*entity.Post, error)
	GetNextPosts(ctx context.Context, post *entity.Post, size int) ([]*entity.Post, error)
	Create(ctx context.Context, postParam *param.Post) (*entity.Post, error)
	Update(ctx context.Context, postID int32, postParam *param.Post) (*entity.Post, error)
	CountByStatus(ctx context.Context, status consts.PostStatus) (int64, error)
	CountVisit(ctx context.Context) (int64, error)
	Preview(ctx context.Context, postID int32) (string, error)
	CountLike(ctx context.Context) (int64, error)
}