Add customer api module
This commit is contained in:
parent
7cd9ccd87b
commit
eedeb3abfa
@ -23,6 +23,7 @@ plugins {
|
||||
id("io.spring.dependency-management") version "1.0.11.RELEASE" apply false
|
||||
kotlin("jvm") version "1.4.21" apply false
|
||||
kotlin("plugin.spring") version "1.4.21" apply false
|
||||
kotlin("plugin.jpa") version "1.4.21" apply false
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
37
customer-api/.gitignore
vendored
Normal file
37
customer-api/.gitignore
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
HELP.md
|
||||
.gradle
|
||||
build/
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
19
customer-api/build.gradle.kts
Normal file
19
customer-api/build.gradle.kts
Normal file
@ -0,0 +1,19 @@
|
||||
plugins {
|
||||
id("org.springframework.boot")
|
||||
id("io.spring.dependency-management")
|
||||
kotlin("jvm")
|
||||
kotlin("plugin.spring")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
|
||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||
}
|
||||
|
||||
tasks.withType<Test> {
|
||||
useJUnitPlatform()
|
||||
}
|
BIN
customer-api/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
customer-api/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
5
customer-api/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
5
customer-api/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
@ -0,0 +1,71 @@
|
||||
package com.example.customerapi
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.CommandLineRunner
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
import org.springframework.boot.runApplication
|
||||
import org.springframework.data.annotation.Id
|
||||
import org.springframework.data.mongodb.core.mapping.Document
|
||||
import org.springframework.data.mongodb.repository.MongoRepository
|
||||
import org.springframework.stereotype.Repository
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import java.io.Serializable
|
||||
import kotlin.random.Random
|
||||
|
||||
@SpringBootApplication
|
||||
class CustomerApiApplication @Autowired constructor(
|
||||
private val customerRepository: CustomerRepository,
|
||||
) : CommandLineRunner {
|
||||
override fun run(vararg args: String?) {
|
||||
|
||||
val customer = Customer.create("Sambo - ${Random.nextInt(1000)}", "Chea - ${Random.nextInt(1000)}")
|
||||
|
||||
val saved = customerRepository.save(customer)
|
||||
|
||||
println(saved)
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
runApplication<CustomerApiApplication>(*args)
|
||||
}
|
||||
|
||||
|
||||
@Document
|
||||
data class Customer(
|
||||
@Id
|
||||
val id: String? = null,
|
||||
var firstName: String,
|
||||
var lastName: String,
|
||||
) : Serializable {
|
||||
companion object {
|
||||
fun create(
|
||||
firstName: String,
|
||||
lastName: String
|
||||
): Customer {
|
||||
return Customer(null, firstName, lastName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Repository
|
||||
interface CustomerRepository : MongoRepository<Customer, String>
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/customers")
|
||||
class CustomerController @Autowired constructor(
|
||||
private val customerRepository: CustomerRepository
|
||||
) {
|
||||
@GetMapping
|
||||
fun getAllCustomers(): Collection<Customer> {
|
||||
return customerRepository.findAll()
|
||||
}
|
||||
|
||||
@GetMapping("/create")
|
||||
fun createCustomer(): Customer? {
|
||||
val customer = Customer.create("Sambo - ${Random.nextInt(1000)}", "Chea - ${Random.nextInt(1000)}")
|
||||
return customerRepository.save(customer)
|
||||
}
|
||||
}
|
1
customer-api/src/main/resources/application.properties
Normal file
1
customer-api/src/main/resources/application.properties
Normal file
@ -0,0 +1 @@
|
||||
spring.data.mongodb.uri=mongodb://192.168.0.202:27017/db-customer-api
|
@ -0,0 +1,13 @@
|
||||
package com.example.customerapi
|
||||
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
|
||||
@SpringBootTest
|
||||
class CustomerApiApplicationTests {
|
||||
|
||||
@Test
|
||||
fun contextLoads() {
|
||||
}
|
||||
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
rootProject.name = "sample-modules"
|
||||
|
||||
include("demo", "lib")
|
||||
include("demo", "lib", "customer-api")
|
Loading…
Reference in New Issue
Block a user