package me.qwq.doghouse.interfaces;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import me.qwq.doghouse.enums.PostTypeEnum;

/**
 * PostType Config，如 SiteConfig, TweetConfig 和 WikiConfig
 * <p>提供一些页面渲染相关的内容
 * @author Doghole
 *
 */
@Component
public interface IPostTypeConfig<T extends IPostTypeConfig<T>> {
    
    String getName();
    
    String getDescription();
    
    Long getPageSize();
    
    Long getCommentPageSize();
    
    Long getRecentSize();
    
    Long getPopularSize();
    
    Long getTagSize();
    
    Long getRecentCommentSize();
    
    Integer getRecentCommentLevel();
    
    PostTypeEnum getPostType();
    
    /**
     * 对应页面前缀，用于分页器链接、主页链接及自动拼接前端页面的地方
     * @return
     */
    String getMappingPrefix();
    
    /**
     * 对应模板文件下 blog/{theme}/{templatePrefix} 的位置
     * @return
     */
    default String getTemplatePrefix() {
        return "";
    }
    
    /**
     * 是否开启该模式
     * @return
     */
    Boolean getEnabled();
    
    /**
     * 是否加入到 feed. 先占位，现在只有 POST 有 feed
     * @return
     */
    Boolean getAddToFeed();
    
    /**
     * 是否加入到站点地图
     * @return
     */
    Boolean getAddToSitemap();
    
    /**
     * 获取首页标题，由 name 和 description 组成<p>
     * 如 name = "Doghouse", description = "狗窝", 则 title = "Doghouse - 狗窝"
     * @return
     */
    default String getIndexTitle() {
        StringBuilder sb = new StringBuilder();
        if (StringUtils.isNotEmpty(getName())) {
            sb.append(getName()).append(" - ");
        }
        if (StringUtils.isNotEmpty(getDescription())) {
            sb.append(getDescription());
        }
        else {
            sb.append("首页");
        }
        return sb.toString();
    }
    
}
