Skip to content

Commit 2d9d31b

Browse files
authored
Merge pull request #635 from NDLANO/ts-generation-with-db
Make `dataSource` lazy to avoid initialization before needed
2 parents 37d7176 + 1c9e7f4 commit 2d9d31b

File tree

14 files changed

+35
-45
lines changed

14 files changed

+35
-45
lines changed

article-api/src/main/scala/no/ndla/articleapi/ComponentRegistry.scala

+1-3
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ class ComponentRegistry(properties: ArticleApiProperties)
8383
)
8484
override val DBUtil: DBUtility = new DBUtility
8585

86-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
87-
DataSource.connectToDatabase()
88-
86+
lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
8987
lazy val internController = new InternController
9088
lazy val articleControllerV2 = new ArticleControllerV2
9189
lazy val healthController: TapirHealthController = new TapirHealthController

article-api/src/test/scala/no/ndla/articleapi/repository/ArticleRepositoryTest.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import no.ndla.articleapi.model.domain.ArticleIds
1515
import no.ndla.common.model.domain.Tag
1616
import no.ndla.common.model.domain.article.Article
1717
import no.ndla.scalatestsuite.IntegrationSuite
18-
import scalikejdbc.{AutoSession, ConnectionPool, DataSourceConnectionPool}
18+
import scalikejdbc.AutoSession
1919

2020
import java.net.Socket
2121
import scala.util.{Success, Try}
@@ -41,7 +41,7 @@ class ArticleRepositoryTest
4141

4242
override def beforeAll(): Unit = {
4343
super.beforeAll()
44-
ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))
44+
DataSource.connectToDatabase()
4545
if (serverIsListening) {
4646
migrator.migrate()
4747
}

audio-api/src/main/scala/no/ndla/audioapi/ComponentRegistry.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ class ComponentRegistry(properties: AudioApiProperties)
6666
new V5__AddAgreementToAudio,
6767
new V6__TranslateUntranslatedAuthors
6868
)
69-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
70-
DataSource.connectToDatabase()
69+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
7170

7271
lazy val s3Client = new NdlaS3Client(props.StorageName, props.StorageRegion)
7372
lazy val s3TranscribeClient = new NdlaS3Client(props.TranscribeStorageName, props.TranscribeStorageRegion)

audio-api/src/main/scala/no/ndla/audioapi/repository/AudioRepository.scala

-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ trait AudioRepository {
2424
val audioRepository: AudioRepository
2525

2626
class AudioRepository extends StrictLogging with Repository[AudioMetaInformation] {
27-
ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))
28-
2927
def audioCount(implicit session: DBSession = ReadOnlyAutoSession): Long =
3028
sql"select count(*) from ${AudioMetaInformation.table}"
3129
.map(rs => rs.long("count"))

concept-api/src/main/scala/no/ndla/conceptapi/ComponentRegistry.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ class ComponentRegistry(properties: ConceptApiProperties)
6767
new V25__SubjectNameAsTagsPublished(props)
6868
)
6969

70-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
71-
DataSource.connectToDatabase()
70+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
7271

7372
lazy val draftConceptRepository = new DraftConceptRepository
7473
lazy val publishedConceptRepository = new PublishedConceptRepository

concept-api/src/test/scala/no/ndla/conceptapi/TestData.scala

+1-7
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,7 @@ import no.ndla.network.tapir.auth.TokenUser
1616
import no.ndla.common.model.NDLADate
1717
import no.ndla.common.model.api.Missing
1818
import no.ndla.common.model.domain.concept
19-
import no.ndla.common.model.domain.concept.{
20-
Concept,
21-
ConceptContent,
22-
ConceptType,
23-
Status,
24-
VisualElement
25-
}
19+
import no.ndla.common.model.domain.concept.{Concept, ConceptContent, ConceptType, Status, VisualElement}
2620
import no.ndla.mapping.License
2721

