/**
 * 文章
 * 适用于通知、文章、新闻等内容
 *
 */
@extendData
@moduleName(cms)
entity Article {
	title String /** 标题 */
	createAt ZonedDateTime /** 添加时间 */
	intro String /** 简要标题 */
	pageViews Long /** 浏览次数 */
	status ArticleStatus /** 状态 */
	top Boolean /** 置顶 */
	hot Boolean /** 热门 */
	content TextBlob /** 详细内容 */
	specification TextBlob /** 规格参数 */
	packaging TextBlob /** 包装信息 */
}

/** 栏目 */
@extendData
entity SiteColumn {
	title String /** 标题 */
	code String /** 代码标识 */
}

/** 模板 */
entity Template {
	name String /** 名称 */
}

/** 模板文件 */
entity TemplateFile {
	type TemplateFileType /** 模板类型 */
}

/** 导航 */
entity Navigation {
	title String /** 标题 */
	url String /** 连接地址 */
	icon String /** ICON */
	order Integer /** 排序 */
}

enum NavLocation {
    /** 头部 */
	HEADER,
    /** 尾部 */
	FOOTER,
    /** 友情连接 */
	FRIEND_LINK
}

/**
 * Many to one relationship.
 */
relationship ManyToOne {

	/** 封面图 */
	Article{pic(url)}
	to
	UploadImage

	/** 发布人 */
	Article{publisher(firstName)}
	to
	User

	/** 栏目图片 */
	SiteColumn{pic(url)}
	to
	UploadImage
	/** LOGO */
	FriendLink{logo(url)}
	 to
	UploadImage
	/** 图片 */
	Navigation{image(url)}
	 to
	UploadImage

	/** LOGO */
	SiteInfo{logo(url)}
	 to
	UploadImage
}

/**
 * One to many relationship.
 */
relationship OneToMany {
	/** 文章列表 */
	SiteColumn{articles(title)}
	to
	/** 所属栏目 */
	Article{column(title)}

	/** 子栏目 */
	SiteColumn{children(title)}
	to
	/** 父栏目 */
	SiteColumn{parent(title)}

	/** 子节点 */
	Navigation{children(title)}
	to
	/** 上层 */
	Navigation{parent(title)}

	/** 图片集  config: { "unidirection": true } */
	Article{images(url)}
	to
	/** 所属文章 config: { "unidirectionSkip": true } */
	UploadImage{article(title)}

	/** 附件 config: { "unidirection": true }  */
	Article{files(url)}
	to
	/** 所属文章 config: { "unidirectionSkip": true } */
	UploadFile{article(title)}

}

enum TemplateFileType {
    /** 首页模板 */
	INDEX,
    /** 详情模板 */
    ARTICLE_DETAIL,
    /** 列表模板 */
    ARTICLE_LIST,
    /** 关于模板 */
    ABOUT
}

enum ArticleStatus {
    /** 新增 */
	ADD,
    /** 成功 */
    SUCCESS,
    /** 拒绝 */
    REJECT
}
service all with serviceClass
filter *
clientRootFolder Article, SiteColumn, Template, TemplateFile, Navigation, FriendLink  with cms
dto Article, SiteColumn, Template, TemplateFile, Navigation, FriendLink with mapstruct
paginate Article, SiteColumn, Template, TemplateFile, Navigation, FriendLink with pagination
//<%_ if (searchEngine === 'elasticsearch') { _%>
search Article, SiteColumn, Template, TemplateFile, Navigation, FriendLink with elasticsearch
//<%_ } _%>

