Skip to content

Commit

Permalink
Started data access #5
Browse files Browse the repository at this point in the history
  • Loading branch information
Martim Francisco committed Apr 4, 2022
1 parent 3dd1707 commit e0400b4
Show file tree
Hide file tree
Showing 13 changed files with 113 additions and 3 deletions.
6 changes: 6 additions & 0 deletions code/jvm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ repositories {
}

dependencies {
implementation("org.jdbi:jdbi3-kotlin-sqlobject:3.28.0")
implementation("org.jdbi:jdbi3-core:3.28.0")
implementation("org.jdbi:jdbi3-kotlin:3.28.0")
implementation("org.jdbi:jdbi3-postgres:3.28.0")
implementation("org.postgresql:postgresql:42.3.3")

implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
Expand Down
10 changes: 10 additions & 0 deletions code/jvm/src/main/kotlin/pt/isel/ion/teams/ConfigProperties.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package pt.isel.ion.teams

import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.ConstructorBinding

@ConstructorBinding
@ConfigurationProperties("app")
data class ConfigProperties(
val dbConnString: String
)
Original file line number Diff line number Diff line change
@@ -1,11 +1,34 @@
package pt.isel.ion.teams

import org.jdbi.v3.core.Jdbi
import org.jdbi.v3.core.kotlin.KotlinPlugin
import org.jdbi.v3.postgres.PostgresPlugin
import org.jdbi.v3.sqlobject.SqlObjectPlugin
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.context.properties.ConfigurationPropertiesScan
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean
import org.postgresql.ds.PGSimpleDataSource
import javax.sql.DataSource

@SpringBootApplication
class IOnteamsServiceApplication
@ConfigurationPropertiesScan
class IOnteamsServiceApplication(
private val configProperties: ConfigProperties
) {
@Bean
fun dataSource() = PGSimpleDataSource().apply {
setURL(configProperties.dbConnString)
}

@Bean
fun jdbi(dataSource: DataSource) = Jdbi.create(dataSource).apply {
installPlugin(KotlinPlugin())
installPlugin(PostgresPlugin())
installPlugin(SqlObjectPlugin())
}
}

fun main(args: Array<String>) {
runApplication<IOnteamsServiceApplication>(*args)
runApplication<IOnteamsServiceApplication>(*args)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package pt.isel.ion.teams.organizations

import org.jdbi.v3.core.Jdbi
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("api/orgs")
class OrganizationController(val jdbi: Jdbi) {

@GetMapping
fun getAllOrganizations() = jdbi.onDemand(OrganizationDAO::class.java).getAllOrganizations()

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package pt.isel.ion.teams.organizations

data class Organization (
val id: Int,
val name: String,
val description: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package pt.isel.ion.teams.organizations

import org.jdbi.v3.sqlobject.statement.SqlQuery

interface OrganizationDAO {
@SqlQuery("SELECT * FROM organization")
fun getAllOrganizations(): List<Organization>
}
2 changes: 1 addition & 1 deletion code/jvm/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@

app.dbConnString=jdbc:postgresql://localhost:5432/postgres?user=postgres&password=${POSTGRES_PASSWORD}
6 changes: 6 additions & 0 deletions code/sql/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions code/sql/.idea/dataSources.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions code/sql/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions code/sql/.idea/sql.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions code/sql/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions code/sql/createTables.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
CREATE TABLE ORGANIZATION (
id serial,
name varchar(50),
description varchar(256),
PRIMARY KEY (id)
);

Expand Down

0 comments on commit e0400b4

Please sign in to comment.