2822
object TestData {

concept-api/src/test/scala/no/ndla/conceptapi/service/search/DraftConceptSearchServiceTest.scala

+8-3
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,12 @@ class DraftConceptSearchServiceTest extends IntegrationSuite(EnableElasticsearch
162162
tags = Seq(Tag(Seq("stor", "klovn"), "nb")),
163163
status = concept.Status(current = ConceptStatus.PUBLISHED, other = Set.empty),
164164
responsible = Some(Responsible("test1", today)),
165-
visualElement = Seq(VisualElement(s"""<$EmbedTagName data-resource="image" data-resource_id="test.image" data-url="test.url" />""", "nb"))
165+
visualElement = Seq(
166+
VisualElement(
167+
s"""<$EmbedTagName data-resource="image" data-resource_id="test.image" data-url="test.url" />""",
168+
"nb"
169+
)
170+
)
166171
)
167172

168173
val concept10: Concept = TestData.sampleConcept.copy(
@@ -656,7 +661,7 @@ class DraftConceptSearchServiceTest extends IntegrationSuite(EnableElasticsearch
656661
)
657662

658663
search.totalCount should be(2)
659-
search.results.map(_.id) should be(List(9,10))
664+
search.results.map(_.id) should be(List(9, 10))
660665
}
661666

662667
test("that search on embedResource matches visual element") {
@@ -709,7 +714,7 @@ class DraftConceptSearchServiceTest extends IntegrationSuite(EnableElasticsearch
709714
)
710715

711716
search.totalCount should be(2)
712-
search.results.map(_.id) should be(List(9,10))
717+
search.results.map(_.id) should be(List(9, 10))
713718
}
714719

715720
test("that search on query parameter matches on concept id") {

database/src/main/scala/no/ndla/database/DBMigrator.scala

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ trait DBMigrator {
1717

1818
case class DBMigrator(migrations: JavaMigration*) {
1919
def migrate(): Unit = {
20+
DataSource.connectToDatabase()
21+
2022
val config = Flyway
2123
.configure()
2224
.javaMigrations(migrations*)

draft-api/src/main/scala/no/ndla/draftapi/ComponentRegistry.scala

+2-3
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ class ComponentRegistry(properties: DraftApiProperties)
9898
new V57__MigrateSavedSearch,
9999
new V66__SetHideBylineForImagesNotCopyrighted
100100
)
101-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
102-
override val DBUtil: DBUtility = new DBUtility
103-
DataSource.connectToDatabase()
101+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
102+
override val DBUtil: DBUtility = new DBUtility
104103

105104
lazy val draftRepository = new DraftRepository
106105
lazy val userDataRepository = new UserDataRepository

frontpage-api/src/main/scala/no/ndla/frontpageapi/ComponentRegistry.scala

+3-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ class ComponentRegistry(properties: FrontpageApiProperties)
3939
with DBMigrator
4040
with ConverterService
4141
with SwaggerDocControllerConfig {
42-
override val props: FrontpageApiProperties = properties
43-
override val migrator: DBMigrator = DBMigrator()
44-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
45-
DataSource.connectToDatabase()
42+
override val props: FrontpageApiProperties = properties
43+
override val migrator: DBMigrator = DBMigrator()
44+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
4645

4746
override val clock = new SystemClock
4847

image-api/src/main/scala/no/ndla/imageapi/ComponentRegistry.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ class ComponentRegistry(properties: ImageApiProperties)
7272
new V6__AddAgreementToImages,
7373
new V7__TranslateUntranslatedAuthors
7474
)
75-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
76-
DataSource.connectToDatabase()
75+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
7776

7877
lazy val s3Client = new NdlaS3Client(props.StorageName, props.StorageRegion)
7978

image-api/src/test/scala/no/ndla/imageapi/controller/InternControllerTest.scala

+10-10
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ class InternControllerTest extends UnitSuite with TestEnvironment with TapirCont
124124

125125
test("That DELETE /index removes all indexes") {
126126
when(imageIndexService.findAllIndexes(any[String])).thenReturn(Success(List("index1", "index2", "index3")))
127-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index1"))
128-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index2"))
129-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index3"))
127+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index1"))
128+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index2"))
129+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index3"))
130130
val res = simpleHttpClient
131131
.send(quickRequest.delete(uri"http://localhost:$serverPort/intern/index"))
132132
res.code.code should be(200)
@@ -139,12 +139,12 @@ class InternControllerTest extends UnitSuite with TestEnvironment with TapirCont
139139
}
140140

141141
test("That DELETE /index fails if at least one index isn't found, and no indexes are deleted") {
142-
doReturn(Failure(new RuntimeException("Failed to find indexes")), Nil *)
142+
doReturn(Failure(new RuntimeException("Failed to find indexes")), Nil*)
143143
.when(imageIndexService)
144144
.findAllIndexes(props.SearchIndex)
145-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index1"))
146-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index2"))
147-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index3"))
145+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index1"))
146+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index2"))
147+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index3"))
148148
val res = simpleHttpClient
149149
.send(quickRequest.delete(uri"http://localhost:$serverPort/intern/index"))
150150
res.code.code should equal(500)
@@ -156,11 +156,11 @@ class InternControllerTest extends UnitSuite with TestEnvironment with TapirCont
156156
"That DELETE /index fails if at least one index couldn't be deleted, but the other indexes are deleted regardless"
157157
) {
158158
when(imageIndexService.findAllIndexes(any[String])).thenReturn(Success(List("index1", "index2", "index3")))
159-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index1"))
160-
doReturn(Failure(new RuntimeException("No index with name 'index2' exists")), Nil *)
159+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index1"))
160+
doReturn(Failure(new RuntimeException("No index with name 'index2' exists")), Nil*)
161161
.when(imageIndexService)
162162
.deleteIndexWithName(Some("index2"))
163-
doReturn(Success(""), Nil *).when(imageIndexService).deleteIndexWithName(Some("index3"))
163+
doReturn(Success(""), Nil*).when(imageIndexService).deleteIndexWithName(Some("index3"))
164164
val res = simpleHttpClient
165165
.send(quickRequest.delete(uri"http://localhost:$serverPort/intern/index"))
166166
res.code.code should equal(500)

learningpath-api/src/main/scala/no/ndla/learningpathapi/ComponentRegistry.scala

+1-2
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ class ComponentRegistry(properties: LearningpathApiProperties)
8686
new V31__ArenaDefaultEnabledOrgs,
8787
new V33__AiDefaultEnabledOrgs
8888
)
89-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
90-
DataSource.connectToDatabase()
89+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
9190

9291
lazy val learningPathRepository = new LearningPathRepository
9392
lazy val readService = new ReadService

myndla-api/src/main/scala/no/ndla/myndlaapi/ComponentRegistry.scala

+2-3
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,8 @@ class ComponentRegistry(properties: MyNdlaApiProperties)
9393
lazy val v16__MigrateResourcePaths: V16__MigrateResourcePaths = new V16__MigrateResourcePaths
9494
lazy val DBUtil = new DBUtility
9595

96-
override val migrator: DBMigrator = DBMigrator(v16__MigrateResourcePaths)
97-
override val dataSource: HikariDataSource = DataSource.getHikariDataSource
98-
DataSource.connectToDatabase()
96+
override val migrator: DBMigrator = DBMigrator(v16__MigrateResourcePaths)
97+
override lazy val dataSource: HikariDataSource = DataSource.getHikariDataSource
9998

10099
val swagger = new SwaggerController(
101100
List(

0 commit comments

Comments
 (0)