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: