base/src/sqwl/cms/datamodel.scala
author Tomas Zeman <tzeman@volny.cz>
Tue, 15 Jan 2019 12:25:19 +0100
changeset 27 8529ce302f7c
parent 7 50a354e5bda4
child 33 fa0f19a74283
permissions -rw-r--r--
Article.rank: sort articles by category/tag w.r.t. rank

package sqwl.cms

import java.nio.file.Path

trait Named {
  def name: String
}

trait Navigable {
  def pathSegment: String
}

trait iCategory extends Named with Navigable

trait iTag extends Named with Navigable

trait iArticle extends Navigable {
  def title: String
  def htmlContent: String
  def category: Option[iCategory]
  def tags: Seq[iTag]
  def assets: Path
  def rank: Int
}

trait iContent {
  def appTitle: String
  def appTitleShort: String
  def icon: (String, Path)
  def publicAssets: Path
  def styleSheet: (String, Path)
  def articlesByTag(t: iTag): Seq[iArticle]
  def articlesByCategory(c: iCategory): Seq[iArticle]
  def tags: Seq[iTag]
  def categories: Seq[iCategory]
  def articleByPath(path: String): Option[iArticle]
  def categoryByPath(path: String): Option[iCategory]
  def tagByPath(path: String): Option[iTag]
}