Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions dataproviders/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>cz.jirutka.spring</groupId>
<artifactId>embedmongo-spring</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>

Expand All @@ -46,8 +51,13 @@
<configuration>
<compilerPlugins>
<plugin>spring</plugin>
<plugin>jpa</plugin>
<plugin>no-arg</plugin>
</compilerPlugins>
<pluginOptions>
<option>
no-arg:annotation=com.github.aantoniadis.dataproviders.db.mongo.entities.annotations.Entity
</option>
</pluginOptions>
<jvmTarget>1.8</jvmTarget>
</configuration>
<executions>
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.github.aantoniadis.dataproviders.db.mongo.config

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.mongodb.core.MongoTemplate
import cz.jirutka.spring.embedmongo.EmbeddedMongoFactoryBean
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories
import java.io.IOException

@Configuration
@EnableMongoRepositories(basePackages = ["com.github.aantoniadis.dataproviders.db.mongo"])
class MongoConfig {
companion object {
private const val MONGO_DB_URL = "localhost"
private const val MONGO_DB_NAME = "embeded_db"
}

@Bean
@Throws(IOException::class)
fun mongoTemplate(): MongoTemplate {
val mongo = EmbeddedMongoFactoryBean().apply { setBindIp(MONGO_DB_URL) }
val mongoClient = mongo.`object` ?: throw RuntimeException("Could not initialize mongo client")
return MongoTemplate(mongoClient, MONGO_DB_NAME)
}

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.github.aantoniadis.dataproviders.db.jpa.entities
package com.github.aantoniadis.dataproviders.db.mongo.entities

import com.github.aantoniadis.core.entities.Product
import com.github.aantoniadis.core.entities.ProductCode
import com.github.aantoniadis.dataproviders.db.mongo.entities.annotations.Entity
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
import java.math.BigDecimal
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table

@Entity
@Table(name = "products")
@Document
data class ProductEntity(
@Id
val code: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.github.aantoniadis.dataproviders.db.mongo.entities.annotations

@Target(
AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION
)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class Entity
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.github.aantoniadis.dataproviders.db.mongo.repositories

import com.github.aantoniadis.dataproviders.db.mongo.entities.ProductEntity
import org.springframework.data.mongodb.repository.MongoRepository

interface DBProductRepository : MongoRepository<ProductEntity, String>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.aantoniadis.dataproviders.db.jpa.repositories
package com.github.aantoniadis.dataproviders.db.mongo.repositories

import java.util.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
package com.github.aantoniadis.dataproviders.db.jpa.repositories
package com.github.aantoniadis.dataproviders.db.mongo.repositories

import com.github.aantoniadis.core.entities.Product
import com.github.aantoniadis.core.entities.ProductCode
import com.github.aantoniadis.dataproviders.db.jpa.entities.ProductEntity
import com.github.aantoniadis.dataproviders.db.jpa.entities.toProduct
import com.github.aantoniadis.dataproviders.db.jpa.entities.toProductEntity
import com.github.aantoniadis.dataproviders.db.mongo.entities.ProductEntity
import com.github.aantoniadis.dataproviders.db.mongo.entities.toProductEntity
import com.github.aantoniadis.dataproviders.db.mongo.entities.toProduct
import com.github.aantoniadis.delivery.usecases.core.gateways.ProductRepository
import javax.transaction.Transactional

open class JpaProductRepository(private val dbProductRepository: DBProductRepository) :
open class MongoProductRepository(private val dbProductRepository: DBProductRepository) :
ProductRepository {
override fun existsProductCode(productCode: ProductCode) = dbProductRepository.existsById(productCode.value)

override fun getByProductCode(productCode: ProductCode) =
dbProductRepository.findById(productCode.value).unwrap(ProductEntity::toProduct)

@Transactional
override fun save(product: Product) {
dbProductRepository.save(product.toProductEntity())
}
Expand Down
12 changes: 0 additions & 12 deletions dataproviders/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,12 +0,0 @@
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.hibernate.format_sql=true
spring.jpa.open-in-view=false
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
# Datasource
spring.datasource.url=jdbc:h2:mem:clean-architecture-db
spring.datasource.username=clean-architecture-db-username
spring.datasource.password=clean-architecture-db-password
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication(scanBasePackages = [
"com.github.aantoniadis.delivery.config",
"com.github.aantoniadis.dataproviders.db.jpa.config",
"com.github.aantoniadis.dataproviders.db.mongo.config",
"com.github.aantoniadis.delivery.rest.imp"
])
class App
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.github.aantoniadis.delivery.config

import com.github.aantoniadis.dataproviders.db.jpa.repositories.DBProductRepository
import com.github.aantoniadis.dataproviders.db.jpa.repositories.JpaProductRepository
import com.github.aantoniadis.dataproviders.db.mongo.repositories.DBProductRepository
import com.github.aantoniadis.dataproviders.db.mongo.repositories.MongoProductRepository
import com.github.aantoniadis.delivery.rest.imp.ProductResourceImp
import com.github.aantoniadis.delivery.usecases.core.UseCaseExecutor
import com.github.aantoniadis.delivery.usecases.core.UseCaseExecutorImp
Expand Down Expand Up @@ -30,5 +30,5 @@ class Module {
fun createProductUseCase(productRepository: ProductRepository) = CreateProductUseCase(productRepository)

@Bean
fun productRepository(dbProductRepository: DBProductRepository) = JpaProductRepository(dbProductRepository)
fun productRepository(dbProductRepository: DBProductRepository) = MongoProductRepository(dbProductRepository)
}