mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 02:18:26 +00:00
Adopt restserver to new collective-id
This commit is contained in:
@ -28,7 +28,6 @@ trait OCollective[F[_]] {
|
||||
|
||||
def updateSettings(
|
||||
collective: CollectiveId,
|
||||
collectiveName: Ident,
|
||||
settings: OCollective.Settings
|
||||
): F[AddResult]
|
||||
|
||||
@ -147,7 +146,6 @@ object OCollective {
|
||||
|
||||
def updateSettings(
|
||||
collectiveId: CollectiveId,
|
||||
collectiveName: Ident,
|
||||
sett: Settings
|
||||
): F[AddResult] =
|
||||
store
|
||||
|
@ -40,10 +40,10 @@ trait ODownloadAll[F[_]] {
|
||||
def submit(accountId: AccountInfo, req: DownloadRequest): F[DownloadSummary]
|
||||
|
||||
/** Given the id from the summary, cancels a running job. */
|
||||
def cancelDownload(accountId: AccountId, id: Ident): F[OJob.JobCancelResult]
|
||||
def cancelDownload(cid: CollectiveId, id: Ident): F[OJob.JobCancelResult]
|
||||
|
||||
/** Returns the file if it is present, given a summary id. */
|
||||
def getFile(collective: Ident, id: Ident): F[Option[DownloadAllFile[F]]]
|
||||
def getFile(collective: CollectiveId, id: Ident): F[Option[DownloadAllFile[F]]]
|
||||
|
||||
/** Deletes a download archive given it's id. */
|
||||
def deleteFile(id: Ident): F[Unit]
|
||||
@ -122,7 +122,7 @@ object ODownloadAll {
|
||||
else DownloadState.NotPresent
|
||||
} yield state
|
||||
|
||||
def getFile(collective: Ident, id: Ident) =
|
||||
def getFile(collective: CollectiveId, id: Ident) =
|
||||
OptionT(store.transact(RDownloadQuery.findById(id)))
|
||||
.map(_._2)
|
||||
.map(md =>
|
||||
@ -156,10 +156,10 @@ object ODownloadAll {
|
||||
_ <- store.fileRepo.delete(fkey)
|
||||
} yield ()
|
||||
|
||||
def cancelDownload(accountId: AccountId, id: Ident) =
|
||||
def cancelDownload(cid: CollectiveId, id: Ident) =
|
||||
OptionT(store.transact(RDownloadQuery.findById(id)))
|
||||
.flatMap(t => OptionT(store.transact(RJob.findNonFinalByTracker(t._1.id))))
|
||||
.semiflatMap(job => jobs.cancelJob(job.id, accountId.collective))
|
||||
.semiflatMap(job => jobs.cancelJob(job.id, UserTaskScope.collective(cid)))
|
||||
.getOrElse(JobCancelResult.jobNotFound)
|
||||
}
|
||||
|
||||
|
@ -30,10 +30,10 @@ trait OFolder[F[_]] {
|
||||
userId: Ident
|
||||
): F[Option[OFolder.FolderDetail]]
|
||||
|
||||
/** Adds a new folder. If `login` is non-empty, the `folder.user` property is ignored
|
||||
* and the user-id is determined by the given login name.
|
||||
/** Adds a new folder. If `login` is non-empty, the `folder.owner` property is ignored
|
||||
* and its value is determined by the given login name.
|
||||
*/
|
||||
def add(folder: RFolder, userId: Option[Ident]): F[AddResult]
|
||||
def add(folder: RFolder, login: Option[Ident]): F[AddResult]
|
||||
|
||||
def changeName(
|
||||
folder: Ident,
|
||||
@ -123,11 +123,11 @@ object OFolder {
|
||||
): F[Option[FolderDetail]] =
|
||||
store.transact(QFolder.findById(id, collectiveId, userId))
|
||||
|
||||
def add(folder: RFolder, userId: Option[Ident]): F[AddResult] = {
|
||||
val insert = userId match {
|
||||
case Some(uid) =>
|
||||
def add(folder: RFolder, login: Option[Ident]): F[AddResult] = {
|
||||
val insert = login match {
|
||||
case Some(userLogin) =>
|
||||
for {
|
||||
user <- RUser.findById(uid, folder.collectiveId.some)
|
||||
user <- RUser.findByLogin(userLogin, folder.collectiveId.some)
|
||||
s = user.map(u => folder.copy(owner = u.uid)).getOrElse(folder)
|
||||
n <- RFolder.insert(s)
|
||||
} yield n
|
||||
|
@ -9,11 +9,11 @@ package docspell.backend.ops
|
||||
import cats.data.OptionT
|
||||
import cats.effect._
|
||||
import cats.implicits._
|
||||
|
||||
import docspell.backend.ops.OJob.{CollectiveQueueState, JobCancelResult}
|
||||
import docspell.common._
|
||||
import docspell.pubsub.api.PubSubT
|
||||
import docspell.scheduler.msg.JobDone
|
||||
import docspell.scheduler.usertask.UserTaskScope
|
||||
import docspell.store.Store
|
||||
import docspell.store.UpdateResult
|
||||
import docspell.store.queries.QJobQueue
|
||||
@ -21,13 +21,13 @@ import docspell.store.records.{RJob, RJobLog}
|
||||
|
||||
trait OJob[F[_]] {
|
||||
|
||||
def queueState(collective: Ident, maxResults: Int): F[CollectiveQueueState]
|
||||
def queueState(collective: UserTaskScope, maxResults: Int): F[CollectiveQueueState]
|
||||
|
||||
def cancelJob(id: Ident, collective: Ident): F[JobCancelResult]
|
||||
def cancelJob(id: Ident, collective: UserTaskScope): F[JobCancelResult]
|
||||
|
||||
def setPriority(id: Ident, collective: Ident, prio: Priority): F[UpdateResult]
|
||||
def setPriority(id: Ident, collective: UserTaskScope, prio: Priority): F[UpdateResult]
|
||||
|
||||
def getUnfinishedJobCount(collective: Ident): F[Int]
|
||||
def getUnfinishedJobCount(collective: UserTaskScope): F[Int]
|
||||
}
|
||||
|
||||
object OJob {
|
||||
@ -61,20 +61,34 @@ object OJob {
|
||||
Resource.pure[F, OJob[F]](new OJob[F] {
|
||||
private[this] val logger = docspell.logging.getLogger[F]
|
||||
|
||||
def queueState(collective: Ident, maxResults: Int): F[CollectiveQueueState] =
|
||||
private def scopeToGroup(s: UserTaskScope) =
|
||||
s.collectiveId
|
||||
.map(_.valueAsIdent)
|
||||
.getOrElse(DocspellSystem.taskGroup)
|
||||
|
||||
def queueState(
|
||||
collective: UserTaskScope,
|
||||
maxResults: Int
|
||||
): F[CollectiveQueueState] =
|
||||
store
|
||||
.transact(
|
||||
QJobQueue.queueStateSnapshot(collective, maxResults.toLong)
|
||||
QJobQueue.queueStateSnapshot(scopeToGroup(collective), maxResults.toLong)
|
||||
)
|
||||
.map(t => JobDetail(t._1, t._2))
|
||||
.compile
|
||||
.toVector
|
||||
.map(CollectiveQueueState)
|
||||
|
||||
def setPriority(id: Ident, collective: Ident, prio: Priority): F[UpdateResult] =
|
||||
UpdateResult.fromUpdate(store.transact(RJob.setPriority(id, collective, prio)))
|
||||
def setPriority(
|
||||
id: Ident,
|
||||
collective: UserTaskScope,
|
||||
prio: Priority
|
||||
): F[UpdateResult] =
|
||||
UpdateResult.fromUpdate(
|
||||
store.transact(RJob.setPriority(id, scopeToGroup(collective), prio))
|
||||
)
|
||||
|
||||
def cancelJob(id: Ident, collective: Ident): F[JobCancelResult] = {
|
||||
def cancelJob(id: Ident, collective: UserTaskScope): F[JobCancelResult] = {
|
||||
def remove(job: RJob): F[JobCancelResult] =
|
||||
for {
|
||||
n <- store.transact(RJob.delete(job.id))
|
||||
@ -99,7 +113,9 @@ object OJob {
|
||||
}
|
||||
|
||||
(for {
|
||||
job <- OptionT(store.transact(RJob.findByIdAndGroup(id, collective)))
|
||||
job <- OptionT(
|
||||
store.transact(RJob.findByIdAndGroup(id, scopeToGroup(collective)))
|
||||
)
|
||||
result <- OptionT.liftF(
|
||||
if (job.isInProgress) tryCancel(job)
|
||||
else remove(job)
|
||||
@ -108,7 +124,7 @@ object OJob {
|
||||
.getOrElse(JobCancelResult.jobNotFound)
|
||||
}
|
||||
|
||||
def getUnfinishedJobCount(collective: Ident): F[Int] =
|
||||
store.transact(RJob.getUnfinishedCount(collective))
|
||||
def getUnfinishedJobCount(collective: UserTaskScope): F[Int] =
|
||||
store.transact(RJob.getUnfinishedCount(scopeToGroup(collective)))
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user