60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package cache
|
|
|
|
import (
|
|
"context"
|
|
"github.com/fthvgb1/wp-go/app/pkg/dao"
|
|
"github.com/fthvgb1/wp-go/app/pkg/logs"
|
|
"github.com/fthvgb1/wp-go/app/pkg/models"
|
|
"github.com/fthvgb1/wp-go/cache"
|
|
"github.com/fthvgb1/wp-go/cache/cachemanager"
|
|
"github.com/fthvgb1/wp-go/helper"
|
|
"github.com/fthvgb1/wp-go/helper/number"
|
|
"time"
|
|
)
|
|
|
|
func RecentComments(ctx context.Context, n int) (r []models.Comments) {
|
|
nn := number.Max(n, 10)
|
|
r, err := cachemanager.GetVarVal[[]models.Comments]("recentComments", ctx, time.Second, ctx, nn)
|
|
if len(r) > n {
|
|
r = r[0:n]
|
|
}
|
|
logs.IfError(err, "get recent comment fail")
|
|
return
|
|
}
|
|
|
|
func PostComments(ctx context.Context, Id uint64) ([]models.Comments, error) {
|
|
ids, err := cachemanager.Get[[]uint64]("PostCommentsIds", ctx, Id, time.Second)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return GetCommentDataByIds(ctx, ids)
|
|
}
|
|
|
|
func GetCommentById(ctx context.Context, id uint64) (models.Comments, error) {
|
|
return cachemanager.Get[models.Comments]("postCommentData", ctx, id, time.Second)
|
|
}
|
|
|
|
func GetCommentDataByIds(ctx context.Context, ids []uint64) ([]models.Comments, error) {
|
|
return cachemanager.GetMultiple[models.Comments]("postCommentData", ctx, ids, time.Second)
|
|
}
|
|
|
|
func NewCommentCache() *cache.MapCache[string, string] {
|
|
r, _ := cachemanager.GetMapCache[string, string]("NewComment")
|
|
return r
|
|
}
|
|
|
|
func PostTopComments(ctx context.Context, _ string, a ...any) (helper.PaginationData[uint64], error) {
|
|
postId := a[0].(uint64)
|
|
page := a[1].(int)
|
|
limit := a[2].(int)
|
|
total := a[3].(int)
|
|
v, total, err := dao.PostCommentsIds(ctx, postId, page, limit, total)
|
|
if err != nil {
|
|
return helper.PaginationData[uint64]{}, err
|
|
}
|
|
return helper.PaginationData[uint64]{
|
|
Data: v,
|
|
TotalRaw: total,
|
|
}, nil
|
|
}
|