Skip to content

Commit

Permalink
myndlalib
Browse files Browse the repository at this point in the history
  • Loading branch information
jnatten committed Dec 4, 2023
1 parent 824556e commit 5db798e
Show file tree
Hide file tree
Showing 47 changed files with 369 additions and 373 deletions.
3 changes: 3 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ lazy val `learningpath-api` = Module.setup(
language,
common,
search,
myndla,
testWith(scalatestsuite)
)
)
Expand Down Expand Up @@ -123,6 +124,7 @@ lazy val `myndla-api` = Module.setup(
mapping,
language,
common,
myndla,
testWith(scalatestsuite)
)
)
Expand All @@ -136,6 +138,7 @@ lazy val mapping = Module.setup(project in file("./mapping/"), mappinglib
lazy val validation = Module.setup(project in file("./validation/"), validationlib, deps = Seq(common))
lazy val search =
Module.setup(project in file("./search/"), searchlib, deps = Seq(testWith(scalatestsuite), language, common))
lazy val myndla = Module.setup(project in file("./myndla/"), myndlalib, deps = Seq(common, network))

lazy val `integration-tests` = Module.setup(
project in file("./integration-tests/"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ package no.ndla.learningpathapi
import com.zaxxer.hikari.HikariDataSource
import no.ndla.common.Clock
import no.ndla.common.configuration.BaseComponentRegistry
import no.ndla.common.model.domain.myndla.{DBFolder, DBFolderResource, DBMyNDLAUser, DBResource}
import no.ndla.learningpathapi.controller.{
ConfigController,
FolderController,
Expand All @@ -24,10 +23,7 @@ import no.ndla.learningpathapi.controller.{
}
import no.ndla.learningpathapi.integration._
import no.ndla.learningpathapi.model.api.ErrorHelpers
import no.ndla.learningpathapi.model.domain.{
DBLearningPath,
DBLearningStep
}
import no.ndla.learningpathapi.model.domain.{DBLearningPath, DBLearningStep}
import no.ndla.learningpathapi.model.domain.config.DBConfigMeta
import no.ndla.learningpathapi.repository.{
ConfigRepository,
Expand All @@ -45,6 +41,7 @@ import no.ndla.learningpathapi.validation.{
TitleValidator,
UrlValidator
}
import no.ndla.myndla.model.domain.{DBFolder, DBFolderResource, DBMyNDLAUser, DBResource}
import no.ndla.network.NdlaClient
import no.ndla.network.clients.{FeideApiClient, RedisClient}
import no.ndla.network.scalatra.{NdlaControllerBase, NdlaSwaggerSupport}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@
package no.ndla.learningpathapi.controller

import no.ndla.common.model.NDLADate
import no.ndla.common.model.api.{Folder, FolderSortRequest, NewFolder, NewResource, Resource, UpdatedFolder, UpdatedResource}
import no.ndla.learningpathapi.model.api.{
Error,
ValidationError
}
import no.ndla.learningpathapi.model.api.{Error, ValidationError}
import no.ndla.common.model.domain.myndla.FolderSortObject.{FolderSorting, ResourceSorting, RootFolderSorting}
import no.ndla.learningpathapi.service.{ConverterService, ReadService, UpdateService}
import no.ndla.network.scalatra.NdlaSwaggerSupport
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ package no.ndla.learningpathapi.controller

import cats.implicits._
import no.ndla.common.errors.{AccessDeniedException, ValidationException}
import no.ndla.common.model.api.ImportReport
import no.ndla.common.model.domain.myndla.{FolderStatus, InvalidStatusException}
import no.ndla.learningpathapi.integration.DataSource
import no.ndla.learningpathapi.model.api.{Error, ErrorHelpers, ValidationError}
import no.ndla.learningpathapi.model.domain._
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

package no.ndla.learningpathapi.controller

import no.ndla.common.model.api.Stats
import no.ndla.learningpathapi.Props
import no.ndla.learningpathapi.model.api.Error
import no.ndla.learningpathapi.service.ReadService
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
package no.ndla.learningpathapi.controller

import no.ndla.common.model.NDLADate
import no.ndla.common.model.api.ExportedUserData
import no.ndla.learningpathapi.model.api.{Error, MyNDLAUser, UpdatedMyNDLAUser, ValidationError}
import no.ndla.learningpathapi.model.api.{Error, ValidationError}
import no.ndla.learningpathapi.service.{ConverterService, ReadService, UpdateService}
import no.ndla.network.tapir.auth.Permission.LEARNINGPATH_API_ADMIN
import org.json4s.ext.JavaTimeSerializers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
package no.ndla.learningpathapi.db.migration

import no.ndla.common.model.NDLADate
import no.ndla.common.model.domain.myndla.UserRole
import no.ndla.network.model.FeideID
import org.flywaydb.core.api.migration.{BaseJavaMigration, Context}
import org.json4s.FieldSerializer.ignore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,7 @@ import com.typesafe.scalalogging.StrictLogging
import no.ndla.common.Clock
import no.ndla.common.errors.RollbackException
import no.ndla.common.model.NDLADate
import no.ndla.common.model.domain.myndla.{
DBFolder,
DBFolderResource,
DBResource,
Folder,
FolderResource,
FolderStatus,
NDLASQLException,
NewFolderData,
Resource,
ResourceDocument,
maybeUuidBinder,
uuidBinder,
uuidParameterFactory
}
import no.ndla.common.model.domain.myndla.{maybeUuidBinder, uuidBinder, uuidParameterFactory}
import no.ndla.learningpathapi.integration.DataSource
import no.ndla.learningpathapi.model.domain._
import org.json4s.Formats
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
package no.ndla.learningpathapi.repository

import com.typesafe.scalalogging.StrictLogging
import no.ndla.common.model.domain.myndla.{DBMyNDLAUser, MyNDLAUser, MyNDLAUserDocument, NDLASQLException}
import no.ndla.learningpathapi.integration.DataSource
import no.ndla.learningpathapi.model.domain.NotFoundException
import no.ndla.network.model.FeideID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@ import cats.implicits._
import io.lemonlabs.uri.typesafe.dsl._
import no.ndla.common.{Clock, errors, model}
import no.ndla.common.errors.ValidationException
import no.ndla.common.model.api.{Breadcrumb, Folder, NewFolder, NewResource, Owner, Resource, UpdatedFolder, UpdatedResource}
import no.ndla.common.model.domain.{learningpath, myndla}
import no.ndla.common.model.domain.learningpath
import no.ndla.common.model.domain.learningpath.{EmbedType, EmbedUrl}
import no.ndla.common.model.domain.myndla.{FolderStatus, NewFolderData, ResourceDocument}
import no.ndla.common.model.{api => commonApi, domain => common}
import no.ndla.language.Language.{AllLanguages, UnknownLanguage, findByLanguageOrBestEffort, getSearchLanguage, mergeLanguageFields}
import no.ndla.learningpathapi.Props
Expand Down Expand Up @@ -699,10 +697,10 @@ trait ConverterService {
parentId: Option[UUID],
newRank: Option[Int]
): Try[NewFolderData] = {
val newStatus = FolderStatus.valueOf(newFolder.status).getOrElse(myndla.FolderStatus.PRIVATE)
val newStatus = FolderStatus.valueOf(newFolder.status).getOrElse(FolderStatus.PRIVATE)

Success(
myndla.NewFolderData(
NewFolderData(
parentId = parentId,
name = newFolder.name,
status = newStatus,
Expand All @@ -723,7 +721,7 @@ trait ConverterService {
feideUser: Option[myndla.MyNDLAUser]
): Try[Folder] = folder.subfolders
.traverse(folder => {
val newCrumb = model.api.Breadcrumb(
val newCrumb = Breadcrumb(
id = folder.id.toString,
name = folder.name
)
Expand All @@ -734,7 +732,7 @@ trait ConverterService {
folder.resources
.traverse(toApiResource)
.map(resources => {
model.api.Folder(
Folder(
id = folder.id.toString,
name = folder.name,
status = folder.status.toString,
Expand Down Expand Up @@ -822,7 +820,7 @@ trait ConverterService {
val resourceId = domainResource.resourceId

Success(
model.api.Resource(
Resource(
id = domainResource.id.toString,
resourceType = resourceType,
path = path,
Expand All @@ -834,8 +832,8 @@ trait ConverterService {
)
}

def toApiUserData(domainUserData: myndla.MyNDLAUser, arenaEnabledOrgs: List[String]): api.MyNDLAUser = {
api.MyNDLAUser(
def toApiUserData(domainUserData: myndla.MyNDLAUser, arenaEnabledOrgs: List[String]): MyNDLAUser = {
MyNDLAUser(
id = domainUserData.id,
feideId = domainUserData.feideId,
username = domainUserData.username,
Expand All @@ -850,8 +848,8 @@ trait ConverterService {
)
}

private def toApiGroup(group: myndla.MyNDLAGroup): api.MyNDLAGroup = {
api.MyNDLAGroup(
private def toApiGroup(group: myndla.MyNDLAGroup): MyNDLAGroup = {
MyNDLAGroup(
id = group.id,
displayName = group.displayName,
isPrimarySchool = group.isPrimarySchool,
Expand All @@ -861,7 +859,7 @@ trait ConverterService {

def mergeUserData(
domainUserData: myndla.MyNDLAUser,
updatedUser: api.UpdatedMyNDLAUser,
updatedUser: UpdatedMyNDLAUser,
user: Option[TokenUser]
): myndla.MyNDLAUser = {
val favoriteSubjects = updatedUser.favoriteSubjects.getOrElse(domainUserData.favoriteSubjects)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ import cats.implicits._
import no.ndla.common.{Clock, model}
import no.ndla.common.errors.{AccessDeniedException, ValidationException}
import no.ndla.common.implicits.TryQuestionMark
import no.ndla.common.model.api.{Breadcrumb, ExportedUserData, Folder, Resource, ResourceStats, Stats}
import no.ndla.common.model.domain.myndla
import no.ndla.common.model.domain.myndla.{FolderStatus, InvalidStatusException, MyNDLAUserDocument, NewFolderData, UserRole}
import no.ndla.common.model.{api => commonApi}
import no.ndla.learningpathapi.model.api._
import no.ndla.learningpathapi.model.domain.UserInfo.LearningpathTokenUser
Expand Down Expand Up @@ -55,7 +52,7 @@ trait ReadService {
for {
folders <- getFoldersAuthenticated(includeSubfolders = true, includeResources = true, feideId)
feideUser <- getFeideUserDataAuthenticated(feideId, maybeFeideAccessToken)
} yield model.api.ExportedUserData(
} yield ExportedUserData(
userData = feideUser,
folders = folders
)
Expand Down Expand Up @@ -262,7 +259,7 @@ trait ReadService {
folderRepository.folderWithId(parentId) match {
case Failure(ex) => Failure(ex)
case Success(p) =>
val newCrumb = model.api.Breadcrumb(
val newCrumb = Breadcrumb(
id = p.id.toString,
name = p.name
)
Expand All @@ -274,7 +271,7 @@ trait ReadService {
getParentRecursively(folder, List.empty) match {
case Failure(ex) => Failure(ex)
case Success(value) =>
val newCrumb = model.api.Breadcrumb(
val newCrumb = Breadcrumb(
id = folder.id.toString,
name = folder.name
)
Expand Down Expand Up @@ -341,9 +338,9 @@ trait ReadService {
}

private def getSubfolders(
folders: List[myndla.Folder],
includeSubfolders: Boolean,
includeResources: Boolean
folders: List[myndla.Folder],
includeSubfolders: Boolean,
includeResources: Boolean
)(implicit session: DBSession): Try[List[myndla.Folder]] =
folders
.traverse(f => getSingleFolderWithContent(f.id, includeSubfolders, includeResources))
Expand Down Expand Up @@ -372,7 +369,7 @@ trait ReadService {
feideUser <- userRepository.userWithFeideId(feideId)
apiFolders <- converterService.domainToApiModel(
withData,
v => converterService.toApiFolder(v, List(model.api.Breadcrumb(id = v.id.toString, name = v.name)), feideUser)
v => converterService.toApiFolder(v, List(Breadcrumb(id = v.id.toString, name = v.name)), feideUser)
)
sorted = apiFolders.sortBy(_.rank)
} yield sorted
Expand All @@ -391,11 +388,11 @@ trait ReadService {
} yield converted
}

private def toDomainGroups(feideGroups: Seq[FeideGroup]): Seq[myndla.MyNDLAGroup] = {
private def toDomainGroups(feideGroups: Seq[FeideGroup]): Seq[MyNDLAGroup] = {
feideGroups
.filter(group => group.`type` == FeideGroup.FC_ORG)
.map(feideGroup =>
myndla.MyNDLAGroup(
MyNDLAGroup(
id = feideGroup.id,
displayName = feideGroup.displayName,
isPrimarySchool = feideGroup.membership.primarySchool.getOrElse(false),
Expand Down Expand Up @@ -470,13 +467,13 @@ trait ReadService {
private def getFeideUserDataAuthenticated(
feideId: FeideID,
feideAccessToken: Option[FeideAccessToken]
): Try[api.MyNDLAUser] =
): Try[MyNDLAUser] =
for {
user <- getOrCreateMyNDLAUserIfNotExist(feideId, feideAccessToken)(AutoSession)
orgs <- readService.getMyNDLAEnabledOrgs
} yield converterService.toApiUserData(user, orgs)

def getMyNDLAUserData(feideAccessToken: Option[FeideAccessToken]): Try[api.MyNDLAUser] = {
def getMyNDLAUserData(feideAccessToken: Option[FeideAccessToken]): Try[MyNDLAUser] = {
for {
feideId <- feideApiClient.getFeideID(feideAccessToken)
userData <- getOrCreateMyNDLAUserIfNotExist(feideId, feideAccessToken)(AutoSession)
Expand All @@ -496,7 +493,7 @@ trait ReadService {
numberOfTags <- folderRepository.numberOfTags()
numberOfSubjects <- userRepository.numberOfFavouritedSubjects()
numberOfSharedFolders <- folderRepository.numberOfSharedFolders()
stats = model.api.Stats(
stats = Stats(
numberOfUsers,
numberOfFolders,
numberOfResources,
Expand Down
Loading

0 comments on commit 5db798e

Please sign in to comment.