Skip to content

Commit ecc569f

Browse files
feat: simple app spring jooq (#40)
1 parent 33c903f commit ecc569f

File tree

6 files changed

+78
-15
lines changed

6 files changed

+78
-15
lines changed

jdbc/spring-jooq/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<properties>
3333
<maven.compiler.release>17</maven.compiler.release>
3434
<kotlin.version>1.9.22</kotlin.version>
35-
<jooq.ydb.version>1.0.0-RC1</jooq.ydb.version>
35+
<jooq.ydb.version>1.0.0</jooq.ydb.version>
3636
<flyway.version>10.7.1</flyway.version>
3737
</properties>
3838
<dependencies>
@@ -106,6 +106,7 @@
106106
<configuration>
107107
<environmentVariables>
108108
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
109+
<YDB_DOCKER_IMAGE>cr.yandex/yc/yandex-docker-local-ydb:trunk</YDB_DOCKER_IMAGE>
109110
</environmentVariables>
110111
</configuration>
111112
</plugin>
@@ -151,8 +152,7 @@
151152

152153
<!-- <database>-->
153154
<!-- <name>tech.ydb.jooq.codegen.YdbDatabase</name>-->
154-
<!-- <includes>.*</includes>-->
155-
<!-- <excludes/>-->
155+
<!-- <excludes>.sys.*</excludes>-->
156156
<!-- </database>-->
157157

158158
<!-- <target>-->

jdbc/spring-jooq/src/main/java/ydb/default_schema/Indexes.java

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jdbc/spring-jooq/src/main/java/ydb/default_schema/tables/Series.java

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package tech.ydb.jooq.repository
2+
3+
import org.springframework.stereotype.Repository
4+
import tech.ydb.jooq.YdbDSLContext
5+
import ydb.default_schema.Indexes
6+
import ydb.default_schema.Tables.SERIES
7+
8+
/**
9+
* @author Kirill Kurdyukov
10+
*/
11+
@Repository
12+
class SeriesRepository(val ydbDSLContext: YdbDSLContext) {
13+
14+
fun findByTitle(title: String) = ydbDSLContext.selectFrom(SERIES.useIndex(Indexes.TITLE_NAME.name))
15+
.where(SERIES.TITLE.eq(title))
16+
.fetchOne()
17+
}
Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
CREATE TABLE series
22
(
3-
series_id Int64,
4-
title Utf8,
5-
series_info Utf8,
3+
series_id Int64,
4+
title Text,
5+
series_info Text,
66
release_date Date,
7-
PRIMARY KEY (series_id)
7+
PRIMARY KEY (series_id),
8+
INDEX title_name GLOBAL ON (title)
89
);
910

1011
CREATE TABLE seasons
1112
(
12-
series_id Int64,
13-
season_id Int64,
14-
title Utf8,
13+
series_id Int64,
14+
season_id Int64,
15+
title Text,
1516
first_aired Date,
16-
last_aired Date,
17+
last_aired Date,
1718
PRIMARY KEY (series_id, season_id)
1819
);
1920

2021
CREATE TABLE episodes
2122
(
22-
series_id Int64,
23-
season_id Int64,
23+
series_id Int64,
24+
season_id Int64,
2425
episode_id Int64,
25-
title Utf8,
26-
air_date Date,
26+
title Text,
27+
air_date Date,
2728
PRIMARY KEY (series_id, season_id, episode_id)
2829
);

jdbc/spring-jooq/src/test/kotlin/tech/ydb/jooq/JooqTest.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.springframework.test.context.DynamicPropertyRegistry
99
import org.springframework.test.context.DynamicPropertySource
1010
import tech.ydb.jooq.repository.EpisodesRepository
1111
import tech.ydb.jooq.repository.SeasonsRepository
12+
import tech.ydb.jooq.repository.SeriesRepository
1213
import tech.ydb.test.junit5.YdbHelperExtension
1314
import ydb.default_schema.tables.records.EpisodesRecord
1415
import java.time.LocalDate
@@ -43,6 +44,9 @@ class JooqTest {
4344
@Autowired
4445
lateinit var ydbDSLContext: YdbDSLContext
4546

47+
@Autowired
48+
lateinit var seriesRepository: SeriesRepository
49+
4650
@Test
4751
fun findAllTest() {
4852
assertEquals(70, episodesRepository.findAll().size)
@@ -136,4 +140,10 @@ class JooqTest {
136140
assertEquals("IT Crowd", titles[i - 1].second)
137141
}
138142
}
143+
144+
@Test
145+
fun findByTitleViewIndex() {
146+
val record = seriesRepository.findByTitle("IT Crowd")!!
147+
assertEquals(LocalDate.parse("2006-02-03"), record.releaseDate)
148+
}
139149
}

0 commit comments

Comments
 (0)