diff --git a/application/src/main/kotlin/org/katan/Application.kt b/application/src/main/kotlin/org/katan/Application.kt index c6752930..bcefa48d 100644 --- a/application/src/main/kotlin/org/katan/Application.kt +++ b/application/src/main/kotlin/org/katan/Application.kt @@ -7,7 +7,6 @@ import kotlinx.coroutines.DEBUG_PROPERTY_VALUE_ON import kotlinx.coroutines.runBlocking import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger -import org.katan.model.KatanConfig @Suppress("UNUSED") private object Application { diff --git a/application/src/main/kotlin/org/katan/KoinLog4jLogger.kt b/application/src/main/kotlin/org/katan/KoinLog4jLogger.kt index b89a216f..32910149 100644 --- a/application/src/main/kotlin/org/katan/KoinLog4jLogger.kt +++ b/application/src/main/kotlin/org/katan/KoinLog4jLogger.kt @@ -1,7 +1,6 @@ package org.katan import org.apache.logging.log4j.LogManager -import org.katan.model.KatanConfig import org.koin.core.Koin import org.koin.core.logger.Level import org.koin.core.logger.MESSAGE diff --git a/core/src/main/kotlin/org/katan/model/blueprint/Blueprint.kt b/core/src/main/kotlin/org/katan/model/blueprint/Blueprint.kt index 3156fc83..d91507f1 100644 --- a/core/src/main/kotlin/org/katan/model/blueprint/Blueprint.kt +++ b/core/src/main/kotlin/org/katan/model/blueprint/Blueprint.kt @@ -1,7 +1,6 @@ package org.katan.model.blueprint import kotlinx.datetime.Instant -import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import org.katan.model.Snowflake @@ -10,5 +9,5 @@ data class Blueprint( val id: Snowflake, val createdAt: Instant, val updatedAt: Instant, - val spec: BlueprintSpec -) \ No newline at end of file + val spec: BlueprintSpec, +) diff --git a/core/src/main/kotlin/org/katan/model/blueprint/BlueprintSpec.kt b/core/src/main/kotlin/org/katan/model/blueprint/BlueprintSpec.kt index 5359515b..4ed3480f 100644 --- a/core/src/main/kotlin/org/katan/model/blueprint/BlueprintSpec.kt +++ b/core/src/main/kotlin/org/katan/model/blueprint/BlueprintSpec.kt @@ -9,7 +9,7 @@ data class BlueprintSpec( val version: String, val remote: BlueprintSpecRemote?, val build: BlueprintSpecBuild?, - val options: List = emptyList() + val options: List = emptyList(), ) @Serializable @@ -18,12 +18,12 @@ data class BlueprintSpecOption( val name: String, val type: List, val env: String?, - val defaultValue: String + val defaultValue: String, ) @Serializable data class BlueprintSpecRemote( - val origin: String + val origin: String, ) @Serializable @@ -31,7 +31,7 @@ data class BlueprintSpecBuild( val image: BlueprintSpecImage, val entrypoint: String, val env: Map, - val instance: BlueprintSpecInstance? + val instance: BlueprintSpecInstance?, ) @Serializable @@ -51,5 +51,5 @@ sealed class BlueprintSpecImage { @Serializable data class BlueprintSpecInstance( - val name: String -) \ No newline at end of file + val name: String, +) diff --git a/core/src/main/kotlin/org/katan/model/instance/InstanceInternalStats.kt b/core/src/main/kotlin/org/katan/model/instance/InstanceInternalStats.kt index 140b9b64..7abf3474 100644 --- a/core/src/main/kotlin/org/katan/model/instance/InstanceInternalStats.kt +++ b/core/src/main/kotlin/org/katan/model/instance/InstanceInternalStats.kt @@ -16,7 +16,6 @@ data class InstanceInternalStats( val lastOnlineCpus: Long?, ) - private const val MAX_PERCENTAGE = 100.0f fun InstanceInternalStats.getMemoryUsagePercentage(): Float { diff --git a/core/src/main/kotlin/org/katan/model/instance/InstanceRuntime.kt b/core/src/main/kotlin/org/katan/model/instance/InstanceRuntime.kt index 9f010df2..6363f035 100644 --- a/core/src/main/kotlin/org/katan/model/instance/InstanceRuntime.kt +++ b/core/src/main/kotlin/org/katan/model/instance/InstanceRuntime.kt @@ -4,7 +4,7 @@ import kotlinx.datetime.Instant import kotlinx.serialization.Serializable @Serializable -internal data class InstanceRuntime( +data class InstanceRuntime( val id: String, val network: InstanceRuntimeNetwork, val platform: String?, @@ -20,14 +20,14 @@ internal data class InstanceRuntime( ) @Serializable -internal data class InstanceRuntimeNetwork( +data class InstanceRuntimeNetwork( val ipV4Address: String, val hostname: String?, val networks: List, ) @Serializable -internal data class InstanceRuntimeSingleNetwork( +data class InstanceRuntimeSingleNetwork( val id: String, val name: String, val ipv4Address: String?, @@ -35,9 +35,9 @@ internal data class InstanceRuntimeSingleNetwork( ) @Serializable -internal data class InstanceRuntimeMount( +data class InstanceRuntimeMount( val type: String, val target: String, val destination: String, val readonly: Boolean, -) \ No newline at end of file +) diff --git a/core/src/main/kotlin/org/katan/model/instance/UnitInstance.kt b/core/src/main/kotlin/org/katan/model/instance/UnitInstance.kt index d2888789..a9ee7a59 100644 --- a/core/src/main/kotlin/org/katan/model/instance/UnitInstance.kt +++ b/core/src/main/kotlin/org/katan/model/instance/UnitInstance.kt @@ -15,7 +15,7 @@ class UnitInstance( val connection: HostPort?, val runtime: InstanceRuntime?, val blueprintId: Snowflake, - val createdAt: Instant + val createdAt: Instant, ) val UnitInstance.containerIdOrThrow: String diff --git a/core/src/main/kotlin/org/katan/model/io/Bucket.kt b/core/src/main/kotlin/org/katan/model/io/Bucket.kt index c2fac606..42338c36 100644 --- a/core/src/main/kotlin/org/katan/model/io/Bucket.kt +++ b/core/src/main/kotlin/org/katan/model/io/Bucket.kt @@ -8,5 +8,5 @@ data class Bucket( val path: String, val name: String, val isLocal: Boolean, - val createdAt: Instant? + val createdAt: Instant?, ) diff --git a/core/src/main/kotlin/org/katan/model/io/Directory.kt b/core/src/main/kotlin/org/katan/model/io/Directory.kt index 3e58c631..0067c992 100644 --- a/core/src/main/kotlin/org/katan/model/io/Directory.kt +++ b/core/src/main/kotlin/org/katan/model/io/Directory.kt @@ -1,9 +1,11 @@ package org.katan.model.io import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable +@SerialName("directory") data class Directory( override val name: String, override val relativePath: String, @@ -12,8 +14,8 @@ data class Directory( override val isHidden: Boolean, override val createdAt: Instant?, override val modifiedAt: Instant?, - val children: List, -) : VirtualFile { + val children: List, +) : FileLike { override val isDirectory: Boolean get() = true -} \ No newline at end of file +} diff --git a/core/src/main/kotlin/org/katan/model/io/File.kt b/core/src/main/kotlin/org/katan/model/io/File.kt new file mode 100644 index 00000000..9cec98d1 --- /dev/null +++ b/core/src/main/kotlin/org/katan/model/io/File.kt @@ -0,0 +1,20 @@ +package org.katan.model.io + +import kotlinx.datetime.Instant +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +@SerialName("file") +data class File( + override val name: String, + override val relativePath: String, + override val absolutePath: String, + override val size: Long, + override val isHidden: Boolean, + override val createdAt: Instant?, + override val modifiedAt: Instant?, +) : FileLike { + + override val isDirectory: Boolean get() = false +} diff --git a/core/src/main/kotlin/org/katan/model/io/FileLike.kt b/core/src/main/kotlin/org/katan/model/io/FileLike.kt new file mode 100644 index 00000000..a5225a67 --- /dev/null +++ b/core/src/main/kotlin/org/katan/model/io/FileLike.kt @@ -0,0 +1,59 @@ +package org.katan.model.io + +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +sealed interface FileLike { + + val name: String + + val relativePath: String + + val absolutePath: String + + val size: Long + + val isDirectory: Boolean + + val isHidden: Boolean + + val createdAt: Instant? + + val modifiedAt: Instant? +} + +val FileLike.extension: String + get() = name.substringAfterLast(".", "") + +fun FileLike( + name: String, + relativePath: String, + absolutePath: String, + size: Long, + isHidden: Boolean, + createdAt: Instant?, + modifiedAt: Instant?, + children: List?, +): FileLike = if (children != null) { + Directory( + name = name, + relativePath = relativePath, + absolutePath = absolutePath, + size = size, + isHidden = isHidden, + createdAt = createdAt ?: modifiedAt, + modifiedAt = modifiedAt, + children = children, + ) +} else { + File( + name = name, + relativePath = relativePath, + absolutePath = absolutePath, + size = size, + isHidden = isHidden, + createdAt = createdAt ?: modifiedAt, + modifiedAt = modifiedAt, + ) +} diff --git a/core/src/main/kotlin/org/katan/model/io/VirtualFile.kt b/core/src/main/kotlin/org/katan/model/io/VirtualFile.kt deleted file mode 100644 index b6c3c739..00000000 --- a/core/src/main/kotlin/org/katan/model/io/VirtualFile.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.katan.model.io - -import kotlinx.datetime.Instant - -interface VirtualFile { - - val name: String - - val relativePath: String - - val absolutePath: String - - val size: Long - - val isDirectory: Boolean - - val isHidden: Boolean - - val createdAt: Instant? - - val modifiedAt: Instant? -} - -val VirtualFile.extension: String - get() = name.substringAfterLast(".", "") diff --git a/core/src/main/kotlin/org/katan/model/role/Role.kt b/core/src/main/kotlin/org/katan/model/role/Role.kt index cf2c3e3e..dc8feee4 100644 --- a/core/src/main/kotlin/org/katan/model/role/Role.kt +++ b/core/src/main/kotlin/org/katan/model/role/Role.kt @@ -13,5 +13,5 @@ data class Role( val id: Snowflake, val name: String, val position: Int, - override val permissions: Permissions + override val permissions: Permissions, ) : PermissionsHolder diff --git a/core/src/main/kotlin/org/katan/model/unit/ImageUpdatePolicy.kt b/core/src/main/kotlin/org/katan/model/unit/ImageUpdatePolicy.kt index c97ee824..11239d08 100644 --- a/core/src/main/kotlin/org/katan/model/unit/ImageUpdatePolicy.kt +++ b/core/src/main/kotlin/org/katan/model/unit/ImageUpdatePolicy.kt @@ -3,7 +3,8 @@ package org.katan.model.unit enum class ImageUpdatePolicy(val id: String) { Always("always"), - Never("never"); + Never("never"), + ; companion object { diff --git a/core/src/main/kotlin/org/katan/model/unit/Unit.kt b/core/src/main/kotlin/org/katan/model/unit/Unit.kt index 30d9071e..b2e85f19 100644 --- a/core/src/main/kotlin/org/katan/model/unit/Unit.kt +++ b/core/src/main/kotlin/org/katan/model/unit/Unit.kt @@ -121,7 +121,8 @@ enum class UnitStatus(val value: String) { Created("created"), MissingInstance("missing-instance"), CreatingInstance("creating-instance"), - Ready("ready"); + Ready("ready"), + ; companion object { diff --git a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLog.kt b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLog.kt index ee31e086..921c99e9 100644 --- a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLog.kt +++ b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLog.kt @@ -6,5 +6,5 @@ import org.katan.model.account.Account @Serializable data class AuditLog( val entries: List, - val actors: List -) \ No newline at end of file + val actors: List, +) diff --git a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogChange.kt b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogChange.kt index ba7f1a26..ab9d19df 100644 --- a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogChange.kt +++ b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogChange.kt @@ -6,5 +6,5 @@ import kotlinx.serialization.Serializable data class AuditLogChange( val key: String, val oldValue: String?, - val newValue: String? + val newValue: String?, ) diff --git a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogEntry.kt b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogEntry.kt index a3baddd1..52f343cf 100644 --- a/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogEntry.kt +++ b/core/src/main/kotlin/org/katan/model/unit/auditlog/AuditLogEntry.kt @@ -13,5 +13,5 @@ data class AuditLogEntry( val reason: String?, val changes: List, val additionalData: String?, - val createdAt: Instant -) \ No newline at end of file + val createdAt: Instant, +) diff --git a/http/http-server/build.gradle.kts b/http/http-server/build.gradle.kts index d553a401..3c3962f1 100644 --- a/http/http-server/build.gradle.kts +++ b/http/http-server/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { runtimeOnly(libs.expressly) compileOnly(libs.ktor.server.core) compileOnly(libs.ktor.server.cio) + implementation(projects.core) implementation(projects.http.httpShared) implementation(libs.ktor.server.websockets) implementation(libs.hibernateValidator) diff --git a/http/http-server/src/main/kotlin/org/katan/http/server/HttpServer.kt b/http/http-server/src/main/kotlin/org/katan/http/server/HttpServer.kt index 46cf2e09..cf5a03ea 100644 --- a/http/http-server/src/main/kotlin/org/katan/http/server/HttpServer.kt +++ b/http/http-server/src/main/kotlin/org/katan/http/server/HttpServer.kt @@ -14,7 +14,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.serialization.json.Json import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.http.HttpModule import org.katan.http.HttpModuleRegistry import org.katan.http.installDefaultFeatures diff --git a/http/http-server/src/main/kotlin/org/katan/http/server/routes/ServerInfo.kt b/http/http-server/src/main/kotlin/org/katan/http/server/routes/ServerInfo.kt index 08db62d0..843f7484 100644 --- a/http/http-server/src/main/kotlin/org/katan/http/server/routes/ServerInfo.kt +++ b/http/http-server/src/main/kotlin/org/katan/http/server/routes/ServerInfo.kt @@ -4,7 +4,7 @@ import io.ktor.server.application.call import io.ktor.server.response.respond import io.ktor.server.routing.Route import io.ktor.server.routing.get -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.http.server.dto.ServerInfoBuild import org.katan.http.server.dto.ServerInfoResponse import org.koin.ktor.ext.inject diff --git a/http/http-shared/build.gradle.kts b/http/http-shared/build.gradle.kts index 718aaf92..83ca8be9 100644 --- a/http/http-shared/build.gradle.kts +++ b/http/http-shared/build.gradle.kts @@ -8,6 +8,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.koin.core) implementation(libs.ktor.server.websockets) implementation(libs.ktor.server.feature.defaultHeaders) diff --git a/services/account-service/src/main/kotlin/org/katan/service/account/AccountImpl.kt b/services/account-service/src/main/kotlin/org/katan/service/account/AccountImpl.kt deleted file mode 100644 index 7034d3b6..00000000 --- a/services/account-service/src/main/kotlin/org/katan/service/account/AccountImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package org.katan.service.account - -import kotlinx.datetime.Instant -import kotlinx.serialization.Serializable -import org.katan.model.Snowflake -import org.katan.model.account.Account - -@Serializable -internal data class AccountImpl( - override val id: Snowflake, - override val username: String, - override val email: String, - override val displayName: String?, - override val createdAt: Instant, - override val updatedAt: Instant, - override val lastLoggedInAt: Instant?, - override val avatar: Snowflake? -) : Account diff --git a/services/account-service/src/main/kotlin/org/katan/service/account/AccountService.kt b/services/account-service/src/main/kotlin/org/katan/service/account/AccountService.kt index dedd2e57..e09ff495 100644 --- a/services/account-service/src/main/kotlin/org/katan/service/account/AccountService.kt +++ b/services/account-service/src/main/kotlin/org/katan/service/account/AccountService.kt @@ -63,7 +63,7 @@ internal class AccountServiceImpl( } val now = Clock.System.now() - val account = AccountImpl( + val account = Account( id = idService.generate(), displayName = displayName, username = username, @@ -85,16 +85,14 @@ internal class AccountServiceImpl( eventsDispatcher.dispatch(AccountDeletedEvent(id)) } - private fun AccountEntity.toDomain(): Account { - return AccountImpl( - id = id.value.toSnowflake(), - email = email, - displayName = displayName, - username = username, - createdAt = createdAt, - updatedAt = updatedAt, - lastLoggedInAt = lastLoggedInAt, - avatar = avatar?.toSnowflake() - ) - } + private fun AccountEntity.toDomain(): Account = Account( + id = id.value.toSnowflake(), + email = email, + displayName = displayName, + username = username, + createdAt = createdAt, + updatedAt = updatedAt, + lastLoggedInAt = lastLoggedInAt, + avatar = avatar?.toSnowflake() + ) } diff --git a/services/auth-service/build.gradle.kts b/services/auth-service/build.gradle.kts index 90597e1c..25ae9eee 100644 --- a/services/auth-service/build.gradle.kts +++ b/services/auth-service/build.gradle.kts @@ -8,6 +8,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(projects.services.accountService) implementation(projects.http.httpShared) implementation(libs.javaJwt) diff --git a/services/auth-service/src/main/kotlin/org/katan/service/auth/AuthServiceDI.kt b/services/auth-service/src/main/kotlin/org/katan/service/auth/AuthServiceDI.kt index 142af9bc..56c024b0 100644 --- a/services/auth-service/src/main/kotlin/org/katan/service/auth/AuthServiceDI.kt +++ b/services/auth-service/src/main/kotlin/org/katan/service/auth/AuthServiceDI.kt @@ -1,8 +1,8 @@ package org.katan.service.auth import com.auth0.jwt.interfaces.JWTVerifier -import org.katan.model.security.Hash import org.katan.http.importHttpModule +import org.katan.security.Hash import org.katan.service.auth.http.AuthHttpModule import org.koin.core.module.Module import org.koin.dsl.module diff --git a/services/auth-service/src/main/kotlin/org/katan/service/auth/JWTAuthServiceImpl.kt b/services/auth-service/src/main/kotlin/org/katan/service/auth/JWTAuthServiceImpl.kt index 7a776fcf..6ca3f4d4 100644 --- a/services/auth-service/src/main/kotlin/org/katan/service/auth/JWTAuthServiceImpl.kt +++ b/services/auth-service/src/main/kotlin/org/katan/service/auth/JWTAuthServiceImpl.kt @@ -12,12 +12,12 @@ import com.auth0.jwt.interfaces.DecodedJWT import com.auth0.jwt.interfaces.JWTVerifier import kotlinx.datetime.Clock import kotlinx.datetime.toJavaInstant -import org.katan.model.security.Hash +import org.katan.security.Hash import org.katan.model.account.Account import org.katan.model.account.AccountNotFoundException -import org.katan.model.security.AuthenticationException -import org.katan.model.security.InvalidCredentialsException -import org.katan.model.security.SecurityException +import org.katan.security.AuthenticationException +import org.katan.security.InvalidCredentialsException +import org.katan.security.SecurityException import org.katan.model.toSnowflake import org.katan.service.account.AccountService import kotlin.time.Duration diff --git a/services/auth-service/src/main/kotlin/org/katan/service/auth/http/AuthHttpModule.kt b/services/auth-service/src/main/kotlin/org/katan/service/auth/http/AuthHttpModule.kt index 07c70f52..333a2911 100644 --- a/services/auth-service/src/main/kotlin/org/katan/service/auth/http/AuthHttpModule.kt +++ b/services/auth-service/src/main/kotlin/org/katan/service/auth/http/AuthHttpModule.kt @@ -16,7 +16,7 @@ import io.ktor.server.routing.routing import org.katan.http.HttpModule import org.katan.http.response.HttpError import org.katan.http.response.respondError -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.service.auth.AuthService import org.katan.service.auth.http.routes.login import org.katan.service.auth.http.routes.verify diff --git a/services/auth-service/src/main/kotlin/org/katan/service/auth/http/routes/Login.kt b/services/auth-service/src/main/kotlin/org/katan/service/auth/http/routes/Login.kt index 5053218b..fb9da2f0 100644 --- a/services/auth-service/src/main/kotlin/org/katan/service/auth/http/routes/Login.kt +++ b/services/auth-service/src/main/kotlin/org/katan/service/auth/http/routes/Login.kt @@ -9,7 +9,7 @@ import org.katan.http.response.receiveValidating import org.katan.http.response.respond import org.katan.http.response.respondError import org.katan.model.account.AccountNotFoundException -import org.katan.model.security.InvalidCredentialsException +import org.katan.security.InvalidCredentialsException import org.katan.service.auth.AuthService import org.katan.service.auth.http.AuthResource import org.katan.service.auth.http.dto.LoginRequest diff --git a/services/blueprint-service/build.gradle.kts b/services/blueprint-service/build.gradle.kts index b8b828ab..8f1b3fd8 100644 --- a/services/blueprint-service/build.gradle.kts +++ b/services/blueprint-service/build.gradle.kts @@ -8,6 +8,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(projects.http.httpShared) implementation(projects.services.idService) implementation(projects.services.databaseService) diff --git a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintException.kt b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintException.kt index 3690e78d..cb289e80 100644 --- a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintException.kt +++ b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintException.kt @@ -1,6 +1,6 @@ package org.katan.service.blueprint -import org.katan.model.KatanException +import org.katan.KatanException public open class BlueprintException internal constructor() : KatanException() diff --git a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintService.kt b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintService.kt index 45a382c8..72de32bb 100644 --- a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintService.kt +++ b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/BlueprintService.kt @@ -8,7 +8,6 @@ import kotlinx.serialization.json.decodeFromStream import org.katan.model.Snowflake import org.katan.model.blueprint.Blueprint import org.katan.model.blueprint.BlueprintSpec -import org.katan.service.blueprint.model.BlueprintSpecImpl import org.katan.service.blueprint.provider.BlueprintSpecProvider import org.katan.service.blueprint.provider.BlueprintSpecSource import org.katan.service.blueprint.provider.RemoteBlueprintSpecSource @@ -50,7 +49,7 @@ internal class BlueprintServiceImpl( val spec = blueprintSpecProvider.provide(source) blueprintRepository.create( id = idService.generate().value, - spec = json.encodeToString(spec as BlueprintSpecImpl).encodeToByteArray(), + spec = json.encodeToString(spec).encodeToByteArray(), createdAt = Clock.System.now() ) @@ -58,10 +57,10 @@ internal class BlueprintServiceImpl( } @OptIn(ExperimentalSerializationApi::class) - private fun toModel(entity: BlueprintEntity): Blueprint = BlueprintImpl( + private fun toModel(entity: BlueprintEntity): Blueprint = Blueprint( id = entity.getId(), createdAt = entity.createdAt, updatedAt = entity.updatedAt, - spec = json.decodeFromStream(entity.content.inputStream) + spec = json.decodeFromStream(entity.content.inputStream) ) } diff --git a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/http/dto/BlueprintResponse.kt b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/http/dto/BlueprintResponse.kt index 702ebe51..9f4dc3ca 100644 --- a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/http/dto/BlueprintResponse.kt +++ b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/http/dto/BlueprintResponse.kt @@ -4,20 +4,20 @@ import kotlinx.datetime.Instant import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import org.katan.model.blueprint.Blueprint -import org.katan.service.blueprint.model.BlueprintSpecImpl +import org.katan.model.blueprint.BlueprintSpec @Serializable internal data class BlueprintResponse( val id: String, @SerialName("created-at") val createdAt: Instant, @SerialName("updated-at") val updatedAt: Instant, - @SerialName("spec") val spec: BlueprintSpecImpl + @SerialName("spec") val spec: BlueprintSpec ) { constructor(blueprint: Blueprint) : this( id = blueprint.id.value.toString(), createdAt = blueprint.createdAt, updatedAt = blueprint.updatedAt, - spec = blueprint.spec as BlueprintSpecImpl + spec = blueprint.spec ) } diff --git a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/parser/BlueprintParser.kt b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/parser/BlueprintParser.kt index 4c7e5938..d612cc72 100644 --- a/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/parser/BlueprintParser.kt +++ b/services/blueprint-service/src/main/kotlin/org/katan/service/blueprint/parser/BlueprintParser.kt @@ -15,10 +15,9 @@ import kotlinx.serialization.json.JsonNull import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive import org.katan.model.blueprint.BlueprintSpec -import org.katan.service.blueprint.model.BlueprintSpecBuildImpl -import org.katan.service.blueprint.model.BlueprintSpecImageImpl -import org.katan.service.blueprint.model.BlueprintSpecImpl -import org.katan.service.blueprint.model.BlueprintSpecInstanceImpl +import org.katan.model.blueprint.BlueprintSpecBuild +import org.katan.model.blueprint.BlueprintSpecImage +import org.katan.model.blueprint.BlueprintSpecInstance import kotlin.reflect.KClass // TODO detailed error diagnostics @@ -216,17 +215,17 @@ internal class BlueprintParser(private val supportedProperties: List = } private fun transform(value: JsonObject): BlueprintSpec = with(value) { - BlueprintSpecImpl( + BlueprintSpec( name = string("name"), version = string("version"), remote = null, build = struct("build")?.let { build -> - BlueprintSpecBuildImpl( + BlueprintSpecBuild( entrypoint = build.string("entrypoint"), env = emptyMap(), image = build.getValue("image").let(::elementToImage), instance = build.struct("instance")?.let { instance -> - BlueprintSpecInstanceImpl( + BlueprintSpecInstance( name = instance.string("name") ) } @@ -236,27 +235,27 @@ internal class BlueprintParser(private val supportedProperties: List = ) } - private fun elementToImage(element: JsonElement): BlueprintSpecImageImpl { + private fun elementToImage(element: JsonElement): BlueprintSpecImage { return when (element) { - is JsonObject -> BlueprintSpecImageImpl.Ref( + is JsonObject -> BlueprintSpecImage.Ref( ref = element.string("ref"), tag = element.string("tag") ) - is JsonArray -> BlueprintSpecImageImpl.Multiple( + is JsonArray -> BlueprintSpecImage.Multiple( images = element.map { child -> if (child !is JsonObject) { error("Expected a JsonObject for image multiple child, given $child") } - BlueprintSpecImageImpl.Ref( + BlueprintSpecImage.Ref( ref = child.string("ref"), tag = child.string("tag") ) } ) - is JsonPrimitive -> BlueprintSpecImageImpl.Identifier( + is JsonPrimitive -> BlueprintSpecImage.Identifier( id = element.content ) diff --git a/services/cache-service/build.gradle.kts b/services/cache-service/build.gradle.kts index af631b69..c4ffd5db 100644 --- a/services/cache-service/build.gradle.kts +++ b/services/cache-service/build.gradle.kts @@ -7,6 +7,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.jedis) implementation(libs.log4j.core) implementation(libs.koin.core) diff --git a/services/cache-service/src/main/kotlin/org/katan/services/cache/RedisCacheService.kt b/services/cache-service/src/main/kotlin/org/katan/services/cache/RedisCacheService.kt index bf10ce92..ddd6061e 100644 --- a/services/cache-service/src/main/kotlin/org/katan/services/cache/RedisCacheService.kt +++ b/services/cache-service/src/main/kotlin/org/katan/services/cache/RedisCacheService.kt @@ -1,7 +1,7 @@ package org.katan.services.cache import org.apache.logging.log4j.LogManager -import org.katan.model.KatanConfig +import org.katan.KatanConfig import redis.clients.jedis.DefaultJedisClientConfig import redis.clients.jedis.HostAndPort import redis.clients.jedis.JedisCluster diff --git a/services/database-service/build.gradle.kts b/services/database-service/build.gradle.kts index c8554b80..4325ad87 100644 --- a/services/database-service/build.gradle.kts +++ b/services/database-service/build.gradle.kts @@ -7,6 +7,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.postgresql) implementation(libs.bundles.exposed) implementation(libs.koin.core) diff --git a/services/database-service/src/main/kotlin/org/katan/service/db/PostgresDatabaseService.kt b/services/database-service/src/main/kotlin/org/katan/service/db/PostgresDatabaseService.kt index ed26012e..5869286f 100644 --- a/services/database-service/src/main/kotlin/org/katan/service/db/PostgresDatabaseService.kt +++ b/services/database-service/src/main/kotlin/org/katan/service/db/PostgresDatabaseService.kt @@ -3,7 +3,7 @@ package org.katan.service.db import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.DatabaseConfig import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger -import org.katan.model.KatanConfig +import org.katan.KatanConfig internal class PostgresDatabaseService(private val config: KatanConfig) : DatabaseService { diff --git a/services/fs-service/build.gradle.kts b/services/fs-service/build.gradle.kts index b092d845..ba8e94ed 100644 --- a/services/fs-service/build.gradle.kts +++ b/services/fs-service/build.gradle.kts @@ -8,6 +8,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.ktx.serialization.core) implementation(libs.ktx.datetime) } \ No newline at end of file diff --git a/services/fs-service/src/main/kotlin/org/katan/service/fs/FSService.kt b/services/fs-service/src/main/kotlin/org/katan/service/fs/FSService.kt index 1475946e..0e34ede5 100644 --- a/services/fs-service/src/main/kotlin/org/katan/service/fs/FSService.kt +++ b/services/fs-service/src/main/kotlin/org/katan/service/fs/FSService.kt @@ -1,12 +1,12 @@ package org.katan.service.fs import org.katan.model.io.Bucket -import org.katan.model.io.VirtualFile +import org.katan.model.io.FileLike import java.io.File interface FSService { - suspend fun getFile(bucket: String?, destination: String, path: String): VirtualFile? + suspend fun getFile(bucket: String?, destination: String, path: String): FileLike? suspend fun readFile(path: String, startIndex: Int?, endIndex: Int?): File @@ -14,5 +14,5 @@ interface FSService { suspend fun getBucket(bucket: String, destination: String): Bucket? - suspend fun uploadFile(bucket: String?, destination: String, name: String, contents: ByteArray): VirtualFile + suspend fun uploadFile(bucket: String?, destination: String, name: String, contents: ByteArray): FileLike } diff --git a/services/fs-service/src/main/kotlin/org/katan/service/fs/http/dto/FSFileResponse.kt b/services/fs-service/src/main/kotlin/org/katan/service/fs/http/dto/FSFileResponse.kt index 09b79803..682a035e 100644 --- a/services/fs-service/src/main/kotlin/org/katan/service/fs/http/dto/FSFileResponse.kt +++ b/services/fs-service/src/main/kotlin/org/katan/service/fs/http/dto/FSFileResponse.kt @@ -4,7 +4,7 @@ import kotlinx.datetime.Instant import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import org.katan.model.io.Directory -import org.katan.model.io.VirtualFile +import org.katan.model.io.FileLike @Serializable data class FSSingleFileResponse( @@ -17,7 +17,7 @@ data class FSSingleFileResponse( @SerialName("created-at") val createdAt: Instant?, @SerialName("modified-at") val modifiedAt: Instant? ) { - constructor(file: VirtualFile) : this( + constructor(file: FileLike) : this( name = file.name, relativePath = file.relativePath, absolutePath = file.absolutePath, @@ -32,7 +32,7 @@ data class FSSingleFileResponse( @Serializable data class FSFileResponse(val file: FSSingleFileResponse) { - constructor(file: VirtualFile) : this(FSSingleFileResponse(file)) + constructor(file: FileLike) : this(FSSingleFileResponse(file)) } @Serializable diff --git a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/BucketImpl.kt b/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/BucketImpl.kt deleted file mode 100644 index 6de59e49..00000000 --- a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/BucketImpl.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.katan.service.fs.impl - -import kotlinx.datetime.Instant -import org.katan.model.io.Bucket - -public data class BucketImpl( - override val path: String, - override val name: String, - override val isLocal: Boolean, - override val createdAt: Instant? -) : Bucket diff --git a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/DirectoryImpl.kt b/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/DirectoryImpl.kt deleted file mode 100644 index e2d6c864..00000000 --- a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/DirectoryImpl.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.katan.service.fs.impl - -import org.katan.model.io.Directory -import org.katan.model.io.VirtualFile - -public data class DirectoryImpl( - private val file: VirtualFile, - override val children: List -) : Directory, VirtualFile by file diff --git a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/FileImpl.kt b/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/FileImpl.kt deleted file mode 100644 index 485f2d66..00000000 --- a/services/fs-service/src/main/kotlin/org/katan/service/fs/impl/FileImpl.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.katan.service.fs.impl - -import kotlinx.datetime.Instant -import org.katan.model.io.VirtualFile - -public data class FileImpl( - override val name: String, - override val relativePath: String, - override val absolutePath: String, - override val size: Long, - override val isDirectory: Boolean, - override val isHidden: Boolean, - override val createdAt: Instant?, - override val modifiedAt: Instant? -) : VirtualFile diff --git a/services/host-fs-service/build.gradle.kts b/services/host-fs-service/build.gradle.kts index cb987ca1..8513c5ad 100644 --- a/services/host-fs-service/build.gradle.kts +++ b/services/host-fs-service/build.gradle.kts @@ -7,6 +7,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(projects.services.fsService) implementation(libs.yoki) implementation(libs.koin.core) diff --git a/services/host-fs-service/src/main/kotlin/org/katan/service/fs/host/HostFSService.kt b/services/host-fs-service/src/main/kotlin/org/katan/service/fs/host/HostFSService.kt index 577ea14f..b06ca6df 100644 --- a/services/host-fs-service/src/main/kotlin/org/katan/service/fs/host/HostFSService.kt +++ b/services/host-fs-service/src/main/kotlin/org/katan/service/fs/host/HostFSService.kt @@ -8,18 +8,16 @@ import me.devnatan.yoki.Yoki import me.devnatan.yoki.models.volume.Volume import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.model.io.Bucket import org.katan.model.io.BucketNotFoundException +import org.katan.model.io.Directory +import org.katan.model.io.FileLike import org.katan.model.io.FileNotAccessibleException import org.katan.model.io.FileNotFoundException import org.katan.model.io.FileNotReadableException import org.katan.model.io.FileNotWritableException -import org.katan.model.io.VirtualFile import org.katan.service.fs.FSService -import org.katan.service.fs.impl.BucketImpl -import org.katan.service.fs.impl.DirectoryImpl -import org.katan.service.fs.impl.FileImpl import java.io.File import java.nio.file.Files import java.nio.file.LinkOption @@ -67,7 +65,7 @@ internal class HostFSService(private val dockerClient: Yoki, private val config: // } } - override suspend fun getFile(bucket: String?, destination: String, path: String): VirtualFile? { + override suspend fun getFile(bucket: String?, destination: String, path: String): FileLike? { val volume = if (bucket != null) { runCatching { dockerClient.volumes.inspect(bucket) } .onFailure { throw BucketNotFoundException(bucket) } @@ -108,7 +106,7 @@ internal class HostFSService(private val dockerClient: Yoki, private val config: override suspend fun getBucket(bucket: String, destination: String): Bucket? { val volume = getVolumeOrNull(bucket) ?: return null - return BucketImpl( + return Bucket( path = volume.mountPoint, name = volume.name, isLocal = volume.driver == "local", @@ -121,7 +119,7 @@ internal class HostFSService(private val dockerClient: Yoki, private val config: destination: String, name: String, contents: ByteArray - ): VirtualFile { + ): FileLike { if (!bucket.isNullOrBlank()) { throw IllegalStateException("Only local uploads are supported for now") } @@ -164,7 +162,7 @@ internal class HostFSService(private val dockerClient: Yoki, private val config: } } - private fun File.toDomain(base: File, children: List? = null): VirtualFile { + private fun File.toDomain(base: File, children: List? = null): FileLike { val absPath = toPath() val modifiedAt = runCatching { Files.getLastModifiedTime(absPath, LinkOption.NOFOLLOW_LINKS) @@ -184,30 +182,20 @@ internal class HostFSService(private val dockerClient: Yoki, private val config: .sumOf(File::length) } - val file = FileImpl( + return FileLike( name = name, relativePath = toRelativeStringOrEmpty(base), absolutePath = absolutePath, size = size, - isDirectory = isDirectory, isHidden = isHidden, createdAt = createdAt ?: modifiedAt, - modifiedAt = modifiedAt + modifiedAt = modifiedAt, + children = children ) - if (children == null) { - return file - } - - return DirectoryImpl(file, children) } - private fun File.toRelativeStringOrEmpty(base: File): String { - return toRelativeString(base).let { - if (it.equals(name, ignoreCase = false)) { - "" - } else { - it.substringBeforeLast(File.separatorChar) - } - } - } + private fun File.toRelativeStringOrEmpty(base: File): String = toRelativeString(base) + .takeIf { relative -> !relative.equals(name, ignoreCase = false) } + ?.substringBeforeLast(File.separatorChar) + .orEmpty() } diff --git a/services/id-service/build.gradle.kts b/services/id-service/build.gradle.kts index 70f7456e..3c86fba3 100644 --- a/services/id-service/build.gradle.kts +++ b/services/id-service/build.gradle.kts @@ -7,6 +7,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.snowflakeId) implementation(libs.hibernateValidator) implementation(libs.koin.core) diff --git a/services/id-service/src/main/kotlin/org/katan/service/id/SnowflakeIdServiceImpl.kt b/services/id-service/src/main/kotlin/org/katan/service/id/SnowflakeIdServiceImpl.kt index c97c9517..3b01a332 100644 --- a/services/id-service/src/main/kotlin/org/katan/service/id/SnowflakeIdServiceImpl.kt +++ b/services/id-service/src/main/kotlin/org/katan/service/id/SnowflakeIdServiceImpl.kt @@ -1,7 +1,7 @@ package org.katan.service.id import de.mkammerer.snowflakeid.SnowflakeIdGenerator -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.model.Snowflake import org.katan.model.toSnowflake import kotlin.coroutines.resume diff --git a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerInstanceServiceImpl.kt b/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerInstanceServiceImpl.kt index c3439457..75d71feb 100644 --- a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerInstanceServiceImpl.kt +++ b/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerInstanceServiceImpl.kt @@ -18,11 +18,12 @@ import me.devnatan.yoki.resource.container.remove import me.devnatan.yoki.resource.image.ImageNotFoundException import org.apache.logging.log4j.LogManager import org.katan.EventsDispatcher -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.model.Snowflake import org.katan.model.instance.InstanceInternalStats import org.katan.model.instance.InstanceNotFoundException import org.katan.model.instance.InstanceRuntime +import org.katan.model.instance.InstanceRuntimeNetwork import org.katan.model.instance.InstanceStatus import org.katan.model.instance.InstanceUpdateCode import org.katan.model.instance.UnitInstance @@ -317,8 +318,8 @@ internal class DockerInstanceServiceImpl( status: InstanceStatus, containerId: String?, connection: HostPort?, - ): DockerUnitInstanceImpl { - val instance = DockerUnitInstanceImpl( + ): UnitInstance { + val instance = UnitInstance( id = instanceId, status = status, updatePolicy = ImageUpdatePolicy.Always, @@ -359,9 +360,9 @@ internal class DockerInstanceServiceImpl( // val networkSettings = inspection.networkSettings val state = inspection.state - return InstanceRuntimeImpl( + return InstanceRuntime( id = inspection.id, - network = InstanceRuntimeNetworkImpl( + network = InstanceRuntimeNetwork( ipV4Address = "", hostname = null, networks = emptyList(), @@ -407,7 +408,7 @@ internal class DockerInstanceServiceImpl( status == InstanceStatus.Paused } - private suspend fun InstanceEntity.toDomain(): UnitInstance = DockerUnitInstanceImpl( + private suspend fun InstanceEntity.toDomain(): UnitInstance = UnitInstance( id = getId().toSnowflake(), updatePolicy = ImageUpdatePolicy.getById(updatePolicy), containerId = containerId, diff --git a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerUnitInstanceImpl.kt b/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerUnitInstanceImpl.kt deleted file mode 100644 index eba7cb71..00000000 --- a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/DockerUnitInstanceImpl.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.katan.service.instance.model - -import kotlinx.datetime.Instant -import org.katan.model.Snowflake -import org.katan.model.instance.InstanceRuntime -import org.katan.model.instance.InstanceStatus -import org.katan.model.instance.UnitInstance -import org.katan.model.net.HostPort -import org.katan.model.unit.ImageUpdatePolicy - -internal data class DockerUnitInstanceImpl( - override val id: Snowflake, - override val status: InstanceStatus, - override val updatePolicy: ImageUpdatePolicy, - override val containerId: String?, - override val connection: HostPort?, - override val runtime: InstanceRuntime?, - override val blueprintId: Snowflake, - override val createdAt: Instant, -) : UnitInstance diff --git a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceInternalStatsImpl.kt b/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceInternalStatsImpl.kt deleted file mode 100644 index 6049854e..00000000 --- a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceInternalStatsImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.katan.service.instance.model - -import org.katan.model.instance.InstanceInternalStats - -data class InstanceInternalStatsImpl( - override val pid: Long, - override val memoryUsage: Long, - override val memoryMaxUsage: Long, - override val memoryLimit: Long, - override val memoryCache: Long, - override val cpuUsage: Long, - @Suppress("ArrayInDataClass") override val perCpuUsage: LongArray, - override val systemCpuUsage: Long, - override val onlineCpus: Long, - override val lastCpuUsage: Long?, - @Suppress("ArrayInDataClass") override val lastPerCpuUsage: LongArray?, - override val lastSystemCpuUsage: Long?, - override val lastOnlineCpus: Long?, -) : InstanceInternalStats diff --git a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceRuntimeImpl.kt b/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceRuntimeImpl.kt deleted file mode 100644 index 6880f2e2..00000000 --- a/services/instance-service/src/main/kotlin/org/katan/service/instance/model/InstanceRuntimeImpl.kt +++ /dev/null @@ -1,42 +0,0 @@ -package org.katan.service.instance.model - -import kotlinx.datetime.Instant -import org.katan.model.instance.InstanceRuntime -import org.katan.model.instance.InstanceRuntimeMount -import org.katan.model.instance.InstanceRuntimeNetwork -import org.katan.model.instance.InstanceRuntimeSingleNetwork - -internal data class InstanceRuntimeImpl( - override val id: String, - override val network: InstanceRuntimeNetwork, - override val platform: String?, - override val exitCode: Int, - override val outOfMemory: Boolean, - override val error: String?, - override val status: String, - override val pid: Int, - override val fsPath: String?, - override val startedAt: Instant?, - override val finishedAt: Instant?, - override val mounts: List, -) : InstanceRuntime - -internal data class InstanceRuntimeNetworkImpl( - override val ipV4Address: String, - override val hostname: String?, - override val networks: List, -) : InstanceRuntimeNetwork - -internal data class InstanceRuntimeSingleNetworkImpl( - override val id: String, - override val name: String, - override val ipv4Address: String?, - override val ipv6Address: String?, -) : InstanceRuntimeSingleNetwork - -internal data class InstanceRuntimeMountImpl( - override val type: String, - override val target: String, - override val destination: String, - override val readonly: Boolean, -) : InstanceRuntimeMount diff --git a/services/network-service/build.gradle.kts b/services/network-service/build.gradle.kts index fc3df861..38a749a6 100644 --- a/services/network-service/build.gradle.kts +++ b/services/network-service/build.gradle.kts @@ -7,6 +7,7 @@ repositories { } dependencies { + implementation(projects.core) implementation(libs.yoki) implementation(libs.log4j.core) implementation(libs.koin.core) diff --git a/services/network-service/src/main/kotlin/org/katan/service/network/DockerNetworkServiceImpl.kt b/services/network-service/src/main/kotlin/org/katan/service/network/DockerNetworkServiceImpl.kt index b94c300c..4900bb78 100644 --- a/services/network-service/src/main/kotlin/org/katan/service/network/DockerNetworkServiceImpl.kt +++ b/services/network-service/src/main/kotlin/org/katan/service/network/DockerNetworkServiceImpl.kt @@ -8,10 +8,10 @@ import me.devnatan.yoki.models.network.Network import me.devnatan.yoki.resource.NetworkNotFoundException import me.devnatan.yoki.resource.network.create import org.apache.logging.log4j.LogManager -import org.katan.model.io.HostPort -import org.katan.model.io.InvalidNetworkAssignmentException -import org.katan.model.io.NetworkConnectionFailed -import org.katan.model.io.UnknownNetworkException +import org.katan.model.net.HostPort +import org.katan.model.net.InvalidNetworkAssignmentException +import org.katan.model.net.NetworkConnectionFailed +import org.katan.model.net.UnknownNetworkException internal class DockerNetworkServiceImpl(private val dockerClient: Yoki) : NetworkService { diff --git a/services/network-service/src/main/kotlin/org/katan/service/network/NetworkService.kt b/services/network-service/src/main/kotlin/org/katan/service/network/NetworkService.kt index 8385b868..7d29930e 100644 --- a/services/network-service/src/main/kotlin/org/katan/service/network/NetworkService.kt +++ b/services/network-service/src/main/kotlin/org/katan/service/network/NetworkService.kt @@ -1,6 +1,6 @@ package org.katan.service.network -import org.katan.model.io.HostPort +import org.katan.model.net.HostPort public interface NetworkService { diff --git a/services/unit-service/src/main/kotlin/org/katan/service/unit/LocalUnitService.kt b/services/unit-service/src/main/kotlin/org/katan/service/unit/LocalUnitService.kt index 9bae7e1d..f5b6b873 100644 --- a/services/unit-service/src/main/kotlin/org/katan/service/unit/LocalUnitService.kt +++ b/services/unit-service/src/main/kotlin/org/katan/service/unit/LocalUnitService.kt @@ -6,26 +6,24 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.withContext import kotlinx.datetime.Clock import kotlinx.datetime.Instant -import org.katan.model.KatanConfig +import org.katan.KatanConfig import org.katan.EventsDispatcher import org.katan.model.Snowflake import org.katan.model.instance.InstanceStatus import org.katan.model.toSnowflake import org.katan.model.unit.KUnit +import org.katan.model.unit.Unit import org.katan.model.unit.UnitStatus import org.katan.model.unit.auditlog.AuditLog import org.katan.model.unit.auditlog.AuditLogChange +import org.katan.model.unit.auditlog.AuditLogEntry import org.katan.model.unit.auditlog.AuditLogEvents import org.katan.model.unwrap import org.katan.service.account.AccountService import org.katan.service.id.IdService import org.katan.service.instance.InstanceService import org.katan.service.instance.model.CreateInstanceOptions -import org.katan.service.unit.model.AuditLogChangeImpl -import org.katan.service.unit.model.AuditLogEntryImpl -import org.katan.service.unit.model.AuditLogImpl import org.katan.service.unit.model.UnitCreateOptions -import org.katan.service.unit.model.UnitImpl import org.katan.service.unit.model.UnitUpdateOptions import org.katan.service.unit.repository.UnitEntity import org.katan.service.unit.repository.UnitRepository @@ -62,7 +60,7 @@ internal class LocalUnitService( else -> UnitStatus.Created } val createdAt = Clock.System.now() - val unit = UnitImpl( + val unit = Unit( id = generatedId, externalId = options.externalId, nodeId = config.nodeId, @@ -86,7 +84,7 @@ internal class LocalUnitService( actorId: Snowflake?, instant: Instant ) = unitRepository.createAuditLog( - AuditLogEntryImpl( + AuditLogEntry( id = idService.generate(), targetId = targetId, actorId = actorId, @@ -112,7 +110,7 @@ internal class LocalUnitService( if (changes.isNotEmpty()) { withContext(IO) { unitRepository.createAuditLog( - AuditLogEntryImpl( + AuditLogEntry( id = idService.generate(), targetId = actualUnit.id, actorId = options.actorId.unwrap(), @@ -145,7 +143,7 @@ internal class LocalUnitService( val changes = mutableListOf() options.name?.let { changes.add( - AuditLogChangeImpl( + AuditLogChange( key = "name", oldValue = actualUnit.name, newValue = updatedUnit.name @@ -164,13 +162,13 @@ internal class LocalUnitService( } } - return AuditLogImpl( + return AuditLog( entries, actors ) } - private fun UnitEntity.toDomain(): KUnit = UnitImpl( + private fun UnitEntity.toDomain(): KUnit = Unit( id = getId().toSnowflake(), externalId = externalId, instanceId = instanceId?.toSnowflake(), diff --git a/services/unit-service/src/main/kotlin/org/katan/service/unit/UnitException.kt b/services/unit-service/src/main/kotlin/org/katan/service/unit/UnitException.kt index fe903065..cc2583e0 100644 --- a/services/unit-service/src/main/kotlin/org/katan/service/unit/UnitException.kt +++ b/services/unit-service/src/main/kotlin/org/katan/service/unit/UnitException.kt @@ -1,6 +1,6 @@ package org.katan.service.unit -import org.katan.model.KatanException +import org.katan.KatanException public open class UnitException : KatanException() diff --git a/services/unit-service/src/main/kotlin/org/katan/service/unit/model/UnitImpl.kt b/services/unit-service/src/main/kotlin/org/katan/service/unit/model/UnitImpl.kt deleted file mode 100644 index 255d4b07..00000000 --- a/services/unit-service/src/main/kotlin/org/katan/service/unit/model/UnitImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package org.katan.service.unit.model - -import kotlinx.datetime.Instant -import org.katan.model.Snowflake -import org.katan.model.unit.KUnit -import org.katan.model.unit.UnitStatus - -internal data class UnitImpl( - override val id: Snowflake, - override val externalId: String?, - override val instanceId: Snowflake?, - override val nodeId: Int, - override val name: String, - override val createdAt: Instant, - override val updatedAt: Instant, - override val deletedAt: Instant?, - override val status: UnitStatus -) : KUnit diff --git a/services/unit-service/src/main/kotlin/org/katan/service/unit/repository/UnitRepositoryImpl.kt b/services/unit-service/src/main/kotlin/org/katan/service/unit/repository/UnitRepositoryImpl.kt index 7c4d106b..24d2091f 100644 --- a/services/unit-service/src/main/kotlin/org/katan/service/unit/repository/UnitRepositoryImpl.kt +++ b/services/unit-service/src/main/kotlin/org/katan/service/unit/repository/UnitRepositoryImpl.kt @@ -9,9 +9,8 @@ import org.jetbrains.exposed.sql.update import org.katan.model.ifNotEmpty import org.katan.model.toSnowflake import org.katan.model.unit.KUnit +import org.katan.model.unit.auditlog.AuditLogChange import org.katan.model.unit.auditlog.AuditLogEntry -import org.katan.service.unit.model.AuditLogChangeImpl -import org.katan.service.unit.model.AuditLogEntryImpl import org.katan.service.unit.model.UnitUpdateOptions import org.katan.service.unit.repository.entity.UnitAuditLogChangeEntity import org.katan.service.unit.repository.entity.UnitAuditLogChangesTable @@ -71,7 +70,7 @@ internal class UnitRepositoryImpl(private val database: Database) : UnitReposito } entity.map { entry -> - AuditLogEntryImpl( + AuditLogEntry( id = entry.id.value.toSnowflake(), targetId = entry.targetId.toSnowflake(), actorId = entry.actorId?.toSnowflake(), @@ -80,7 +79,7 @@ internal class UnitRepositoryImpl(private val database: Database) : UnitReposito additionalData = entry.additionalData, createdAt = entry.createdAt, changes = entry.changes.map { change -> - AuditLogChangeImpl( + AuditLogChange( key = change.key, oldValue = change.oldValue, newValue = change.newValue