camilosampedro/Aton

View on GitHub
app/dao/ComputerDAO.scala

Summary

Maintainability
A
0 mins
Test Coverage
package dao

import com.google.inject.ImplementedBy
import dao.impl.ComputerDAOImpl
import model.{Computer, ComputerState, ConnectedUser}
import services.state.ActionState

import scala.concurrent.Future

/**
  * Performs Computer database actions.
  *
  * @author Camilo Sampedro <camilo.sampedro@udea.edu.co>
  */
@ImplementedBy(classOf[ComputerDAOImpl])
trait ComputerDAO {
  def get(severalComputers: List[String]): Future[Seq[Computer]]

  def listAllSimple: Future[Seq[Computer]]


  /**
    * Adds a new computer
    *
    * @param computer Computer to add
    * @return Result String message
    */
  def add(computer: Computer): Future[ActionState]

  /**
    * Gets a computer based on its IP
    *
    * @param ip Computer's IP
    * @return Some Computer found or None if its not found.
    */
  def get(ip: String): Future[Option[Computer]]

  def getWithStatus(severalIps: List[String]): Future[Seq[(Computer, Option[ComputerState], Option[ConnectedUser])]]

  def getWithStatus(ip: String): Future[Seq[(Computer, Option[ComputerState], Option[ConnectedUser])]]

  /**
    * Deletes a computer from database
    *
    * @param ip Computer's IP
    * @return Operation result
    */
  def delete(ip: String): Future[ActionState]

  /**
    * Lists all computers in the database.
    *
    * @return All computers found.
    */
  def listAll: Future[Seq[(Computer, Option[ComputerState], Option[ConnectedUser])]]

  def edit(computer: Computer): Future[ActionState]
}