Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.dcd.server.core.domain.application.model

import java.util.UUID

class ApplicationInitialScript(
val id: UUID,
val script: String,
val application: Application
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.dcd.server.core.domain.application.spi

interface ApplicationInitialScriptPort : CommandApplicationInitialScriptPort, QueryApplicationInitialScriptPort {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.dcd.server.core.domain.application.spi

import com.dcd.server.core.domain.application.model.Application
import com.dcd.server.core.domain.application.model.ApplicationInitialScript

interface CommandApplicationInitialScriptPort {
fun save(applicationInitialScript: ApplicationInitialScript)
fun saveAll(applicationInitialScriptList: List<ApplicationInitialScript>)
fun delete(applicationInitialScript: ApplicationInitialScript)
fun deleteAll(applicationInitialScriptList: List<ApplicationInitialScript>)
fun deleteByApplication(application: Application)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.dcd.server.core.domain.application.spi

import com.dcd.server.core.domain.application.model.Application
import com.dcd.server.core.domain.application.model.ApplicationInitialScript
import java.util.UUID

interface QueryApplicationInitialScriptPort {
fun findById(id: UUID): ApplicationInitialScript?
fun findAllByApplication(application: Application): List<ApplicationInitialScript>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.dcd.server.persistence.application

import com.dcd.server.core.domain.application.model.Application
import com.dcd.server.core.domain.application.model.ApplicationInitialScript
import com.dcd.server.core.domain.application.spi.ApplicationInitialScriptPort
import com.dcd.server.persistence.application.adapter.toDomain
import com.dcd.server.persistence.application.adapter.toEntity
import com.dcd.server.persistence.application.repository.ApplicationInitialScriptRepository
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Component
import java.util.UUID

@Component
class ApplicationInitialScriptPersistenceAdapter(
private val applicationInitialScriptRepository: ApplicationInitialScriptRepository
) : ApplicationInitialScriptPort{
override fun save(applicationInitialScript: ApplicationInitialScript) {
applicationInitialScriptRepository.save(applicationInitialScript.toEntity())
}

override fun saveAll(applicationInitialScriptList: List<ApplicationInitialScript>) {
applicationInitialScriptRepository.saveAll(applicationInitialScriptList.map { it.toEntity() })
}

override fun delete(applicationInitialScript: ApplicationInitialScript) {
applicationInitialScriptRepository.delete(applicationInitialScript.toEntity())
}

override fun deleteAll(applicationInitialScriptList: List<ApplicationInitialScript>) {
applicationInitialScriptRepository.deleteAll(applicationInitialScriptList.map { it.toEntity() })
}

override fun deleteByApplication(application: Application) {
applicationInitialScriptRepository.deleteAllByApplication(application.toEntity())
}

override fun findById(id: UUID): ApplicationInitialScript? =
applicationInitialScriptRepository.findByIdOrNull(id)
?.toDomain()

override fun findAllByApplication(application: Application): List<ApplicationInitialScript> =
applicationInitialScriptRepository.findAllByApplication(application.toEntity())
.map { it.toDomain() }
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.dcd.server.persistence.application.adapter

import com.dcd.server.core.domain.application.model.Application
import com.dcd.server.core.domain.application.model.ApplicationInitialScript
import com.dcd.server.persistence.application.entity.ApplicationInitialScriptJpaEntity
import com.dcd.server.persistence.application.entity.ApplicationJpaEntity
import com.dcd.server.persistence.env.adapter.toDomain
import com.dcd.server.persistence.workspace.adapter.toDomain
import com.dcd.server.persistence.workspace.adapter.toEntity
import java.util.*
Expand Down Expand Up @@ -37,4 +38,18 @@ fun ApplicationJpaEntity.toDomain(): Application =
status = this.status,
failureReason = this.failureReason,
labels = this.labels
)

fun ApplicationInitialScript.toEntity(): ApplicationInitialScriptJpaEntity =
ApplicationInitialScriptJpaEntity(
id = this.id,
script = this.script,
application = this.application.toEntity()
)

fun ApplicationInitialScriptJpaEntity.toDomain(): ApplicationInitialScript =
ApplicationInitialScript(
id = this.id,
script = this.script,
application = this.application.toDomain()
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.dcd.server.persistence.application.entity

import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.FetchType
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import jakarta.persistence.Table
import java.util.UUID

@Entity
@Table(name = "application_initial_script_entity")
class ApplicationInitialScriptJpaEntity(
@Id
@Column(columnDefinition = "BINARY(16)")
val id: UUID,
val script: String,
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "application_id")
val application: ApplicationJpaEntity,
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.dcd.server.persistence.application.repository

import com.dcd.server.persistence.application.entity.ApplicationInitialScriptJpaEntity
import com.dcd.server.persistence.application.entity.ApplicationJpaEntity
import org.springframework.data.jpa.repository.JpaRepository
import java.util.UUID

interface ApplicationInitialScriptRepository : JpaRepository<ApplicationInitialScriptJpaEntity, UUID> {
fun findAllByApplication(applicationJpaEntity: ApplicationJpaEntity): List<ApplicationInitialScriptJpaEntity>
fun deleteAllByApplication(applicationJpaEntity: ApplicationJpaEntity)
}
3 changes: 3 additions & 0 deletions src/test/resources/data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ SET MODE MySQL;
-- ํ…Œ์ด๋ธ” ์ƒ์„ฑ
drop table if exists application_entity cascade;
drop table if exists application_label_entity cascade;
drop table if exists application_initial_script_entity cascade;
drop table if exists role_entity cascade;
drop table if exists user_entity cascade;
drop table if exists workspace_entity cascade;
Expand All @@ -15,6 +16,7 @@ drop table if exists volume_entity cascade;
drop table if exists volume_mount_entity cascade;
create table application_entity (external_port integer not null, port integer not null, application_type varchar(255) check (application_type in ('SPRING_BOOT','NEST_JS','MYSQL','MARIA_DB','REDIS')), description varchar(255), failure_reason varchar(255), github_url varchar(255), id binary(16) not null, name varchar(255), status varchar(255) check (status in ('CREATED','PENDING','RUNNING','STOPPED','FAILURE')), version varchar(255), workspace_id binary(16), primary key (id));
create table application_label_entity (application_id binary(16) not null, label varchar(255));
create table application_initial_script_entity (id binary(16), script varchar(255), application_id binary(16) not null, primary key (id));
create table role_entity (roles varchar(255) check (roles in ('ROLE_ADMIN','ROLE_DEVELOPER','ROLE_USER')), user_id binary(16) not null);
create table user_entity (email varchar(255), id binary(16) not null, name varchar(255), password varchar(255), status varchar(255) check (status in ('PENDING','CREATED')), primary key (id));
create table workspace_entity (description varchar(255), id binary(16) not null, owner_id binary(16), title varchar(255), primary key (id));
Expand All @@ -35,6 +37,7 @@ alter table if exists application_env_entity add constraint FKm22cqdjjl434jyqenp
alter table if exists application_env_label_entity add constraint FKgd5b8upn11w2uh6voe20dm6df foreign key (application_env_id) references application_env_entity (id);
alter table if exists application_entity add constraint FKn9drxkrx2h6wlorxfy00mr45h foreign key (workspace_id) references workspace_entity;
alter table if exists application_label_entity add constraint FKq6iovxq5tdx2i1lwrx34kg0b9 foreign key (application_id) references application_entity;
alter table if exists application_initial_script_entity add constraint FKq6iovxq5tdx2i1lwrx34kg0b0 foreign key (appliccation_id) references application_entity;
alter table if exists role_entity add constraint FKrot6fehcor0f3sux5s6kgl0a4 foreign key (user_id) references user_entity;
alter table if exists workspace_entity add constraint FKlfxk1bhw5knckt8vv28xvx5g2 foreign key (owner_id) references user_entity;
alter table if exists domain_entity add constraint FKh7b0t3y0a7x5boh75j8lanww6 foreign key (application_id) references application_entity;
Expand Down
Loading