Migrated database stuff to seperate module
This commit is contained in:
parent
3925fb758b
commit
2bcdc38f09
@ -49,12 +49,14 @@ dependencies {
|
|||||||
implementation("com.github.pgreze:kotlin-process:1.4.1")
|
implementation("com.github.pgreze:kotlin-process:1.4.1")
|
||||||
|
|
||||||
implementation(project(mapOf("path" to ":shared:common")))
|
implementation(project(mapOf("path" to ":shared:common")))
|
||||||
|
implementation(project(mapOf("path" to ":shared:database")))
|
||||||
|
|
||||||
implementation(kotlin("stdlib-jdk8"))
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
|
||||||
testImplementation("io.mockk:mockk:1.12.0")
|
testImplementation("io.mockk:mockk:1.12.0")
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
||||||
|
testImplementation(project(":shared:database", configuration = "testArtifacts"))
|
||||||
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2")
|
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2")
|
||||||
|
|
||||||
val exposedVersion = "0.61.0"
|
val exposedVersion = "0.61.0"
|
||||||
|
|||||||
@ -6,15 +6,15 @@ import no.iktdev.eventi.tasks.TaskTypeRegistry
|
|||||||
import no.iktdev.exfl.coroutines.CoroutinesDefault
|
import no.iktdev.exfl.coroutines.CoroutinesDefault
|
||||||
import no.iktdev.exfl.coroutines.CoroutinesIO
|
import no.iktdev.exfl.coroutines.CoroutinesIO
|
||||||
import no.iktdev.exfl.observable.Observables
|
import no.iktdev.exfl.observable.Observables
|
||||||
import no.iktdev.mediaprocessing.shared.common.DatabaseApplication
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.MediaProcessingApp
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabaseApplication
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabasebasedMediaProcessingApp
|
||||||
import org.springframework.boot.runApplication
|
import org.springframework.boot.runApplication
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
|
|
||||||
@MediaProcessingApp
|
@DatabasebasedMediaProcessingApp
|
||||||
open class ConverterApplication: DatabaseApplication() {
|
open class ConverterApplication: DatabaseApplication() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,11 +7,11 @@ import no.iktdev.eventi.models.Event
|
|||||||
import no.iktdev.eventi.models.store.TaskStatus
|
import no.iktdev.eventi.models.store.TaskStatus
|
||||||
import no.iktdev.eventi.tasks.TaskPollerImplementation
|
import no.iktdev.eventi.tasks.TaskPollerImplementation
|
||||||
import no.iktdev.eventi.tasks.TaskReporter
|
import no.iktdev.eventi.tasks.TaskReporter
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.boot.ApplicationArguments
|
import org.springframework.boot.ApplicationArguments
|
||||||
import org.springframework.boot.ApplicationRunner
|
import org.springframework.boot.ApplicationRunner
|
||||||
import org.springframework.context.annotation.Bean
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|||||||
@ -6,8 +6,9 @@ import io.mockk.mockkObject
|
|||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import no.iktdev.eventi.models.Task
|
import no.iktdev.eventi.models.Task
|
||||||
import no.iktdev.mediaprocessing.shared.common.TestBase
|
import no.iktdev.mediaprocessing.shared.common.TestBase
|
||||||
import no.iktdev.mediaprocessing.shared.common.config.DatasourceConfiguration
|
import no.iktdev.mediaprocessing.shared.database.config.DatasourceConfiguration
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.jetbrains.exposed.sql.Database
|
import org.jetbrains.exposed.sql.Database
|
||||||
import org.junit.jupiter.api.Assertions.assertNotNull
|
import org.junit.jupiter.api.Assertions.assertNotNull
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|||||||
@ -48,6 +48,7 @@ dependencies {
|
|||||||
|
|
||||||
implementation(project(mapOf("path" to ":shared:ffmpeg")))
|
implementation(project(mapOf("path" to ":shared:ffmpeg")))
|
||||||
implementation(project(mapOf("path" to ":shared:common")))
|
implementation(project(mapOf("path" to ":shared:common")))
|
||||||
|
implementation(project(mapOf("path" to ":shared:database")))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -81,6 +82,7 @@ dependencies {
|
|||||||
testImplementation("org.mockito.kotlin:mockito-kotlin:5.2.1")
|
testImplementation("org.mockito.kotlin:mockito-kotlin:5.2.1")
|
||||||
testImplementation("org.mockito:mockito-junit-jupiter:5.11.0")
|
testImplementation("org.mockito:mockito-junit-jupiter:5.11.0")
|
||||||
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
||||||
|
testImplementation(project(":shared:database", configuration = "testArtifacts"))
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
val exposedVersion = "0.61.0"
|
val exposedVersion = "0.61.0"
|
||||||
testImplementation("org.jetbrains.exposed:exposed-core:${exposedVersion}")
|
testImplementation("org.jetbrains.exposed:exposed-core:${exposedVersion}")
|
||||||
|
|||||||
@ -7,16 +7,16 @@ import no.iktdev.exfl.coroutines.CoroutinesDefault
|
|||||||
import no.iktdev.exfl.coroutines.CoroutinesIO
|
import no.iktdev.exfl.coroutines.CoroutinesIO
|
||||||
import no.iktdev.exfl.observable.Observables
|
import no.iktdev.exfl.observable.Observables
|
||||||
import no.iktdev.mediaprocessing.coordinator.config.ExecutablesConfig
|
import no.iktdev.mediaprocessing.coordinator.config.ExecutablesConfig
|
||||||
import no.iktdev.mediaprocessing.shared.common.DatabaseApplication
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.MediaProcessingApp
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabaseApplication
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabasebasedMediaProcessingApp
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||||
import org.springframework.boot.runApplication
|
import org.springframework.boot.runApplication
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
|
|
||||||
@MediaProcessingApp
|
@DatabasebasedMediaProcessingApp
|
||||||
class CoordinatorApplication: DatabaseApplication() {
|
class CoordinatorApplication: DatabaseApplication() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import kotlinx.coroutines.launch
|
|||||||
import no.iktdev.eventi.events.EventDispatcher
|
import no.iktdev.eventi.events.EventDispatcher
|
||||||
import no.iktdev.eventi.events.EventPollerImplementation
|
import no.iktdev.eventi.events.EventPollerImplementation
|
||||||
import no.iktdev.eventi.events.SequenceDispatchQueue
|
import no.iktdev.eventi.events.SequenceDispatchQueue
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import org.springframework.context.SmartLifecycle
|
import org.springframework.context.SmartLifecycle
|
||||||
import org.springframework.context.annotation.DependsOn
|
import org.springframework.context.annotation.DependsOn
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package no.iktdev.mediaprocessing.coordinator.controller
|
package no.iktdev.mediaprocessing.coordinator.controller
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.queries.FilesTableQueries
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.dto.FileTableItem
|
import no.iktdev.mediaprocessing.shared.common.dto.FileTableItem
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.queries.FilesTableQueries
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Operat
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserExtractResultEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserExtractResultEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ConvertTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ConvertTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import no.iktdev.eventi.models.store.TaskStatus
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CoverDownloadTaskCreatedEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CoverDownloadTaskCreatedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchResultEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchResultEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.CoverDownloadTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.CoverDownloadTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import no.iktdev.mediaprocessing.ffmpeg.dsl.*
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.*
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.*
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeData
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeData
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Proces
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleData
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleData
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|||||||
@ -8,7 +8,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MediaP
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchResultEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchResultEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchTaskCreatedEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchTaskCreatedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MetadataSearchTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MetadataSearchTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.jetbrains.annotations.VisibleForTesting
|
import org.jetbrains.annotations.VisibleForTesting
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Coordi
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MediaParsedInfoEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MediaParsedInfoEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MediaReadTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MediaReadTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@ListenerOrder(3)
|
@ListenerOrder(3)
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Migrat
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MigrateToContentStoreTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MigrateToContentStoreTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
||||||
import no.iktdev.mediaprocessing.shared.common.projection.MigrateContentProject
|
import no.iktdev.mediaprocessing.shared.common.projection.MigrateContentProject
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StoreC
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.ContentExport
|
import no.iktdev.mediaprocessing.shared.common.model.ContentExport
|
||||||
import no.iktdev.mediaprocessing.shared.common.projection.StoreProjection
|
import no.iktdev.mediaprocessing.shared.common.projection.StoreProjection
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartD
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartFlow
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartFlow
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.notExist
|
import no.iktdev.mediaprocessing.shared.common.notExist
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package no.iktdev.mediaprocessing.coordinator.services
|
|||||||
import no.iktdev.eventi.ZDS.toEvent
|
import no.iktdev.eventi.ZDS.toEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.dto.SequenceEvent
|
import no.iktdev.mediaprocessing.shared.common.dto.SequenceEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.dto.toDto
|
import no.iktdev.mediaprocessing.shared.common.dto.toDto
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import no.iktdev.mediaprocessing.shared.common.LocalDateTimeEpoch
|
|||||||
import no.iktdev.mediaprocessing.shared.common.dto.SequenceSummary
|
import no.iktdev.mediaprocessing.shared.common.dto.SequenceSummary
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CollectedEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CollectedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import no.iktdev.eventi.ListenerOrder
|
|||||||
import no.iktdev.eventi.events.EventListenerRegistry
|
import no.iktdev.eventi.events.EventListenerRegistry
|
||||||
import no.iktdev.mediaprocessing.coordinator.CoordinatorApplication
|
import no.iktdev.mediaprocessing.coordinator.CoordinatorApplication
|
||||||
import no.iktdev.mediaprocessing.coordinator.listeners.events.*
|
import no.iktdev.mediaprocessing.coordinator.listeners.events.*
|
||||||
import no.iktdev.mediaprocessing.shared.common.config.DatasourceConfiguration
|
import no.iktdev.mediaprocessing.shared.database.config.DatasourceConfiguration
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import no.iktdev.mediaprocessing.ffmpeg.dsl.VideoCodec
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.OperationType
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.OperationType
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartData
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartData
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartD
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import org.junit.jupiter.api.Assertions.*
|
import org.junit.jupiter.api.Assertions.*
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions.*
|
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -17,10 +16,10 @@ import java.io.File
|
|||||||
import io.mockk.*
|
import io.mockk.*
|
||||||
import no.iktdev.eventi.models.Event
|
import no.iktdev.eventi.models.Event
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ConvertTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ConvertTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.mockito.Mockito.mockStatic
|
import org.mockito.Mockito.mockStatic
|
||||||
import org.mockito.kotlin.any
|
import org.mockito.kotlin.any
|
||||||
import org.mockito.kotlin.whenever
|
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,8 @@ import no.iktdev.mediaprocessing.MockData.metadataEvent
|
|||||||
import no.iktdev.mediaprocessing.TestBase
|
import no.iktdev.mediaprocessing.TestBase
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CoverDownloadTaskCreatedEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CoverDownloadTaskCreatedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.CoverDownloadTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.CoverDownloadTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,8 @@ import no.iktdev.mediaprocessing.ffmpeg.dsl.AudioCodec
|
|||||||
import no.iktdev.mediaprocessing.ffmpeg.dsl.VideoCodec
|
import no.iktdev.mediaprocessing.ffmpeg.dsl.VideoCodec
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.*
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.*
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.EncodeTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Assertions.assertTrue
|
import org.junit.jupiter.api.Assertions.assertTrue
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
|||||||
@ -20,7 +20,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Proces
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartData
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartData
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions.*
|
import org.junit.jupiter.api.Assertions.*
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
|
|||||||
@ -11,7 +11,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Metada
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchTaskCreatedEvent
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MetadataSearchTaskCreatedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MetadataSearchTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MetadataSearchTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|||||||
@ -15,7 +15,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Migrat
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MigrateToContentStoreTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.MigrateToContentStoreTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus
|
import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|||||||
@ -12,7 +12,8 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StoreC
|
|||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
import no.iktdev.mediaprocessing.shared.common.model.MediaType
|
||||||
import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus
|
import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|||||||
@ -47,6 +47,7 @@ dependencies {
|
|||||||
//implementation(project(mapOf("path" to ":shared")))
|
//implementation(project(mapOf("path" to ":shared")))
|
||||||
implementation(project(mapOf("path" to ":shared:ffmpeg")))
|
implementation(project(mapOf("path" to ":shared:ffmpeg")))
|
||||||
implementation(project(mapOf("path" to ":shared:common")))
|
implementation(project(mapOf("path" to ":shared:common")))
|
||||||
|
implementation(project(mapOf("path" to ":shared:database")))
|
||||||
|
|
||||||
|
|
||||||
implementation(kotlin("stdlib-jdk8"))
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
@ -73,6 +74,7 @@ dependencies {
|
|||||||
|
|
||||||
// --- Hvis du trenger test artifacts fra shared:common ---
|
// --- Hvis du trenger test artifacts fra shared:common ---
|
||||||
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
||||||
|
testImplementation(project(":shared:database", configuration = "testArtifacts"))
|
||||||
|
|
||||||
val exposedVersion = "0.61.0"
|
val exposedVersion = "0.61.0"
|
||||||
testImplementation("org.jetbrains.exposed:exposed-core:${exposedVersion}")
|
testImplementation("org.jetbrains.exposed:exposed-core:${exposedVersion}")
|
||||||
|
|||||||
@ -6,16 +6,16 @@ import no.iktdev.eventi.tasks.TaskTypeRegistry
|
|||||||
import no.iktdev.exfl.coroutines.CoroutinesDefault
|
import no.iktdev.exfl.coroutines.CoroutinesDefault
|
||||||
import no.iktdev.exfl.coroutines.CoroutinesIO
|
import no.iktdev.exfl.coroutines.CoroutinesIO
|
||||||
import no.iktdev.exfl.observable.Observables
|
import no.iktdev.exfl.observable.Observables
|
||||||
import no.iktdev.mediaprocessing.shared.common.DatabaseApplication
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.MediaProcessingApp
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.EventRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
import no.iktdev.mediaprocessing.shared.common.event_task_contract.TaskRegistry
|
||||||
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
import no.iktdev.mediaprocessing.shared.common.getAppVersion
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabaseApplication
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.DatabasebasedMediaProcessingApp
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||||
import org.springframework.boot.runApplication
|
import org.springframework.boot.runApplication
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
|
|
||||||
@MediaProcessingApp
|
@DatabasebasedMediaProcessingApp
|
||||||
class ProcesserApplication: DatabaseApplication() {
|
class ProcesserApplication: DatabaseApplication() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,9 @@ import no.iktdev.eventi.models.Event
|
|||||||
import no.iktdev.eventi.models.store.TaskStatus
|
import no.iktdev.eventi.models.store.TaskStatus
|
||||||
import no.iktdev.eventi.tasks.TaskPollerImplementation
|
import no.iktdev.eventi.tasks.TaskPollerImplementation
|
||||||
import no.iktdev.eventi.tasks.TaskReporter
|
import no.iktdev.eventi.tasks.TaskReporter
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import no.iktdev.mediaprocessing.shared.common.stores.TaskStore
|
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
|
||||||
|
|
||||||
import org.springframework.boot.ApplicationArguments
|
import org.springframework.boot.ApplicationArguments
|
||||||
import org.springframework.boot.ApplicationRunner
|
import org.springframework.boot.ApplicationRunner
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|||||||
@ -24,3 +24,5 @@ include("shared:common")
|
|||||||
|
|
||||||
include("shared:ffmpeg")
|
include("shared:ffmpeg")
|
||||||
include("shared:event-task-contract")
|
include("shared:event-task-contract")
|
||||||
|
include("shared:database")
|
||||||
|
include("shared:database")
|
||||||
@ -23,13 +23,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val exposedVersion = "0.61.0"
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
|
||||||
|
|
||||||
|
|
||||||
implementation("com.github.pgreze:kotlin-process:1.3.1")
|
implementation("com.github.pgreze:kotlin-process:1.3.1")
|
||||||
@ -45,24 +42,9 @@ dependencies {
|
|||||||
|
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0")
|
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0")
|
||||||
|
|
||||||
implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
|
|
||||||
implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
|
|
||||||
implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
|
|
||||||
implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
implementation ("mysql:mysql-connector-java:8.0.33")
|
|
||||||
implementation("org.postgresql:postgresql:42.7.7")
|
|
||||||
implementation("org.xerial:sqlite-jdbc:3.43.2.0")
|
|
||||||
|
|
||||||
|
|
||||||
implementation("org.apache.commons:commons-lang3:3.12.0")
|
implementation("org.apache.commons:commons-lang3:3.12.0")
|
||||||
|
|
||||||
implementation("com.zaxxer:HikariCP:7.0.2")
|
|
||||||
|
|
||||||
implementation(project(":shared:ffmpeg"))
|
implementation(project(":shared:ffmpeg"))
|
||||||
implementation(libs.eventi)
|
implementation(libs.eventi)
|
||||||
|
|
||||||
@ -72,7 +54,6 @@ dependencies {
|
|||||||
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
|
|
||||||
implementation("com.h2database:h2:2.2.220")
|
|
||||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||||
|
|
||||||
testImplementation("io.kotest:kotest-assertions-core:5.7.2")
|
testImplementation("io.kotest:kotest-assertions-core:5.7.2")
|
||||||
|
|||||||
@ -1,44 +1,28 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common
|
package no.iktdev.mediaprocessing.shared.common
|
||||||
|
|
||||||
import mu.KotlinLogging
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths
|
import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths
|
||||||
import no.iktdev.mediaprocessing.shared.common.configs.StreamItConfig
|
import no.iktdev.mediaprocessing.shared.common.configs.StreamItConfig
|
||||||
import org.jetbrains.exposed.sql.Database
|
|
||||||
import org.springframework.beans.factory.InitializingBean
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||||
import org.springframework.boot.runApplication
|
import org.springframework.boot.runApplication
|
||||||
import org.springframework.context.annotation.ComponentScan
|
import org.springframework.context.annotation.ComponentScan
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.context.annotation.Import
|
import org.springframework.context.annotation.Import
|
||||||
import org.springframework.stereotype.Component
|
|
||||||
import javax.sql.DataSource
|
|
||||||
|
|
||||||
abstract class DatabaseApplication {
|
abstract class MediaProcessingApplication {
|
||||||
companion object {
|
companion object {
|
||||||
inline fun <reified T : DatabaseApplication> launch(args: Array<String>) {
|
inline fun <reified T : MediaProcessingApplication> launch(args: Array<String>) {
|
||||||
runApplication<T>(*args)
|
runApplication<T>(*args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component("ExposedInit")
|
|
||||||
class ExposedInitializer(
|
|
||||||
private val dataSource: DataSource
|
|
||||||
) : InitializingBean {
|
|
||||||
private val log = KotlinLogging.logger {}
|
|
||||||
|
|
||||||
override fun afterPropertiesSet() {
|
|
||||||
log.info { "Starting database connection" }
|
|
||||||
Database.connect(dataSource)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
@Retention(AnnotationRetention.RUNTIME)
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@ComponentScan("no.iktdev.mediaprocessing") // sikrer at common beans blir plukket opp
|
@ComponentScan(
|
||||||
|
basePackages = ["no.iktdev.mediaprocessing.shared.common"]
|
||||||
|
) // sikrer at common beans blir plukket opp
|
||||||
@Import(SharedConfig::class)
|
@Import(SharedConfig::class)
|
||||||
annotation class MediaProcessingApp
|
annotation class MediaProcessingApp
|
||||||
|
|
||||||
@ -1,15 +1,3 @@
|
|||||||
spring:
|
|
||||||
flyway:
|
|
||||||
enabled: true
|
|
||||||
locations: classpath:flyway
|
|
||||||
baseline-on-migrate: false
|
|
||||||
datasource:
|
|
||||||
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
|
|
||||||
driver-class-name: org.h2.Driver
|
|
||||||
username: sa
|
|
||||||
password:
|
|
||||||
|
|
||||||
|
|
||||||
media:
|
media:
|
||||||
cache: /src/cache
|
cache: /src/cache
|
||||||
outgoing: /src/output
|
outgoing: /src/output
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common
|
package no.iktdev.mediaprocessing.shared.common
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.config.DatasourceConfiguration
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith
|
import org.junit.jupiter.api.extension.ExtendWith
|
||||||
import org.springframework.boot.test.context.SpringBootTest
|
import org.springframework.boot.test.context.SpringBootTest
|
||||||
import org.springframework.boot.test.web.client.TestRestTemplate
|
import org.springframework.boot.test.web.client.TestRestTemplate
|
||||||
@ -11,8 +10,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
|
|||||||
import java.net.URI
|
import java.net.URI
|
||||||
|
|
||||||
@SpringBootTest(
|
@SpringBootTest(
|
||||||
classes = [DatabaseApplication::class,
|
|
||||||
DatasourceConfiguration::class],
|
|
||||||
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
|
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
|
||||||
)
|
)
|
||||||
@ExtendWith(SpringExtension::class)
|
@ExtendWith(SpringExtension::class)
|
||||||
|
|||||||
104
shared/database/build.gradle.kts
Normal file
104
shared/database/build.gradle.kts
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
plugins {
|
||||||
|
id("java")
|
||||||
|
kotlin("jvm")
|
||||||
|
kotlin("plugin.spring")
|
||||||
|
id("org.jetbrains.kotlin.plugin.serialization")
|
||||||
|
id("org.springframework.boot")
|
||||||
|
id("io.spring.dependency-management")
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "no.iktdev.mediaprocessing"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven("https://jitpack.io")
|
||||||
|
maven {
|
||||||
|
name = "ReposiliteReleases"
|
||||||
|
url = uri("https://reposilite.iktdev.no/releases")
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = "ReposiliteSnapshot"
|
||||||
|
url = uri("https://reposilite.iktdev.no/snapshots")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val exposedVersion = "0.61.0"
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-websocket")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||||
|
|
||||||
|
|
||||||
|
implementation("com.github.pgreze:kotlin-process:1.3.1")
|
||||||
|
implementation("io.github.microutils:kotlin-logging-jvm:2.0.11")
|
||||||
|
implementation(libs.exfl)
|
||||||
|
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
|
||||||
|
implementation("com.google.code.gson:gson:2.8.9")
|
||||||
|
implementation("org.json:json:20231013")
|
||||||
|
|
||||||
|
implementation("org.flywaydb:flyway-core")
|
||||||
|
implementation("org.flywaydb:flyway-mysql")
|
||||||
|
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0")
|
||||||
|
|
||||||
|
implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
|
||||||
|
implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
|
||||||
|
implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
|
||||||
|
implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
implementation ("mysql:mysql-connector-java:8.0.33")
|
||||||
|
implementation("org.postgresql:postgresql:42.7.7")
|
||||||
|
implementation("org.xerial:sqlite-jdbc:3.43.2.0")
|
||||||
|
|
||||||
|
|
||||||
|
implementation("org.apache.commons:commons-lang3:3.12.0")
|
||||||
|
|
||||||
|
implementation("com.zaxxer:HikariCP:7.0.2")
|
||||||
|
|
||||||
|
implementation(project(":shared:ffmpeg"))
|
||||||
|
implementation(project(":shared:common"))
|
||||||
|
implementation(libs.eventi)
|
||||||
|
|
||||||
|
testImplementation(kotlin("test"))
|
||||||
|
testImplementation(platform("org.junit:junit-bom:5.10.0"))
|
||||||
|
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||||
|
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
|
|
||||||
|
implementation("com.h2database:h2:2.2.220")
|
||||||
|
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||||
|
|
||||||
|
testImplementation("io.kotest:kotest-assertions-core:5.7.2")
|
||||||
|
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0")
|
||||||
|
testImplementation("io.github.classgraph:classgraph:4.8.184")
|
||||||
|
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2")
|
||||||
|
testImplementation("io.mockk:mockk:1.13.9")
|
||||||
|
|
||||||
|
testImplementation(project(":shared:common", configuration = "testArtifacts"))
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(21)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.test {
|
||||||
|
useJUnitPlatform()
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations { create("testArtifacts") }
|
||||||
|
|
||||||
|
tasks.register<Jar>("testJar") {
|
||||||
|
from(sourceSets.test.get().output)
|
||||||
|
archiveClassifier.set("tests")
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
add("testArtifacts", tasks.named("testJar"))
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
|
import mu.KotlinLogging
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.MediaProcessingApp
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.MediaProcessingApplication
|
||||||
|
import org.jetbrains.exposed.sql.Database
|
||||||
|
import org.springframework.beans.factory.InitializingBean
|
||||||
|
import org.springframework.boot.runApplication
|
||||||
|
import org.springframework.context.annotation.ComponentScan
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import javax.sql.DataSource
|
||||||
|
|
||||||
|
abstract class DatabaseApplication: MediaProcessingApplication() {
|
||||||
|
companion object {
|
||||||
|
inline fun <reified T : DatabaseApplication> launch(args: Array<String>) {
|
||||||
|
runApplication<T>(*args)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component("ExposedInit")
|
||||||
|
class ExposedInitializer(
|
||||||
|
private val dataSource: DataSource
|
||||||
|
) : InitializingBean {
|
||||||
|
private val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun afterPropertiesSet() {
|
||||||
|
log.info { "Starting database connection" }
|
||||||
|
Database.connect(dataSource)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
|
@MediaProcessingApp
|
||||||
|
@ComponentScan(
|
||||||
|
basePackages = ["no.iktdev.mediaprocessing.shared.database"]
|
||||||
|
)
|
||||||
|
annotation class DatabasebasedMediaProcessingApp
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
data class Access(
|
data class Access(
|
||||||
val username: String,
|
val username: String,
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariConfig
|
import com.zaxxer.hikari.HikariConfig
|
||||||
import com.zaxxer.hikari.HikariDataSource
|
import com.zaxxer.hikari.HikariDataSource
|
||||||
@ -13,11 +13,11 @@ import org.springframework.context.annotation.Configuration
|
|||||||
import javax.sql.DataSource
|
import javax.sql.DataSource
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
open class DatabaseConfiguration {
|
class DatabaseConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
fun dataSource(): DataSource {
|
fun dataSource(): DataSource {
|
||||||
val maxPoolSize: Int = 10
|
val maxPoolSize = 10
|
||||||
val access = DatabaseEnv.toAccess()
|
val access = DatabaseEnv.toAccess()
|
||||||
|
|
||||||
val jdbcUrl = when (access.dbType) {
|
val jdbcUrl = when (access.dbType) {
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
object DatabaseEnv {
|
object DatabaseEnv {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
import org.springframework.boot.actuate.health.Health
|
import org.springframework.boot.actuate.health.Health
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
enum class DatabaseTypes {
|
enum class DatabaseTypes {
|
||||||
MySQL, PostgreSQL, SQLite, H2
|
MySQL, PostgreSQL, SQLite, H2
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database.queries
|
package no.iktdev.mediaprocessing.shared.database.queries
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.tables.FilesTable
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.withTransaction
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.dto.FileTableItem
|
import no.iktdev.mediaprocessing.shared.common.dto.FileTableItem
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.tables.FilesTable
|
||||||
|
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
||||||
import org.jetbrains.exposed.sql.selectAll
|
import org.jetbrains.exposed.sql.selectAll
|
||||||
|
|
||||||
class FilesTableQueries {
|
class FilesTableQueries {
|
||||||
@ -1,16 +1,15 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.stores
|
package no.iktdev.mediaprocessing.shared.database.stores
|
||||||
|
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import no.iktdev.eventi.ZDS.toPersisted
|
|
||||||
import no.iktdev.eventi.models.Event
|
import no.iktdev.eventi.models.Event
|
||||||
import no.iktdev.eventi.models.store.PersistedEvent
|
import no.iktdev.eventi.models.store.PersistedEvent
|
||||||
import no.iktdev.eventi.stores.EventStore
|
import no.iktdev.eventi.stores.EventStore
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.tables.EventsTable
|
import no.iktdev.mediaprocessing.shared.database.tables.EventsTable
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.withTransaction
|
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
||||||
import org.jetbrains.exposed.sql.insert
|
import org.jetbrains.exposed.sql.insert
|
||||||
import org.jetbrains.exposed.sql.selectAll
|
import org.jetbrains.exposed.sql.selectAll
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.UUID
|
import java.util.*
|
||||||
|
|
||||||
object EventStore: EventStore {
|
object EventStore: EventStore {
|
||||||
override fun getPersistedEventsAfter(timestamp: LocalDateTime): List<PersistedEvent> {
|
override fun getPersistedEventsAfter(timestamp: LocalDateTime): List<PersistedEvent> {
|
||||||
@ -1,13 +1,12 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.stores
|
package no.iktdev.mediaprocessing.shared.database.stores
|
||||||
|
|
||||||
import com.google.gson.Gson
|
|
||||||
import no.iktdev.eventi.ZDS
|
import no.iktdev.eventi.ZDS
|
||||||
import no.iktdev.eventi.models.Task
|
import no.iktdev.eventi.models.Task
|
||||||
import no.iktdev.eventi.models.store.PersistedTask
|
import no.iktdev.eventi.models.store.PersistedTask
|
||||||
import no.iktdev.eventi.models.store.TaskStatus
|
import no.iktdev.eventi.models.store.TaskStatus
|
||||||
import no.iktdev.eventi.stores.TaskStore
|
import no.iktdev.eventi.stores.TaskStore
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.tables.TasksTable
|
import no.iktdev.mediaprocessing.shared.database.tables.TasksTable
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.withTransaction
|
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
||||||
import org.jetbrains.exposed.sql.and
|
import org.jetbrains.exposed.sql.and
|
||||||
import org.jetbrains.exposed.sql.insert
|
import org.jetbrains.exposed.sql.insert
|
||||||
import org.jetbrains.exposed.sql.selectAll
|
import org.jetbrains.exposed.sql.selectAll
|
||||||
@ -1,11 +1,11 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database.tables
|
package no.iktdev.mediaprocessing.shared.database.tables
|
||||||
|
|
||||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||||
import org.jetbrains.exposed.sql.Column
|
import org.jetbrains.exposed.sql.Column
|
||||||
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
||||||
import org.jetbrains.exposed.sql.javatime.datetime
|
import org.jetbrains.exposed.sql.javatime.datetime
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.UUID
|
import java.util.*
|
||||||
|
|
||||||
object EventsTable: IntIdTable(name = "EVENTS") {
|
object EventsTable: IntIdTable(name = "EVENTS") {
|
||||||
val referenceId: Column<UUID> = uuid("REFERENCE_ID")
|
val referenceId: Column<UUID> = uuid("REFERENCE_ID")
|
||||||
@ -1,12 +1,13 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database.tables
|
package no.iktdev.mediaprocessing.shared.database.tables
|
||||||
|
|
||||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||||
import org.jetbrains.exposed.sql.Column
|
import org.jetbrains.exposed.sql.Column
|
||||||
import org.jetbrains.exposed.sql.javatime.datetime
|
import org.jetbrains.exposed.sql.javatime.datetime
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
object FilesTable: IntIdTable("FILES") {
|
object FilesTable: IntIdTable("FILES") {
|
||||||
val name: Column<String> = varchar("NAME", 255)
|
val name: Column<String> = varchar("NAME", 255)
|
||||||
val uri: Column<String> = text("URI")
|
val uri: Column<String> = text("URI")
|
||||||
val checksum: Column<String> = char("CHECKSUM", 64)
|
val checksum: Column<String> = char("CHECKSUM", 64)
|
||||||
val identifiedAt: Column<java.time.LocalDateTime> = datetime("IDENTIFIED_AT")
|
val identifiedAt: Column<LocalDateTime> = datetime("IDENTIFIED_AT")
|
||||||
}
|
}
|
||||||
@ -1,11 +1,12 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.database.tables
|
package no.iktdev.mediaprocessing.shared.database.tables
|
||||||
|
|
||||||
import no.iktdev.eventi.models.store.TaskStatus
|
import no.iktdev.eventi.models.store.TaskStatus
|
||||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||||
import org.jetbrains.exposed.sql.Column
|
import org.jetbrains.exposed.sql.Column
|
||||||
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
||||||
import org.jetbrains.exposed.sql.javatime.datetime
|
import org.jetbrains.exposed.sql.javatime.datetime
|
||||||
import java.util.UUID
|
import java.time.LocalDateTime
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
object TasksTable: IntIdTable(name = "TASKS") {
|
object TasksTable: IntIdTable(name = "TASKS") {
|
||||||
val referenceId: Column<UUID> = uuid("REFERENCE_ID")
|
val referenceId: Column<UUID> = uuid("REFERENCE_ID")
|
||||||
@ -16,6 +17,6 @@ object TasksTable: IntIdTable(name = "TASKS") {
|
|||||||
val claimed: Column<Boolean> = bool("CLAIMED").default(false)
|
val claimed: Column<Boolean> = bool("CLAIMED").default(false)
|
||||||
val claimedBy: Column<String?> = varchar("CLAIMED_BY",100).nullable()
|
val claimedBy: Column<String?> = varchar("CLAIMED_BY",100).nullable()
|
||||||
val consumed: Column<Boolean> = bool("CONSUMED").default(false)
|
val consumed: Column<Boolean> = bool("CONSUMED").default(false)
|
||||||
val lastCheckIn: Column<java.time.LocalDateTime?> = datetime("LAST_CHECK_IN").nullable()
|
val lastCheckIn: Column<LocalDateTime?> = datetime("LAST_CHECK_IN").nullable()
|
||||||
val persistedAt: Column<java.time.LocalDateTime> = datetime("PERSISTED_AT").defaultExpression(CurrentDateTime)
|
val persistedAt: Column<LocalDateTime> = datetime("PERSISTED_AT").defaultExpression(CurrentDateTime)
|
||||||
}
|
}
|
||||||
5
shared/database/src/main/resources/application.yml
Normal file
5
shared/database/src/main/resources/application.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
spring:
|
||||||
|
flyway:
|
||||||
|
enabled: true
|
||||||
|
locations: classpath:flyway
|
||||||
|
baseline-on-migrate: false
|
||||||
@ -1,21 +1,29 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common
|
package no.iktdev.mediaprocessing.shared.database
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.Access
|
import no.iktdev.mediaprocessing.shared.common.TestBase
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.DatabaseTypes
|
import no.iktdev.mediaprocessing.shared.database.config.DatasourceConfiguration
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.withTransaction
|
|
||||||
import org.flywaydb.core.Flyway
|
import org.flywaydb.core.Flyway
|
||||||
import org.jetbrains.exposed.sql.Database
|
import org.jetbrains.exposed.sql.Database
|
||||||
import org.jetbrains.exposed.sql.statements.jdbc.JdbcConnectionImpl
|
import org.jetbrains.exposed.sql.statements.jdbc.JdbcConnectionImpl
|
||||||
import org.jetbrains.exposed.sql.transactions.TransactionManager
|
import org.jetbrains.exposed.sql.transactions.TransactionManager
|
||||||
import org.junit.jupiter.api.AfterAll
|
import org.junit.jupiter.api.AfterAll
|
||||||
import org.junit.jupiter.api.Assertions.assertTrue
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeAll
|
import org.junit.jupiter.api.BeforeAll
|
||||||
import org.junit.jupiter.api.TestInstance
|
import org.junit.jupiter.api.TestInstance
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest
|
||||||
|
import org.springframework.test.context.junit.jupiter.SpringExtension
|
||||||
import javax.sql.DataSource
|
import javax.sql.DataSource
|
||||||
|
|
||||||
|
@SpringBootTest(
|
||||||
|
classes = [DatabaseApplication::class,
|
||||||
|
DatasourceConfiguration::class],
|
||||||
|
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
|
||||||
|
)
|
||||||
|
@ExtendWith(SpringExtension::class)
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
abstract class TestBaseWithDatabase: TestBase() {
|
abstract class TestBaseWithDatabase: TestBase() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
@ -41,7 +49,7 @@ abstract class TestBaseWithDatabase: TestBase() {
|
|||||||
databaseName = "testdb",
|
databaseName = "testdb",
|
||||||
dbType = DatabaseTypes.H2
|
dbType = DatabaseTypes.H2
|
||||||
)
|
)
|
||||||
database = Database.connect(dataSource)
|
database = Database.Companion.connect(dataSource)
|
||||||
flyway = Flyway.configure()
|
flyway = Flyway.configure()
|
||||||
.dataSource(dataSource)
|
.dataSource(dataSource)
|
||||||
.locations("classpath:flyway")
|
.locations("classpath:flyway")
|
||||||
@ -53,7 +61,7 @@ abstract class TestBaseWithDatabase: TestBase() {
|
|||||||
|
|
||||||
|
|
||||||
withTransaction {
|
withTransaction {
|
||||||
val jdbc = (TransactionManager.current().connection as JdbcConnectionImpl).connection
|
val jdbc = (TransactionManager.Companion.current().connection as JdbcConnectionImpl).connection
|
||||||
|
|
||||||
val meta = jdbc.metaData
|
val meta = jdbc.metaData
|
||||||
val tableNames = listOf<String>(
|
val tableNames = listOf<String>(
|
||||||
@ -65,7 +73,7 @@ abstract class TestBaseWithDatabase: TestBase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
existingTables.forEach { (tableName, exists) ->
|
existingTables.forEach { (tableName, exists) ->
|
||||||
assertTrue(exists, "Table $tableName should exist after migration")
|
Assertions.assertTrue(exists, "Table $tableName should exist after migration")
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info { "Found migrations: ${flyway.info().all().map { it.script }}" }
|
log.info { "Found migrations: ${flyway.info().all().map { it.script }}" }
|
||||||
@ -75,7 +83,7 @@ abstract class TestBaseWithDatabase: TestBase() {
|
|||||||
@AfterAll
|
@AfterAll
|
||||||
fun clearDatabase() {
|
fun clearDatabase() {
|
||||||
flyway.clean()
|
flyway.clean()
|
||||||
TransactionManager.closeAndUnregister(database)
|
TransactionManager.Companion.closeAndUnregister(database)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,9 +1,9 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.config
|
package no.iktdev.mediaprocessing.shared.database.config
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariConfig
|
import com.zaxxer.hikari.HikariConfig
|
||||||
import com.zaxxer.hikari.HikariDataSource
|
import com.zaxxer.hikari.HikariDataSource
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.Access
|
import no.iktdev.mediaprocessing.shared.database.Access
|
||||||
import no.iktdev.mediaprocessing.shared.common.database.DatabaseTypes
|
import no.iktdev.mediaprocessing.shared.database.DatabaseTypes
|
||||||
import org.springframework.boot.test.context.TestConfiguration
|
import org.springframework.boot.test.context.TestConfiguration
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Primary
|
import org.springframework.context.annotation.Primary
|
||||||
@ -23,7 +23,7 @@ class DatasourceConfiguration {
|
|||||||
dbType = DatabaseTypes.H2
|
dbType = DatabaseTypes.H2
|
||||||
)
|
)
|
||||||
|
|
||||||
val maxPoolSize: Int = 10
|
val maxPoolSize = 10
|
||||||
val config = HikariConfig().apply {
|
val config = HikariConfig().apply {
|
||||||
this.jdbcUrl = "jdbc:h2:mem:${access.databaseName};MODE=MySQL;DB_CLOSE_DELAY=-1"
|
this.jdbcUrl = "jdbc:h2:mem:${access.databaseName};MODE=MySQL;DB_CLOSE_DELAY=-1"
|
||||||
this.driverClassName = "org.h2.Driver"
|
this.driverClassName = "org.h2.Driver"
|
||||||
Loading…
Reference in New Issue
Block a user