diff --git a/.idea/runConfigurations/komga__bootRun__localdb_dev.xml b/.idea/runConfigurations/komga__bootRun__localdb_dev.xml deleted file mode 100644 index 3d58ca167..000000000 --- a/.idea/runConfigurations/komga__bootRun__localdb_dev.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - true - - - \ No newline at end of file diff --git a/komga/build.gradle.kts b/komga/build.gradle.kts index d33e504ef..ce683c455 100644 --- a/komga/build.gradle.kts +++ b/komga/build.gradle.kts @@ -38,6 +38,8 @@ dependencies { kapt("org.springframework.boot:spring-boot-configuration-processor") + implementation("org.flywaydb:flyway-core:5.2.4") + // implementation("com.github.ben-manes.caffeine:caffeine:2.7.0") implementation("io.github.microutils:kotlin-logging:1.6.26") diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/Book.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/Book.kt index 8ac2a4c07..5e6060b82 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/Book.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/Book.kt @@ -33,7 +33,7 @@ class Book( ) { @Id @GeneratedValue - @Column(name = "id", nullable = false, unique = true) + @Column(name = "id", nullable = false) @PrimaryKeyJoinColumn var id: Long = 0 diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadata.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadata.kt index 46eb56b4a..254d2375f 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadata.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/BookMetadata.kt @@ -39,8 +39,7 @@ class BookMetadata( lateinit var book: Book @ElementCollection(fetch = FetchType.EAGER) - @CollectionTable(name = "book_metadata_pages", joinColumns = [JoinColumn(name = "book_metadata_id")]) - @Column(name = "pages") + @CollectionTable(name = "book_metadata_page", joinColumns = [JoinColumn(name = "book_metadata_id")]) private val _pages: MutableList = mutableListOf() val pages: List diff --git a/komga/src/main/resources/application-dev.yml b/komga/src/main/resources/application-dev.yml index 5d968b168..0fea6c0aa 100644 --- a/komga/src/main/resources/application-dev.yml +++ b/komga/src/main/resources/application-dev.yml @@ -1,4 +1,7 @@ #logging.level.org.springframework.security.web.FilterChainProxy: DEBUG komga: root-folder: D:\\files -# root-folder-scan-cron: 0 0 * * * ? \ No newline at end of file +# root-folder-scan-cron: 0 0 * * * ? +spring: + profiles: + include: flyway diff --git a/komga/src/main/resources/application-flyway.yml b/komga/src/main/resources/application-flyway.yml new file mode 100644 index 000000000..f9f02128f --- /dev/null +++ b/komga/src/main/resources/application-flyway.yml @@ -0,0 +1,6 @@ +spring: + flyway: + enabled: true + jpa: + hibernate: + ddl-auto: validate diff --git a/komga/src/main/resources/application-generatesql.yml b/komga/src/main/resources/application-generatesql.yml index c0c3aaa90..85ed8552c 100644 --- a/komga/src/main/resources/application-generatesql.yml +++ b/komga/src/main/resources/application-generatesql.yml @@ -2,6 +2,8 @@ spring: flyway: enabled: false jpa: + hibernate: + ddl-auto: none properties: javax: persistence: diff --git a/komga/src/main/resources/application-localdb.yml b/komga/src/main/resources/application-localdb.yml index 930a12bca..d0724573c 100644 --- a/komga/src/main/resources/application-localdb.yml +++ b/komga/src/main/resources/application-localdb.yml @@ -1,6 +1,4 @@ spring: datasource: url: jdbc:h2:./testdb;DB_CLOSE_DELAY=-1 - jpa: - hibernate: - ddl-auto: update + diff --git a/komga/src/main/resources/application-noflyway.yml b/komga/src/main/resources/application-noflyway.yml new file mode 100644 index 000000000..37187d603 --- /dev/null +++ b/komga/src/main/resources/application-noflyway.yml @@ -0,0 +1,6 @@ +spring: + flyway: + enabled: false + jpa: + hibernate: + ddl-auto: create diff --git a/komga/src/main/resources/application-prod.yml b/komga/src/main/resources/application-prod.yml new file mode 100644 index 000000000..a51dcb705 --- /dev/null +++ b/komga/src/main/resources/application-prod.yml @@ -0,0 +1,3 @@ +spring: + profiles: + include: flyway \ No newline at end of file diff --git a/komga/src/main/resources/db/migration/V20190819161603__First_Version.sql b/komga/src/main/resources/db/migration/V20190819161603__First_Version.sql new file mode 100644 index 000000000..32eaf4989 --- /dev/null +++ b/komga/src/main/resources/db/migration/V20190819161603__First_Version.sql @@ -0,0 +1,49 @@ +create sequence hibernate_sequence start with 1 increment by 1; + +create table book +( + id bigint generated by default as identity, + name varchar not null, + updated timestamp not null, + url varchar not null, + book_metadata_id bigint not null, + serie_id bigint not null, + primary key (id) +); + +create table book_metadata +( + id bigint generated by default as identity, + media_type varchar, + status varchar not null, + thumbnail blob, + primary key (id) +); + +create table book_metadata_page +( + book_metadata_id bigint not null, + file_name varchar not null, + media_type varchar not null +); + +create table serie +( + id bigint generated by default as identity, + name varchar not null, + updated timestamp not null, + url varchar not null, + primary key (id) +); + +alter table book + add constraint uk_book_book_metadata_id unique (book_metadata_id); + +alter table book + add constraint fk_book_book_metadata_book_metadata_id foreign key (book_metadata_id) references book_metadata (id); + +alter table book + add constraint fk_book_serie_serie_id foreign key (serie_id) references serie (id); + +alter table book_metadata_page + add constraint fk_book_metadata_page_book_metadata_book_metadata_id foreign key (book_metadata_id) references book_metadata (id); diff --git a/komga/src/test/resources/application-test.yml b/komga/src/test/resources/application-test.yml index 371c170ec..f2d5d18e6 100644 --- a/komga/src/test/resources/application-test.yml +++ b/komga/src/test/resources/application-test.yml @@ -1,6 +1,11 @@ application.version: TESTING spring: + flyway: + enabled: true + jpa: + hibernate: + ddl-auto: validate jpa: properties: hibernate: