mirror of
https://github.com/gotson/komga.git
synced 2026-05-08 12:35:30 +02:00
feat(database): consolidate PostgreSQL migrations into a single baseline schema with quoted identifiers to resolve persistent case-sensitivity issues and JDBC migration failures
This commit is contained in:
parent
1b4f8018ae
commit
ff6bf2d6ac
87 changed files with 661 additions and 1355 deletions
|
|
@ -0,0 +1,637 @@
|
|||
-- PostgreSQL full schema (RE-AUDITED from SQLite dump)
|
||||
-- This file contains the complete schema as of V20250730173126
|
||||
-- Built with QUOTED identifiers for case-sensitivity on PostgreSQL
|
||||
|
||||
CREATE TABLE "LIBRARY"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"NAME" varchar NOT NULL,
|
||||
"ROOT" varchar NOT NULL,
|
||||
"IMPORT_COMICINFO_BOOK" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_COMICINFO_SERIES" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_COMICINFO_COLLECTION" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_EPUB_BOOK" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_EPUB_SERIES" boolean NOT NULL DEFAULT true,
|
||||
"SCAN_FORCE_MODIFIED_TIME" boolean NOT NULL DEFAULT false,
|
||||
"SCAN_STARTUP" boolean NOT NULL DEFAULT false,
|
||||
"IMPORT_LOCAL_ARTWORK" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_COMICINFO_READLIST" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_BARCODE_ISBN" boolean NOT NULL DEFAULT true,
|
||||
"CONVERT_TO_CBZ" boolean NOT NULL DEFAULT false,
|
||||
"REPAIR_EXTENSIONS" boolean NOT NULL DEFAULT false,
|
||||
"EMPTY_TRASH_AFTER_SCAN" boolean NOT NULL DEFAULT false,
|
||||
"IMPORT_MYLAR_SERIES" boolean NOT NULL DEFAULT true,
|
||||
"SERIES_COVER" varchar NOT NULL DEFAULT 'FIRST',
|
||||
"UNAVAILABLE_DATE" timestamp NULL DEFAULT NULL,
|
||||
"HASH_FILES" boolean NOT NULL DEFAULT true,
|
||||
"HASH_PAGES" boolean NOT NULL DEFAULT false,
|
||||
"ANALYZE_DIMENSIONS" boolean NOT NULL DEFAULT true,
|
||||
"IMPORT_COMICINFO_SERIES_APPEND_VOLUME" boolean NOT NULL DEFAULT true,
|
||||
"ONESHOTS_DIRECTORY" varchar NULL DEFAULT NULL,
|
||||
"SCAN_CBX" boolean NOT NULL DEFAULT true,
|
||||
"SCAN_PDF" boolean NOT NULL DEFAULT true,
|
||||
"SCAN_EPUB" boolean NOT NULL DEFAULT true,
|
||||
"SCAN_INTERVAL" varchar NOT NULL DEFAULT 'EVERY_6H',
|
||||
"HASH_KOREADER" boolean NOT NULL DEFAULT false
|
||||
);
|
||||
|
||||
CREATE TABLE "USER"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"EMAIL" varchar NOT NULL UNIQUE,
|
||||
"PASSWORD" varchar NOT NULL,
|
||||
"SHARED_ALL_LIBRARIES" boolean NOT NULL DEFAULT true,
|
||||
"AGE_RESTRICTION" integer,
|
||||
"AGE_RESTRICTION_ALLOW_ONLY" boolean
|
||||
);
|
||||
|
||||
CREATE TABLE "USER_LIBRARY_SHARING"
|
||||
(
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"LIBRARY_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("USER_ID", "LIBRARY_ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID"),
|
||||
FOREIGN KEY ("LIBRARY_ID") REFERENCES "LIBRARY" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"FILE_LAST_MODIFIED" timestamp NOT NULL,
|
||||
"NAME" varchar NOT NULL,
|
||||
"URL" varchar NOT NULL,
|
||||
"LIBRARY_ID" varchar NOT NULL,
|
||||
"BOOK_COUNT" integer NOT NULL DEFAULT 0,
|
||||
"DELETED_DATE" timestamp NULL DEFAULT NULL,
|
||||
"oneshot" boolean NOT NULL DEFAULT false,
|
||||
FOREIGN KEY ("LIBRARY_ID") REFERENCES "LIBRARY" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA"
|
||||
(
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"STATUS" varchar NOT NULL,
|
||||
"STATUS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TITLE" varchar NOT NULL,
|
||||
"TITLE_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TITLE_SORT" varchar NOT NULL,
|
||||
"TITLE_SORT_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"SERIES_ID" varchar NOT NULL PRIMARY KEY,
|
||||
"PUBLISHER" varchar NOT NULL DEFAULT '',
|
||||
"PUBLISHER_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"READING_DIRECTION" varchar NULL,
|
||||
"READING_DIRECTION_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"AGE_RATING" integer NULL,
|
||||
"AGE_RATING_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"SUMMARY" text NOT NULL DEFAULT '',
|
||||
"SUMMARY_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"LANGUAGE" varchar NOT NULL DEFAULT '',
|
||||
"LANGUAGE_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"GENRES_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TAGS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TOTAL_BOOK_COUNT" integer NULL,
|
||||
"TOTAL_BOOK_COUNT_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"SHARING_LABELS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"LINKS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"ALTERNATE_TITLES_LOCK" boolean NOT NULL DEFAULT false,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"FILE_LAST_MODIFIED" timestamp NOT NULL,
|
||||
"NAME" varchar NOT NULL,
|
||||
"URL" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
"FILE_SIZE" bigint NOT NULL DEFAULT 0,
|
||||
"NUMBER" integer NOT NULL DEFAULT 0,
|
||||
"LIBRARY_ID" varchar NOT NULL,
|
||||
"FILE_HASH" varchar NOT NULL DEFAULT '',
|
||||
"DELETED_DATE" timestamp NULL DEFAULT NULL,
|
||||
"oneshot" boolean NOT NULL DEFAULT false,
|
||||
"FILE_HASH_KOREADER" varchar NOT NULL DEFAULT '',
|
||||
FOREIGN KEY ("LIBRARY_ID") REFERENCES "LIBRARY" ("ID"),
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "MEDIA_PAGE"
|
||||
(
|
||||
"FILE_NAME" varchar NOT NULL,
|
||||
"MEDIA_TYPE" varchar NOT NULL,
|
||||
"NUMBER" integer NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"WIDTH" integer NULL,
|
||||
"HEIGHT" integer NULL,
|
||||
"FILE_HASH" varchar NOT NULL DEFAULT '',
|
||||
"FILE_SIZE" bigint NULL,
|
||||
PRIMARY KEY ("BOOK_ID", "NUMBER"),
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "MEDIA_FILE"
|
||||
(
|
||||
"FILE_NAME" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"MEDIA_TYPE" varchar NULL,
|
||||
"SUB_TYPE" varchar NULL,
|
||||
"FILE_SIZE" bigint NULL,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_AUTHOR"
|
||||
(
|
||||
"NAME" varchar NOT NULL,
|
||||
"ROLE" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "COLLECTION"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"NAME" varchar NOT NULL,
|
||||
"ORDERED" boolean NOT NULL DEFAULT false,
|
||||
"SERIES_COUNT" integer NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE "COLLECTION_SERIES"
|
||||
(
|
||||
"COLLECTION_ID" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
"NUMBER" integer NOT NULL,
|
||||
PRIMARY KEY ("COLLECTION_ID", "SERIES_ID"),
|
||||
FOREIGN KEY ("COLLECTION_ID") REFERENCES "COLLECTION" ("ID"),
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "THUMBNAIL_BOOK"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"THUMBNAIL" bytea NULL,
|
||||
"URL" varchar NULL,
|
||||
"SELECTED" boolean NOT NULL DEFAULT false,
|
||||
"TYPE" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"WIDTH" integer NOT NULL DEFAULT 0,
|
||||
"HEIGHT" integer NOT NULL DEFAULT 0,
|
||||
"MEDIA_TYPE" varchar NOT NULL DEFAULT '',
|
||||
"FILE_SIZE" bigint NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "MEDIA"
|
||||
(
|
||||
"MEDIA_TYPE" varchar NULL,
|
||||
"STATUS" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"COMMENT" varchar NULL,
|
||||
"BOOK_ID" varchar NOT NULL PRIMARY KEY,
|
||||
"PAGE_COUNT" integer NOT NULL DEFAULT 0,
|
||||
"EXTENSION_CLASS" varchar NULL,
|
||||
"_UNUSED" varchar NULL,
|
||||
"EXTENSION_VALUE_BLOB" bytea NULL,
|
||||
"EPUB_DIVINA_COMPATIBLE" boolean NOT NULL DEFAULT false,
|
||||
"EPUB_IS_KEPUB" boolean NOT NULL DEFAULT false,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "READLIST"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"NAME" varchar NOT NULL,
|
||||
"BOOK_COUNT" integer NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"SUMMARY" text NOT NULL DEFAULT '',
|
||||
"ORDERED" boolean NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE "READLIST_BOOK"
|
||||
(
|
||||
"READLIST_ID" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"NUMBER" integer NOT NULL,
|
||||
PRIMARY KEY ("READLIST_ID", "BOOK_ID"),
|
||||
FOREIGN KEY ("READLIST_ID") REFERENCES "READLIST" ("ID"),
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA_GENRE"
|
||||
(
|
||||
"GENRE" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA_TAG"
|
||||
(
|
||||
"TAG" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_TAG"
|
||||
(
|
||||
"TAG" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA"
|
||||
(
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"NUMBER" varchar NOT NULL,
|
||||
"NUMBER_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"NUMBER_SORT" real NOT NULL,
|
||||
"NUMBER_SORT_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"RELEASE_DATE" date NULL,
|
||||
"RELEASE_DATE_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"SUMMARY" text NOT NULL DEFAULT '',
|
||||
"SUMMARY_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TITLE" varchar NOT NULL,
|
||||
"TITLE_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"AUTHORS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"TAGS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"BOOK_ID" varchar NOT NULL PRIMARY KEY,
|
||||
"ISBN" varchar NOT NULL DEFAULT '',
|
||||
"ISBN_LOCK" boolean NOT NULL DEFAULT false,
|
||||
"LINKS_LOCK" boolean NOT NULL DEFAULT false,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_AGGREGATION"
|
||||
(
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"RELEASE_DATE" date NULL,
|
||||
"SUMMARY" text NOT NULL DEFAULT '',
|
||||
"SUMMARY_NUMBER" varchar NOT NULL DEFAULT '',
|
||||
"SERIES_ID" varchar NOT NULL PRIMARY KEY,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_AGGREGATION_AUTHOR"
|
||||
(
|
||||
"NAME" varchar NOT NULL,
|
||||
"ROLE" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "READ_PROGRESS_SERIES"
|
||||
(
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"READ_COUNT" integer NOT NULL,
|
||||
"IN_PROGRESS_COUNT" integer NOT NULL,
|
||||
"MOST_RECENT_READ_DATE" timestamp NULL,
|
||||
"LAST_MODIFIED_DATE" timestamp NULL,
|
||||
PRIMARY KEY ("SERIES_ID", "USER_ID"),
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SIDECAR"
|
||||
(
|
||||
"URL" varchar NOT NULL PRIMARY KEY,
|
||||
"PARENT_URL" varchar NOT NULL,
|
||||
"LAST_MODIFIED_TIME" timestamp NOT NULL,
|
||||
"LIBRARY_ID" varchar NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE "AUTHENTICATION_ACTIVITY"
|
||||
(
|
||||
"USER_ID" varchar NULL DEFAULT NULL,
|
||||
"EMAIL" varchar NULL DEFAULT NULL,
|
||||
"IP" varchar NULL DEFAULT NULL,
|
||||
"USER_AGENT" varchar NULL DEFAULT NULL,
|
||||
"SUCCESS" boolean NOT NULL,
|
||||
"ERROR" varchar NULL DEFAULT NULL,
|
||||
"DATE_TIME" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"SOURCE" varchar NULL DEFAULT NULL,
|
||||
"API_KEY_ID" varchar NULL DEFAULT NULL,
|
||||
"API_KEY_COMMENT" varchar NULL DEFAULT NULL,
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_AGGREGATION_TAG"
|
||||
(
|
||||
"TAG" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "THUMBNAIL_SERIES"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"URL" varchar NULL DEFAULT NULL,
|
||||
"SELECTED" boolean NOT NULL DEFAULT false,
|
||||
"THUMBNAIL" bytea NULL DEFAULT NULL,
|
||||
"TYPE" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
"WIDTH" integer NOT NULL DEFAULT 0,
|
||||
"HEIGHT" integer NOT NULL DEFAULT 0,
|
||||
"MEDIA_TYPE" varchar NOT NULL DEFAULT '',
|
||||
"FILE_SIZE" bigint NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "READ_PROGRESS"
|
||||
(
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"PAGE" integer NOT NULL,
|
||||
"COMPLETED" boolean NOT NULL,
|
||||
"READ_DATE" timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"device_id" varchar DEFAULT '',
|
||||
"device_name" varchar DEFAULT '',
|
||||
"locator" bytea NULL,
|
||||
PRIMARY KEY ("BOOK_ID", "USER_ID"),
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "THUMBNAIL_COLLECTION"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"SELECTED" boolean NOT NULL DEFAULT false,
|
||||
"THUMBNAIL" bytea NOT NULL,
|
||||
"TYPE" varchar NOT NULL,
|
||||
"COLLECTION_ID" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"WIDTH" integer NOT NULL DEFAULT 0,
|
||||
"HEIGHT" integer NOT NULL DEFAULT 0,
|
||||
"MEDIA_TYPE" varchar NOT NULL DEFAULT '',
|
||||
"FILE_SIZE" bigint NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY ("COLLECTION_ID") REFERENCES "COLLECTION" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "THUMBNAIL_READLIST"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"SELECTED" boolean NOT NULL DEFAULT false,
|
||||
"THUMBNAIL" bytea NOT NULL,
|
||||
"TYPE" varchar NOT NULL,
|
||||
"READLIST_ID" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"WIDTH" integer NOT NULL DEFAULT 0,
|
||||
"HEIGHT" integer NOT NULL DEFAULT 0,
|
||||
"MEDIA_TYPE" varchar NOT NULL DEFAULT '',
|
||||
"FILE_SIZE" bigint NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY ("READLIST_ID") REFERENCES "READLIST" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "BOOK_METADATA_LINK"
|
||||
(
|
||||
"LABEL" varchar NOT NULL,
|
||||
"URL" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("BOOK_ID") REFERENCES "BOOK" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "HISTORICAL_EVENT"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"TYPE" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NULL,
|
||||
"SERIES_ID" varchar NULL,
|
||||
"TIMESTAMP" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE "HISTORICAL_EVENT_PROPERTIES"
|
||||
(
|
||||
"ID" varchar NOT NULL,
|
||||
"KEY" varchar NOT NULL,
|
||||
"VALUE" varchar NOT NULL,
|
||||
PRIMARY KEY ("ID", "KEY"),
|
||||
FOREIGN KEY ("ID") REFERENCES "HISTORICAL_EVENT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA_SHARING"
|
||||
(
|
||||
"LABEL" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "USER_SHARING"
|
||||
(
|
||||
"LABEL" varchar NOT NULL,
|
||||
"ALLOW" boolean NOT NULL,
|
||||
"USER_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("LABEL", "ALLOW", "USER_ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA_LINK"
|
||||
(
|
||||
"LABEL" varchar NOT NULL,
|
||||
"URL" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERIES_METADATA_ALTERNATE_TITLE"
|
||||
(
|
||||
"LABEL" varchar NOT NULL,
|
||||
"TITLE" varchar NOT NULL,
|
||||
"SERIES_ID" varchar NOT NULL,
|
||||
FOREIGN KEY ("SERIES_ID") REFERENCES "SERIES" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "PAGE_HASH"
|
||||
(
|
||||
"HASH" varchar NOT NULL PRIMARY KEY,
|
||||
"SIZE" bigint NULL,
|
||||
"ACTION" varchar NOT NULL,
|
||||
"DELETE_COUNT" integer NOT NULL DEFAULT 0,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE "PAGE_HASH_THUMBNAIL"
|
||||
(
|
||||
"HASH" varchar NOT NULL PRIMARY KEY,
|
||||
"THUMBNAIL" bytea NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE "ANNOUNCEMENTS_READ"
|
||||
(
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"ANNOUNCEMENT_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("USER_ID", "ANNOUNCEMENT_ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "LIBRARY_EXCLUSIONS"
|
||||
(
|
||||
"LIBRARY_ID" varchar NOT NULL,
|
||||
"EXCLUSION" varchar NOT NULL,
|
||||
PRIMARY KEY ("LIBRARY_ID", "EXCLUSION"),
|
||||
FOREIGN KEY ("LIBRARY_ID") REFERENCES "LIBRARY" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SERVER_SETTINGS"
|
||||
(
|
||||
"KEY" varchar NOT NULL PRIMARY KEY,
|
||||
"VALUE" varchar NULL
|
||||
);
|
||||
|
||||
CREATE TABLE "USER_API_KEY"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"LAST_MODIFIED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"API_KEY" varchar NOT NULL UNIQUE,
|
||||
"COMMENT" varchar NOT NULL,
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT"
|
||||
(
|
||||
"ID" varchar NOT NULL PRIMARY KEY,
|
||||
"CREATED_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"API_KEY_ID" varchar NULL,
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT_BOOK_REMOVED_SYNCED"
|
||||
(
|
||||
"SYNC_POINT_ID" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("SYNC_POINT_ID", "BOOK_ID"),
|
||||
FOREIGN KEY ("SYNC_POINT_ID") REFERENCES "SYNC_POINT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT_BOOK"
|
||||
(
|
||||
"SYNC_POINT_ID" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
"BOOK_CREATED_DATE" timestamp NOT NULL,
|
||||
"BOOK_LAST_MODIFIED_DATE" timestamp NOT NULL,
|
||||
"BOOK_FILE_LAST_MODIFIED" timestamp NOT NULL,
|
||||
"BOOK_FILE_SIZE" bigint NOT NULL,
|
||||
"BOOK_FILE_HASH" varchar NOT NULL,
|
||||
"BOOK_METADATA_LAST_MODIFIED_DATE" timestamp NOT NULL,
|
||||
"BOOK_READ_PROGRESS_LAST_MODIFIED_DATE" timestamp NULL,
|
||||
"SYNCED" boolean NOT NULL DEFAULT false,
|
||||
"BOOK_THUMBNAIL_ID" varchar NULL,
|
||||
PRIMARY KEY ("SYNC_POINT_ID", "BOOK_ID"),
|
||||
FOREIGN KEY ("SYNC_POINT_ID") REFERENCES "SYNC_POINT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT_READLIST"
|
||||
(
|
||||
"SYNC_POINT_ID" varchar NOT NULL,
|
||||
"READLIST_ID" varchar NOT NULL,
|
||||
"READLIST_NAME" varchar NOT NULL,
|
||||
"READLIST_CREATED_DATE" timestamp NOT NULL,
|
||||
"READLIST_LAST_MODIFIED_DATE" timestamp NOT NULL,
|
||||
"SYNCED" boolean NOT NULL DEFAULT false,
|
||||
PRIMARY KEY ("SYNC_POINT_ID", "READLIST_ID"),
|
||||
FOREIGN KEY ("SYNC_POINT_ID") REFERENCES "SYNC_POINT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT_READLIST_BOOK"
|
||||
(
|
||||
"SYNC_POINT_ID" varchar NOT NULL,
|
||||
"READLIST_ID" varchar NOT NULL,
|
||||
"BOOK_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("SYNC_POINT_ID", "READLIST_ID", "BOOK_ID"),
|
||||
FOREIGN KEY ("SYNC_POINT_ID") REFERENCES "SYNC_POINT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "SYNC_POINT_READLIST_REMOVED_SYNCED"
|
||||
(
|
||||
"SYNC_POINT_ID" varchar NOT NULL,
|
||||
"READLIST_ID" varchar NOT NULL,
|
||||
PRIMARY KEY ("SYNC_POINT_ID", "READLIST_ID"),
|
||||
FOREIGN KEY ("SYNC_POINT_ID") REFERENCES "SYNC_POINT" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "USER_ROLE"
|
||||
(
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"ROLE" varchar NOT NULL,
|
||||
PRIMARY KEY ("USER_ID", "ROLE"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
CREATE TABLE "CLIENT_SETTINGS_GLOBAL"
|
||||
(
|
||||
"KEY" varchar NOT NULL PRIMARY KEY,
|
||||
"VALUE" varchar NOT NULL,
|
||||
"ALLOW_UNAUTHORIZED" boolean NOT NULL DEFAULT false
|
||||
);
|
||||
|
||||
CREATE TABLE "CLIENT_SETTINGS_USER"
|
||||
(
|
||||
"USER_ID" varchar NOT NULL,
|
||||
"KEY" varchar NOT NULL,
|
||||
"VALUE" varchar NOT NULL,
|
||||
PRIMARY KEY ("KEY", "USER_ID"),
|
||||
FOREIGN KEY ("USER_ID") REFERENCES "USER" ("ID")
|
||||
);
|
||||
|
||||
-- Indices
|
||||
CREATE INDEX "idx__thumbnail_book__book_id" on "THUMBNAIL_BOOK" ("BOOK_ID");
|
||||
CREATE INDEX "idx__series_metadata_sharing__series_id" on "SERIES_METADATA_SHARING" ("SERIES_ID");
|
||||
CREATE INDEX "idx__book_metadata_aggregation_tag__series_id" on "BOOK_METADATA_AGGREGATION_TAG" ("SERIES_ID");
|
||||
CREATE INDEX "idx__thumbnail_collection__collection_id" on "THUMBNAIL_COLLECTION" ("COLLECTION_ID");
|
||||
CREATE INDEX "idx__thumbnail_readlist__readlist_id" on "THUMBNAIL_READLIST" ("READLIST_ID");
|
||||
CREATE INDEX "idx__thumbnail_series__series_id" on "THUMBNAIL_SERIES" ("SERIES_ID");
|
||||
CREATE INDEX "idx__authentication_activity__user_id" on "AUTHENTICATION_ACTIVITY" ("USER_ID");
|
||||
CREATE INDEX "idx__book_metadata__number_sort" on "BOOK_METADATA" ("NUMBER_SORT");
|
||||
CREATE INDEX "idx__series__last_modified_date" on "SERIES" ("LAST_MODIFIED_DATE");
|
||||
CREATE INDEX "idx__series__created_date" on "SERIES" ("CREATED_DATE");
|
||||
CREATE INDEX "idx__book_metadata__release_date" on "BOOK_METADATA" ("RELEASE_DATE");
|
||||
CREATE INDEX "idx__read_progress__last_modified_date" on "READ_PROGRESS" ("LAST_MODIFIED_DATE");
|
||||
CREATE INDEX "idx__media__status" on "MEDIA" ("STATUS");
|
||||
CREATE INDEX "idx__series_metadata_link__series_id" on "SERIES_METADATA_LINK" ("SERIES_ID");
|
||||
CREATE INDEX "idx__series_metadata_alternate_title__series_id" on "SERIES_METADATA_ALTERNATE_TITLE" ("SERIES_ID");
|
||||
CREATE INDEX "idx__series_metadata__title" on "SERIES_METADATA" ("TITLE");
|
||||
CREATE INDEX "idx__library_exclusions__library_id" on "LIBRARY_EXCLUSIONS" ("LIBRARY_ID");
|
||||
CREATE INDEX "idx__thumbnail_book__width" on "THUMBNAIL_BOOK" ("WIDTH");
|
||||
CREATE INDEX "idx__thumbnail_book__height" on "THUMBNAIL_BOOK" ("HEIGHT");
|
||||
CREATE INDEX "idx__thumbnail_book__file_size" on "THUMBNAIL_BOOK" ("FILE_SIZE");
|
||||
CREATE INDEX "idx__user_api_key__user_id" on "USER_API_KEY" ("USER_ID");
|
||||
CREATE INDEX "idx__sync_point__user_id" on "SYNC_POINT" ("USER_ID");
|
||||
CREATE INDEX "idx__sync_point_book_removed_status__sync_point_id" on "SYNC_POINT_BOOK_REMOVED_SYNCED" ("SYNC_POINT_ID");
|
||||
CREATE INDEX "idx__sync_point_book__sync_point_id" on "SYNC_POINT_BOOK" ("SYNC_POINT_ID");
|
||||
CREATE INDEX "idx__sync_point_readlist__sync_point_id" on "SYNC_POINT_READLIST" ("SYNC_POINT_ID");
|
||||
CREATE INDEX "idx__sync_point_readlist_book__sync_point_id_readlist_id" on "SYNC_POINT_READLIST_BOOK" ("SYNC_POINT_ID", "READLIST_ID");
|
||||
CREATE INDEX "idx__book_metadata_link__book_id" on "BOOK_METADATA_LINK" ("BOOK_ID");
|
||||
CREATE INDEX "idx__book__series_id" on "BOOK" ("SERIES_ID");
|
||||
CREATE INDEX "idx__book__library_id" on "BOOK" ("LIBRARY_ID");
|
||||
CREATE INDEX "idx__book_metadata_author__book_id" on "BOOK_METADATA_AUTHOR" ("BOOK_ID");
|
||||
CREATE INDEX "idx__book_metadata_tag__book_id" on "BOOK_METADATA_TAG" ("BOOK_ID");
|
||||
CREATE INDEX "idx__media_file__book_id" on "MEDIA_FILE" ("BOOK_ID");
|
||||
CREATE INDEX "idx__series__library_id" on "SERIES" ("LIBRARY_ID");
|
||||
CREATE INDEX "idx__series_metadata_genre__series_id" on "SERIES_METADATA_GENRE" ("SERIES_ID");
|
||||
CREATE INDEX "idx__series_metadata_tag__series_id" on "SERIES_METADATA_TAG" ("SERIES_ID");
|
||||
CREATE INDEX "idx__book_metadata_aggregation_author__series_id" on "BOOK_METADATA_AGGREGATION_AUTHOR" ("SERIES_ID");
|
||||
CREATE INDEX "idx__book__created_date" on "BOOK" ("CREATED_DATE");
|
||||
|
|
@ -1,194 +0,0 @@
|
|||
CREATE TABLE LIBRARY
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
NAME varchar NOT NULL,
|
||||
ROOT varchar NOT NULL,
|
||||
IMPORT_COMICINFO_BOOK boolean NOT NULL DEFAULT true,
|
||||
IMPORT_COMICINFO_SERIES boolean NOT NULL DEFAULT true,
|
||||
IMPORT_COMICINFO_COLLECTION boolean NOT NULL DEFAULT true,
|
||||
IMPORT_EPUB_BOOK boolean NOT NULL DEFAULT true,
|
||||
IMPORT_EPUB_SERIES boolean NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE "USER"
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
EMAIL varchar NOT NULL UNIQUE,
|
||||
PASSWORD varchar NOT NULL,
|
||||
SHARED_ALL_LIBRARIES boolean NOT NULL DEFAULT true,
|
||||
ROLE_ADMIN boolean NOT NULL DEFAULT false,
|
||||
ROLE_FILE_DOWNLOAD boolean NOT NULL DEFAULT true,
|
||||
ROLE_PAGE_STREAMING boolean NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE USER_LIBRARY_SHARING
|
||||
(
|
||||
USER_ID varchar NOT NULL,
|
||||
LIBRARY_ID varchar NOT NULL,
|
||||
PRIMARY KEY (USER_ID, LIBRARY_ID),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID),
|
||||
FOREIGN KEY (LIBRARY_ID) REFERENCES LIBRARY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE SERIES
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FILE_LAST_MODIFIED timestamp NOT NULL,
|
||||
NAME varchar NOT NULL,
|
||||
URL varchar NOT NULL,
|
||||
LIBRARY_ID varchar NOT NULL,
|
||||
FOREIGN KEY (LIBRARY_ID) REFERENCES LIBRARY (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE SERIES_METADATA
|
||||
(
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
STATUS varchar NOT NULL,
|
||||
STATUS_LOCK boolean NOT NULL DEFAULT false,
|
||||
TITLE varchar NOT NULL,
|
||||
TITLE_LOCK boolean NOT NULL DEFAULT false,
|
||||
TITLE_SORT varchar NOT NULL,
|
||||
TITLE_SORT_LOCK boolean NOT NULL DEFAULT false,
|
||||
SUMMARY text,
|
||||
SUMMARY_LOCK boolean NOT NULL DEFAULT false,
|
||||
PUBLISHER varchar,
|
||||
PUBLISHER_LOCK boolean NOT NULL DEFAULT false,
|
||||
READING_DIRECTION varchar,
|
||||
READING_DIRECTION_LOCK boolean NOT NULL DEFAULT false,
|
||||
AGE_RATING integer,
|
||||
AGE_RATING_LOCK boolean NOT NULL DEFAULT false,
|
||||
LANGUAGE varchar,
|
||||
LANGUAGE_LOCK boolean NOT NULL DEFAULT false,
|
||||
SERIES_ID varchar NOT NULL PRIMARY KEY,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE BOOK
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FILE_LAST_MODIFIED timestamp NOT NULL,
|
||||
NAME varchar NOT NULL,
|
||||
URL varchar NOT NULL,
|
||||
FILE_SIZE bigint NOT NULL,
|
||||
NUMBER integer,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE MEDIA
|
||||
(
|
||||
MEDIA_TYPE varchar NULL,
|
||||
STATUS varchar NOT NULL,
|
||||
THUMBNAIL bytea NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
COMMENT varchar NULL,
|
||||
BOOK_ID varchar NOT NULL PRIMARY KEY,
|
||||
PAGE_COUNT integer NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE MEDIA_PAGE
|
||||
(
|
||||
FILE_NAME varchar NOT NULL,
|
||||
MEDIA_TYPE varchar NOT NULL,
|
||||
NUMBER integer NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
PRIMARY KEY (BOOK_ID, NUMBER),
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE MEDIA_FILE
|
||||
(
|
||||
FILE_NAME varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE BOOK_METADATA
|
||||
(
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
TITLE varchar NOT NULL,
|
||||
TITLE_LOCK boolean NOT NULL DEFAULT false,
|
||||
TITLE_SORT varchar NOT NULL,
|
||||
TITLE_SORT_LOCK boolean NOT NULL DEFAULT false,
|
||||
SUMMARY text,
|
||||
SUMMARY_LOCK boolean NOT NULL DEFAULT false,
|
||||
NUMBER varchar,
|
||||
NUMBER_LOCK boolean NOT NULL DEFAULT false,
|
||||
NUMBER_SORT double precision,
|
||||
NUMBER_SORT_LOCK boolean NOT NULL DEFAULT false,
|
||||
RELEASE_DATE date,
|
||||
RELEASE_DATE_LOCK boolean NOT NULL DEFAULT false,
|
||||
AUTHORS text,
|
||||
AUTHORS_LOCK boolean NOT NULL DEFAULT false,
|
||||
BOOK_ID varchar NOT NULL PRIMARY KEY,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE READ_PROGRESS
|
||||
(
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PAGE integer NOT NULL,
|
||||
COMPLETED boolean NOT NULL DEFAULT false,
|
||||
USER_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
PRIMARY KEY (USER_ID, BOOK_ID),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID),
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE READLIST
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
NAME varchar NOT NULL,
|
||||
SUMMARY text,
|
||||
FILTERED boolean NOT NULL DEFAULT false,
|
||||
USER_ID varchar NOT NULL,
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE READLIST_BOOKS
|
||||
(
|
||||
READLIST_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
NUMBER integer NOT NULL,
|
||||
PRIMARY KEY (READLIST_ID, BOOK_ID),
|
||||
FOREIGN KEY (READLIST_ID) REFERENCES READLIST (ID),
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE COLLECTION
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
NAME varchar NOT NULL,
|
||||
SUMMARY text,
|
||||
FILTERED boolean NOT NULL DEFAULT false,
|
||||
USER_ID varchar NOT NULL,
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE COLLECTION_SERIES
|
||||
(
|
||||
COLLECTION_ID varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
NUMBER integer NOT NULL,
|
||||
PRIMARY KEY (COLLECTION_ID, SERIES_ID),
|
||||
FOREIGN KEY (COLLECTION_ID) REFERENCES COLLECTION (ID),
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
alter table media_page
|
||||
add column width int NULL;
|
||||
alter table media_page
|
||||
add column height int NULL;
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
-- This is a multi-steps migration, mixing 2 SQL migrations and a Java migration in-between
|
||||
CREATE TABLE THUMBNAIL_BOOK
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
THUMBNAIL bytea NULL,
|
||||
URL varchar NULL,
|
||||
SELECTED boolean NOT NULL DEFAULT false,
|
||||
TYPE varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
-- This is a multi-steps migration, mixing 2 SQL migrations and a Java migration in-between
|
||||
CREATE INDEX idx__thumbnail_book__book_id on THUMBNAIL_BOOK (BOOK_ID);
|
||||
|
||||
-- Remove column THUMBNAIL from table MEDIA
|
||||
|
||||
ALTER TABLE MEDIA
|
||||
RENAME TO _MEDIA_OLD;
|
||||
|
||||
CREATE TABLE MEDIA
|
||||
(
|
||||
MEDIA_TYPE varchar NULL,
|
||||
STATUS varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
COMMENT varchar NULL,
|
||||
BOOK_ID varchar NOT NULL PRIMARY KEY,
|
||||
PAGE_COUNT integer NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
INSERT INTO MEDIA (MEDIA_TYPE, STATUS, CREATED_DATE, LAST_MODIFIED_DATE, COMMENT, BOOK_ID, PAGE_COUNT)
|
||||
SELECT MEDIA_TYPE, STATUS, CREATED_DATE, LAST_MODIFIED_DATE, COMMENT, BOOK_ID, PAGE_COUNT
|
||||
FROM _MEDIA_OLD;
|
||||
|
||||
DROP TABLE _MEDIA_OLD;
|
||||
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
CREATE TABLE THUMBNAIL_SERIES
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
URL varchar NOT NULL,
|
||||
SELECTED boolean NOT NULL DEFAULT false,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
alter table library
|
||||
add column SCAN_FORCE_MODIFIED_TIME boolean NOT NULL DEFAULT false;
|
||||
alter table library
|
||||
add column SCAN_DEEP boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table library
|
||||
add column IMPORT_LOCAL_ARTWORK boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
CREATE TABLE READLIST
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
NAME varchar NOT NULL,
|
||||
BOOK_COUNT int NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE TABLE READLIST_BOOK
|
||||
(
|
||||
READLIST_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
NUMBER int NOT NULL,
|
||||
PRIMARY KEY (READLIST_ID, BOOK_ID),
|
||||
FOREIGN KEY (READLIST_ID) REFERENCES READLIST (ID),
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
alter table library
|
||||
add column IMPORT_COMICINFO_READLIST boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
alter table series_metadata
|
||||
add column PUBLISHER varchar NOT NULL DEFAULT '';
|
||||
alter table series_metadata
|
||||
add column PUBLISHER_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table series_metadata
|
||||
add column READING_DIRECTION varchar NULL;
|
||||
alter table series_metadata
|
||||
add column READING_DIRECTION_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table series_metadata
|
||||
add column AGE_RATING int NULL;
|
||||
alter table series_metadata
|
||||
add column AGE_RATING_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table SERIES_METADATA
|
||||
add column SUMMARY varchar NOT NULL DEFAULT '';
|
||||
alter table SERIES_METADATA
|
||||
add column SUMMARY_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table SERIES_METADATA
|
||||
add column LANGUAGE varchar NOT NULL DEFAULT '';
|
||||
alter table SERIES_METADATA
|
||||
add column LANGUAGE_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table SERIES_METADATA
|
||||
add column GENRES_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table SERIES_METADATA
|
||||
add column TAGS_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
|
||||
CREATE TABLE SERIES_METADATA_GENRE
|
||||
(
|
||||
GENRE varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE SERIES_METADATA_TAG
|
||||
(
|
||||
TAG varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE BOOK_METADATA_TAG
|
||||
(
|
||||
TAG varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
|
||||
ALTER TABLE BOOK_METADATA
|
||||
RENAME TO _BOOK_METADATA_OLD;
|
||||
|
||||
CREATE TABLE BOOK_METADATA
|
||||
(
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
NUMBER varchar NOT NULL,
|
||||
NUMBER_LOCK boolean NOT NULL DEFAULT false,
|
||||
NUMBER_SORT real NOT NULL,
|
||||
NUMBER_SORT_LOCK boolean NOT NULL DEFAULT false,
|
||||
RELEASE_DATE date NULL,
|
||||
RELEASE_DATE_LOCK boolean NOT NULL DEFAULT false,
|
||||
SUMMARY varchar NOT NULL DEFAULT '',
|
||||
SUMMARY_LOCK boolean NOT NULL DEFAULT false,
|
||||
TITLE varchar NOT NULL,
|
||||
TITLE_LOCK boolean NOT NULL DEFAULT false,
|
||||
AUTHORS_LOCK boolean NOT NULL DEFAULT false,
|
||||
TAGS_LOCK boolean NOT NULL DEFAULT false,
|
||||
BOOK_ID varchar NOT NULL PRIMARY KEY,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
INSERT INTO BOOK_METADATA (CREATED_DATE, LAST_MODIFIED_DATE, NUMBER, NUMBER_LOCK, NUMBER_SORT, NUMBER_SORT_LOCK,
|
||||
RELEASE_DATE, RELEASE_DATE_LOCK, SUMMARY, SUMMARY_LOCK, TITLE, TITLE_LOCK, AUTHORS_LOCK,
|
||||
BOOK_ID)
|
||||
SELECT CREATED_DATE,
|
||||
LAST_MODIFIED_DATE,
|
||||
NUMBER,
|
||||
NUMBER_LOCK,
|
||||
NUMBER_SORT,
|
||||
NUMBER_SORT_LOCK,
|
||||
RELEASE_DATE,
|
||||
RELEASE_DATE_LOCK,
|
||||
SUMMARY,
|
||||
SUMMARY_LOCK,
|
||||
TITLE,
|
||||
TITLE_LOCK,
|
||||
AUTHORS_LOCK,
|
||||
BOOK_ID
|
||||
FROM _BOOK_METADATA_OLD;
|
||||
|
||||
DROP TABLE _BOOK_METADATA_OLD;
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
CREATE INDEX idx__book__series_id on BOOK (SERIES_ID);
|
||||
CREATE INDEX idx__book__library_id on BOOK (LIBRARY_ID);
|
||||
|
||||
CREATE INDEX idx__book_metadata_author__book_id on BOOK_METADATA_AUTHOR (BOOK_ID);
|
||||
CREATE INDEX idx__book_metadata_tag__book_id on BOOK_METADATA_TAG (BOOK_ID);
|
||||
|
||||
CREATE INDEX idx__media_file__book_id on MEDIA_FILE (BOOK_ID);
|
||||
|
||||
|
||||
CREATE INDEX idx__series__library_id on SERIES (LIBRARY_ID);
|
||||
|
||||
CREATE INDEX idx__series_metadata_genre__series_id on SERIES_METADATA_GENRE (SERIES_ID);
|
||||
CREATE INDEX idx__series_metadata_tag__series_id on SERIES_METADATA_TAG (SERIES_ID);
|
||||
|
||||
CREATE INDEX idx__thumbnail_series__series_id on THUMBNAIL_SERIES (SERIES_ID);
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
UPDATE BOOK_METADATA_TAG
|
||||
SET tag = lower(trim(tag));
|
||||
|
||||
delete
|
||||
from BOOK_METADATA_TAG
|
||||
where ROWID not in
|
||||
(
|
||||
select min(rowid)
|
||||
from BOOK_METADATA_TAG
|
||||
group by tag, BOOK_ID
|
||||
);
|
||||
|
||||
|
||||
UPDATE SERIES_METADATA_TAG
|
||||
SET tag = lower(trim(tag));
|
||||
|
||||
delete
|
||||
from SERIES_METADATA_TAG
|
||||
where ROWID not in
|
||||
(
|
||||
select min(rowid)
|
||||
from SERIES_METADATA_TAG
|
||||
group by tag, SERIES_ID
|
||||
);
|
||||
|
||||
|
||||
UPDATE SERIES_METADATA_GENRE
|
||||
SET GENRE = lower(trim(GENRE));
|
||||
|
||||
delete
|
||||
from SERIES_METADATA_GENRE
|
||||
where ROWID not in
|
||||
(
|
||||
select min(rowid)
|
||||
from SERIES_METADATA_GENRE
|
||||
group by GENRE, SERIES_ID
|
||||
);
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
CREATE TABLE BOOK_METADATA_AGGREGATION
|
||||
(
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
RELEASE_DATE date NULL,
|
||||
SUMMARY varchar NOT NULL DEFAULT '',
|
||||
SUMMARY_NUMBER varchar NOT NULL DEFAULT '',
|
||||
SERIES_ID varchar NOT NULL PRIMARY KEY,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
CREATE TABLE BOOK_METADATA_AGGREGATION_AUTHOR
|
||||
(
|
||||
NAME varchar NOT NULL,
|
||||
ROLE varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
INSERT INTO BOOK_METADATA_AGGREGATION(SERIES_ID)
|
||||
SELECT ID
|
||||
from SERIES;
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
alter table library
|
||||
add column IMPORT_BARCODE_ISBN boolean NOT NULL DEFAULT true;
|
||||
|
||||
alter table book_metadata
|
||||
add column ISBN varchar NOT NULL DEFAULT '';
|
||||
alter table book_metadata
|
||||
add column ISBN_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table library
|
||||
add column CONVERT_TO_CBZ boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table library
|
||||
add column REPAIR_EXTENSIONS boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
-- fix media type for files analyzed with tika 1.23 or before which didn't get the rar version
|
||||
update MEDIA
|
||||
set MEDIA_TYPE = 'application/x-rar-compressed; version=4'
|
||||
where MEDIA_TYPE = 'application/x-rar-compressed'
|
||||
and STATUS = 'READY';
|
||||
|
||||
-- rar files that could have had an incorrect analysis are marked at OUTDATED to be ra-analyzed
|
||||
update MEDIA
|
||||
set STATUS = 'OUTDATED'
|
||||
where BOOK_ID in (
|
||||
select F.BOOK_ID
|
||||
from MEDIA_FILE F
|
||||
left join MEDIA M on F.BOOK_ID = M.BOOK_ID
|
||||
where F.FILE_NAME like '%.%'
|
||||
and M.MEDIA_TYPE like 'application/x-rar-compressed%'
|
||||
and lower(replace(F.FILE_NAME, rtrim(F.FILE_NAME, replace(F.FILE_NAME, '.', '')), ''))
|
||||
in ('jpg', 'jpeg', 'webp', 'tiff', 'tif', 'gif', 'png', 'bmp')
|
||||
);
|
||||
|
|
@ -1 +0,0 @@
|
|||
CREATE INDEX idx__book_metadata_aggregation_author__series_id on BOOK_METADATA_AGGREGATION_AUTHOR (SERIES_ID);
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
alter table SERIES
|
||||
add column BOOK_COUNT int NOT NULL DEFAULT false;
|
||||
|
||||
update SERIES
|
||||
set BOOK_COUNT = (
|
||||
SELECT COUNT(b.ID)
|
||||
FROM BOOK b
|
||||
WHERE b.SERIES_ID = SERIES.ID
|
||||
);
|
||||
|
||||
CREATE TABLE READ_PROGRESS_SERIES
|
||||
(
|
||||
SERIES_ID varchar NOT NULL,
|
||||
USER_ID varchar NOT NULL,
|
||||
READ_COUNT int NOT NULL,
|
||||
IN_PROGRESS_COUNT int NOT NULL,
|
||||
PRIMARY KEY (SERIES_ID, USER_ID),
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
insert into READ_PROGRESS_SERIES
|
||||
select BOOK.SERIES_ID,
|
||||
READ_PROGRESS.USER_ID,
|
||||
sum(case when READ_PROGRESS.COMPLETED = 1 then 1 else 0 end) as READ_COUNT,
|
||||
sum(case when READ_PROGRESS.COMPLETED = 0 then 1 else 0 end) as IN_PROGRESS_COUNT
|
||||
from BOOK
|
||||
inner join READ_PROGRESS on (BOOK.ID = READ_PROGRESS.BOOK_ID)
|
||||
group by BOOK.SERIES_ID, READ_PROGRESS.USER_ID;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
create index idx__book__created_date on BOOK (CREATED_DATE);
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
CREATE TABLE SIDECAR
|
||||
(
|
||||
URL varchar NOT NULL PRIMARY KEY,
|
||||
PARENT_URL varchar NOT NULL,
|
||||
LAST_MODIFIED_TIME timestamp NOT NULL,
|
||||
LIBRARY_ID varchar NOT NULL
|
||||
);
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
DELETE
|
||||
FROM SIDECAR
|
||||
WHERE LIBRARY_ID NOT IN (
|
||||
SELECT ID
|
||||
FROM LIBRARY
|
||||
)
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
create table AUTHENTICATION_ACTIVITY
|
||||
(
|
||||
USER_ID varchar NULL DEFAULT NULL,
|
||||
EMAIL varchar NULL DEFAULT NULL,
|
||||
IP varchar NULL DEFAULT NULL,
|
||||
USER_AGENT varchar NULL DEFAULT NULL,
|
||||
SUCCESS boolean NOT NULL,
|
||||
ERROR varchar NULL DEFAULT NULL,
|
||||
DATE_TIME timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (USER_ID) references "USER" (ID)
|
||||
);
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
ALTER TABLE BOOK
|
||||
ADD COLUMN FILE_HASH varchar NOT NULL DEFAULT '';
|
||||
|
||||
ALTER TABLE BOOK
|
||||
ADD COLUMN DELETED_DATE timestamp NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE SERIES
|
||||
ADD COLUMN DELETED_DATE timestamp NULL DEFAULT NULL;
|
||||
|
||||
alter table library
|
||||
add column EMPTY_TRASH_AFTER_SCAN boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table library
|
||||
add column IMPORT_MYLAR_SERIES boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table library
|
||||
add column SERIES_COVER varchar NOT NULL DEFAULT 'FIRST';
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
-- FTS for BOOK_METADATA
|
||||
create virtual table fts_book_metadata using fts5(title, isbn, book_id UNINDEXED, content=book_metadata, tokenize = 'porter unicode61 remove_diacritics 2');
|
||||
INSERT INTO fts_book_metadata(fts_book_metadata) VALUES('rebuild');
|
||||
|
||||
-- Triggers to keep the FTS index up to date
|
||||
CREATE TRIGGER book_metadata__after_insert AFTER INSERT ON book_metadata BEGIN
|
||||
INSERT INTO fts_book_metadata(rowid, title, isbn, book_id) VALUES (new.rowid, new.title, new.isbn, new.book_id);
|
||||
END;
|
||||
CREATE TRIGGER book_metadata__after_delete AFTER DELETE ON book_metadata BEGIN
|
||||
INSERT INTO fts_book_metadata(fts_book_metadata, rowid, title, isbn, book_id) VALUES('delete', old.rowid, old.title, old.isbn, old.book_id);
|
||||
END;
|
||||
CREATE TRIGGER book_metadata__after_update AFTER UPDATE ON book_metadata BEGIN
|
||||
INSERT INTO fts_book_metadata(fts_book_metadata, rowid, title, isbn, book_id) VALUES('delete', old.rowid, old.title, old.isbn, old.book_id);
|
||||
INSERT INTO fts_book_metadata(rowid, title, isbn, book_id) VALUES (new.rowid, new.title, new.isbn, new.book_id);
|
||||
END;
|
||||
|
||||
|
||||
-- FTS for SERIES_METADATA
|
||||
create virtual table fts_series_metadata using fts5(title, publisher, series_id UNINDEXED, content=series_metadata, tokenize = 'porter unicode61 remove_diacritics 2');
|
||||
INSERT INTO fts_series_metadata(fts_series_metadata) VALUES('rebuild');
|
||||
|
||||
-- Triggers to keep the FTS index up to date
|
||||
CREATE TRIGGER series_metadata__after_insert AFTER INSERT ON series_metadata BEGIN
|
||||
INSERT INTO fts_series_metadata(rowid, title, publisher, series_id) VALUES (new.rowid, new.title, new.publisher, new.series_id);
|
||||
END;
|
||||
CREATE TRIGGER series_metadata__after_delete AFTER DELETE ON series_metadata BEGIN
|
||||
INSERT INTO fts_series_metadata(fts_series_metadata, rowid, title, publisher, series_id) VALUES('delete', old.rowid, old.title, old.publisher, old.series_id);
|
||||
END;
|
||||
CREATE TRIGGER series_metadata__after_update AFTER UPDATE ON series_metadata BEGIN
|
||||
INSERT INTO fts_series_metadata(fts_series_metadata, rowid, title, publisher, series_id) VALUES('delete', old.rowid, old.title, old.publisher, old.series_id);
|
||||
INSERT INTO fts_series_metadata(rowid, title, publisher, series_id) VALUES (new.rowid, new.title, new.publisher, new.series_id);
|
||||
END;
|
||||
|
||||
|
||||
-- FTS for COLLECTION
|
||||
create virtual table fts_collection using fts5(name, id UNINDEXED, content=collection, tokenize = 'porter unicode61 remove_diacritics 2');
|
||||
INSERT INTO fts_collection(fts_collection) VALUES('rebuild');
|
||||
|
||||
-- Triggers to keep the FTS index up to date
|
||||
CREATE TRIGGER collection__after_insert AFTER INSERT ON collection BEGIN
|
||||
INSERT INTO fts_collection(rowid, name, id) VALUES (new.rowid, new.name, new.id);
|
||||
END;
|
||||
CREATE TRIGGER collection__after_delete AFTER DELETE ON collection BEGIN
|
||||
INSERT INTO fts_collection(fts_collection, rowid, name, id) VALUES('delete', old.rowid, old.name, old.id);
|
||||
END;
|
||||
CREATE TRIGGER collection__after_update AFTER UPDATE ON collection BEGIN
|
||||
INSERT INTO fts_collection(fts_collection, rowid, name, id) VALUES('delete', old.rowid, old.name, old.id);
|
||||
INSERT INTO fts_collection(rowid, name, id) VALUES (new.rowid, new.name, new.id);
|
||||
END;
|
||||
|
||||
|
||||
-- FTS for READLIST
|
||||
create virtual table fts_readlist using fts5(name, id UNINDEXED, content=readlist, tokenize = 'porter unicode61 remove_diacritics 2');
|
||||
INSERT INTO fts_readlist(fts_readlist) VALUES('rebuild');
|
||||
|
||||
-- Triggers to keep the FTS index up to date
|
||||
CREATE TRIGGER readlist__after_insert AFTER INSERT ON readlist BEGIN
|
||||
INSERT INTO fts_readlist(rowid, name, id) VALUES (new.rowid, new.name, new.id);
|
||||
END;
|
||||
CREATE TRIGGER readlist__after_delete AFTER DELETE ON readlist BEGIN
|
||||
INSERT INTO fts_readlist(fts_readlist, rowid, name, id) VALUES('delete', old.rowid, old.name, old.id);
|
||||
END;
|
||||
CREATE TRIGGER readlist__after_update AFTER UPDATE ON readlist BEGIN
|
||||
INSERT INTO fts_readlist(fts_readlist, rowid, name, id) VALUES('delete', old.rowid, old.name, old.id);
|
||||
INSERT INTO fts_readlist(rowid, name, id) VALUES (new.rowid, new.name, new.id);
|
||||
END;
|
||||
|
||||
|
||||
-- FTS for BOOK_METADATA_AGGREGATION_AUTHORS
|
||||
create virtual table fts_book_metadata_aggregation_author using fts5(name, series_id UNINDEXED, content=book_metadata_aggregation_author, tokenize = 'porter unicode61 remove_diacritics 2');
|
||||
INSERT INTO fts_book_metadata_aggregation_author(fts_book_metadata_aggregation_author) VALUES('rebuild');
|
||||
|
||||
-- Triggers to keep the FTS index up to date
|
||||
CREATE TRIGGER book_metadata_aggregation_author__after_insert AFTER INSERT ON book_metadata_aggregation_author BEGIN
|
||||
INSERT INTO fts_book_metadata_aggregation_author(rowid, name, series_id) VALUES (new.rowid, new.name, new.series_id);
|
||||
END;
|
||||
CREATE TRIGGER book_metadata_aggregation_author__after_delete AFTER DELETE ON book_metadata_aggregation_author BEGIN
|
||||
INSERT INTO fts_book_metadata_aggregation_author(fts_book_metadata_aggregation_author, rowid, name, series_id) VALUES('delete', old.rowid, old.name, old.series_id);
|
||||
END;
|
||||
CREATE TRIGGER book_metadata_aggregation_author__after_update AFTER UPDATE ON book_metadata_aggregation_author BEGIN
|
||||
INSERT INTO fts_book_metadata_aggregation_author(fts_book_metadata_aggregation_author, rowid, name, series_id) VALUES('delete', old.rowid, old.name, old.series_id);
|
||||
INSERT INTO fts_book_metadata_aggregation_author(rowid, name, series_id) VALUES (new.rowid, new.name, new.series_id);
|
||||
END;
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
alter table series_metadata
|
||||
add column TOTAL_BOOK_COUNT int NULL;
|
||||
alter table series_metadata
|
||||
add column TOTAL_BOOK_COUNT_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
CREATE TABLE BOOK_METADATA_AGGREGATION_TAG
|
||||
(
|
||||
TAG varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
-- aggregate existing data
|
||||
insert into BOOK_METADATA_AGGREGATION_TAG
|
||||
select distinct bt.TAG, b.SERIES_ID
|
||||
from BOOK_METADATA_TAG bt
|
||||
left join BOOK B on B.ID = bt.BOOK_ID;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table readlist
|
||||
add column SUMMARY varchar not NULL default '';
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
drop table fts_book_metadata;
|
||||
DROP TRIGGER book_metadata__after_insert;
|
||||
DROP TRIGGER book_metadata__after_delete;
|
||||
DROP TRIGGER book_metadata__after_update;
|
||||
|
||||
drop table fts_series_metadata;
|
||||
DROP TRIGGER series_metadata__after_insert;
|
||||
DROP TRIGGER series_metadata__after_delete;
|
||||
DROP TRIGGER series_metadata__after_update;
|
||||
|
||||
drop table fts_collection;
|
||||
DROP TRIGGER collection__after_insert;
|
||||
DROP TRIGGER collection__after_delete;
|
||||
DROP TRIGGER collection__after_update;
|
||||
|
||||
drop table fts_readlist;
|
||||
DROP TRIGGER readlist__after_insert;
|
||||
DROP TRIGGER readlist__after_delete;
|
||||
DROP TRIGGER readlist__after_update;
|
||||
|
||||
drop table fts_book_metadata_aggregation_author;
|
||||
DROP TRIGGER book_metadata_aggregation_author__after_insert;
|
||||
DROP TRIGGER book_metadata_aggregation_author__after_delete;
|
||||
DROP TRIGGER book_metadata_aggregation_author__after_update;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE LIBRARY
|
||||
ADD COLUMN UNAVAILABLE_DATE timestamp NULL DEFAULT NULL;
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
CREATE TABLE TEMP_URL_LIST
|
||||
(
|
||||
URL varchar NOT NULL
|
||||
);
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
ALTER TABLE THUMBNAIL_SERIES RENAME TO TMP_THUMBNAIL_SERIES;
|
||||
|
||||
CREATE TABLE THUMBNAIL_SERIES
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
URL varchar NULL DEFAULT NULL,
|
||||
SELECTED boolean NOT NULL DEFAULT false,
|
||||
THUMBNAIL bytea NULL DEFAULT NULL,
|
||||
TYPE varchar not null,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
INSERT INTO THUMBNAIL_SERIES(ID, URL, SELECTED, CREATED_DATE, LAST_MODIFIED_DATE, SERIES_ID, TYPE)
|
||||
SELECT ID, URL, SELECTED, CREATED_DATE, LAST_MODIFIED_DATE, SERIES_ID, "SIDECAR" AS TYPE
|
||||
FROM TMP_THUMBNAIL_SERIES;
|
||||
|
||||
DROP TABLE TMP_THUMBNAIL_SERIES;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
update SERIES_METADATA
|
||||
set language = lower(language);
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
CREATE TABLE SPRING_SESSION
|
||||
(
|
||||
PRIMARY_ID CHARACTER(36) NOT NULL,
|
||||
SESSION_ID CHARACTER(36) NOT NULL,
|
||||
CREATION_TIME INTEGER NOT NULL,
|
||||
LAST_ACCESS_TIME INTEGER NOT NULL,
|
||||
MAX_INACTIVE_INTERVAL INTEGER NOT NULL,
|
||||
EXPIRY_TIME INTEGER NOT NULL,
|
||||
PRINCIPAL_NAME VARCHAR(100),
|
||||
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
|
||||
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
|
||||
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);
|
||||
|
||||
CREATE TABLE SPRING_SESSION_ATTRIBUTES
|
||||
(
|
||||
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
|
||||
ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
|
||||
ATTRIBUTE_BYTES bytea NOT NULL,
|
||||
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
|
||||
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION (PRIMARY_ID) ON DELETE CASCADE
|
||||
);
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
ALTER TABLE READ_PROGRESS RENAME TO TMP_READ_PROGRESS;
|
||||
|
||||
CREATE TABLE READ_PROGRESS
|
||||
(
|
||||
BOOK_ID varchar NOT NULL,
|
||||
USER_ID varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PAGE int NOT NULL,
|
||||
COMPLETED boolean NOT NULL,
|
||||
READ_DATE timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (BOOK_ID, USER_ID),
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
INSERT INTO READ_PROGRESS(BOOK_ID, USER_ID, CREATED_DATE, LAST_MODIFIED_DATE, PAGE, COMPLETED, READ_DATE)
|
||||
SELECT BOOK_ID, USER_ID, CREATED_DATE, LAST_MODIFIED_DATE, PAGE, COMPLETED, LAST_MODIFIED_DATE
|
||||
FROM TMP_READ_PROGRESS;
|
||||
|
||||
DROP TABLE TMP_READ_PROGRESS;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE AUTHENTICATION_ACTIVITY
|
||||
ADD COLUMN SOURCE varchar NULL DEFAULT NULL;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
drop table if exists SPRING_SESSION_ATTRIBUTES;
|
||||
drop table if exists SPRING_SESSION;
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
CREATE TABLE TEMP_STRING_LIST
|
||||
(
|
||||
STRING varchar NOT NULL
|
||||
);
|
||||
|
||||
DROP TABLE TEMP_URL_LIST;
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
CREATE TABLE THUMBNAIL_COLLECTION
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
SELECTED boolean NOT NULL DEFAULT false,
|
||||
THUMBNAIL bytea NOT NULL,
|
||||
TYPE varchar NOT NULL,
|
||||
COLLECTION_ID varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (COLLECTION_ID) REFERENCES COLLECTION (ID)
|
||||
);
|
||||
|
||||
CREATE TABLE THUMBNAIL_READLIST
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
SELECTED boolean NOT NULL DEFAULT false,
|
||||
THUMBNAIL bytea NOT NULL,
|
||||
TYPE varchar NOT NULL,
|
||||
READLIST_ID varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (READLIST_ID) REFERENCES READLIST (ID)
|
||||
);
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
CREATE TABLE BOOK_METADATA_LINK
|
||||
(
|
||||
LABEL varchar NOT NULL,
|
||||
URL varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
|
||||
);
|
||||
|
||||
alter table book_metadata
|
||||
add column LINKS_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE MEDIA_PAGE
|
||||
ADD COLUMN FILE_HASH varchar NOT NULL DEFAULT '';
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
alter table library
|
||||
add column HASH_FILES boolean NOT NULL DEFAULT ${library-file-hashing};
|
||||
alter table library
|
||||
add column HASH_PAGES boolean NOT NULL DEFAULT false;
|
||||
alter table library
|
||||
add column ANALYZE_DIMENSIONS boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table media_page
|
||||
add column FILE_SIZE bigint NULL;
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
CREATE TABLE PAGE_HASH
|
||||
(
|
||||
HASH varchar NOT NULL,
|
||||
MEDIA_TYPE varchar NOT NULL,
|
||||
SIZE bigint NULL,
|
||||
ACTION varchar NOT NULL,
|
||||
DELETE_COUNT int NOT NULL DEFAULT false,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (HASH, MEDIA_TYPE, SIZE)
|
||||
);
|
||||
|
||||
CREATE TABLE PAGE_HASH_THUMBNAIL
|
||||
(
|
||||
HASH varchar NOT NULL,
|
||||
MEDIA_TYPE varchar NOT NULL,
|
||||
SIZE bigint NULL,
|
||||
THUMBNAIL bytea NOT NULL,
|
||||
PRIMARY KEY (HASH, MEDIA_TYPE, SIZE)
|
||||
);
|
||||
|
||||
UPDATE MEDIA_PAGE
|
||||
SET FILE_HASH = ''
|
||||
WHERE BOOK_ID IN (
|
||||
SELECT DISTINCT m.BOOK_ID
|
||||
FROM MEDIA m
|
||||
LEFT JOIN MEDIA_PAGE MP on m.BOOK_ID = MP.BOOK_ID
|
||||
WHERE mp.FILE_HASH <> ''
|
||||
AND m.MEDIA_TYPE <> 'application/zip'
|
||||
);
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
UPDATE MEDIA
|
||||
SET STATUS = 'OUTDATED'
|
||||
WHERE BOOK_ID IN (
|
||||
SELECT M.BOOK_ID
|
||||
FROM MEDIA M
|
||||
LEFT JOIN MEDIA_PAGE MP on M.BOOK_ID = MP.BOOK_ID
|
||||
GROUP BY M.BOOK_ID, M.PAGE_COUNT
|
||||
HAVING M.PAGE_COUNT <> count(MP.BOOK_ID));
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
CREATE TABLE HISTORICAL_EVENT
|
||||
(
|
||||
ID varchar PRIMARY KEY,
|
||||
TYPE varchar NOT NULL,
|
||||
BOOK_ID varchar NULL,
|
||||
SERIES_ID varchar NULL,
|
||||
TIMESTAMP timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE HISTORICAL_EVENT_PROPERTIES
|
||||
(
|
||||
ID varchar NOT NULL,
|
||||
KEY varchar NOT NULL,
|
||||
VALUE varchar NOT NULL,
|
||||
PRIMARY KEY (ID, KEY),
|
||||
FOREIGN KEY (ID) REFERENCES HISTORICAL_EVENT (ID)
|
||||
);
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
CREATE TABLE SERIES_METADATA_SHARING
|
||||
(
|
||||
LABEL varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
alter table SERIES_METADATA
|
||||
add column SHARING_LABELS_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
CREATE TABLE USER_SHARING
|
||||
(
|
||||
LABEL varchar NOT NULL,
|
||||
ALLOW boolean NOT NULL,
|
||||
USER_ID varchar NOT NULL,
|
||||
PRIMARY KEY (LABEL, ALLOW, USER_ID),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
ALTER TABLE "USER"
|
||||
add column AGE_RESTRICTION integer NULL;
|
||||
ALTER TABLE "USER"
|
||||
add column AGE_RESTRICTION_ALLOW_ONLY boolean NULL;
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
-- missing foreign key indices
|
||||
create index if not exists idx__book_metadata_link__book_id
|
||||
on BOOK_METADATA_LINK (BOOK_ID);
|
||||
create index if not exists idx__series_metadata_sharing__series_id
|
||||
on SERIES_METADATA_SHARING (SERIES_ID);
|
||||
create index if not exists idx__book_metadata_aggregation_tag__series_id
|
||||
on BOOK_METADATA_AGGREGATION_TAG (SERIES_ID);
|
||||
create index if not exists idx__thumbnail_collection__collection_id
|
||||
on THUMBNAIL_COLLECTION (COLLECTION_ID);
|
||||
create index if not exists idx__thumbnail_readlist__readlist_id
|
||||
on THUMBNAIL_READLIST (READLIST_ID);
|
||||
create index if not exists idx__thumbnail_series__series_id
|
||||
on THUMBNAIL_SERIES (SERIES_ID);
|
||||
create index if not exists idx__authentication_activity__user_id
|
||||
on AUTHENTICATION_ACTIVITY (USER_ID);
|
||||
|
||||
-- if you sort by it, index it
|
||||
create index if not exists idx__book_metadata__number_sort
|
||||
on BOOK_METADATA (NUMBER_SORT);
|
||||
create index if not exists idx__series__last_modified_date
|
||||
on SERIES (LAST_MODIFIED_DATE);
|
||||
create index if not exists idx__series__created_date
|
||||
on SERIES (CREATED_DATE);
|
||||
create index if not exists idx__book_metadata__release_date
|
||||
on BOOK_METADATA (RELEASE_DATE);
|
||||
create index if not exists idx__book__created_date
|
||||
on BOOK (CREATED_DATE);
|
||||
create index if not exists idx__read_progress__last_modified_date
|
||||
on READ_PROGRESS (LAST_MODIFIED_DATE);
|
||||
create index if not exists idx__media__status
|
||||
on MEDIA (STATUS);
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE LIBRARY
|
||||
add column IMPORT_COMICINFO_SERIES_APPEND_VOLUME boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
CREATE TABLE SERIES_METADATA_LINK
|
||||
(
|
||||
LABEL varchar NOT NULL,
|
||||
URL varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
alter table series_metadata
|
||||
add column LINKS_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
create index idx__series_metadata_link__series_id
|
||||
on SERIES_METADATA_LINK (SERIES_ID);
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
CREATE TABLE SERIES_METADATA_ALTERNATE_TITLE
|
||||
(
|
||||
LABEL varchar NOT NULL,
|
||||
TITLE varchar NOT NULL,
|
||||
SERIES_ID varchar NOT NULL,
|
||||
FOREIGN KEY (SERIES_ID) REFERENCES SERIES (ID)
|
||||
);
|
||||
|
||||
alter table series_metadata
|
||||
add column ALTERNATE_TITLES_LOCK boolean NOT NULL DEFAULT false;
|
||||
|
||||
create index idx__series_metadata_alternate_title__series_id
|
||||
on SERIES_METADATA_ALTERNATE_TITLE (SERIES_ID);
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table READLIST
|
||||
add column ORDERED boolean NOT NULL DEFAULT true;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
create index if not exists idx__series_metadata__title
|
||||
on SERIES_METADATA (TITLE);
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
delete from PAGE_HASH;
|
||||
delete from PAGE_HASH_THUMBNAIL;
|
||||
update BOOK set FILE_HASH = '';
|
||||
update MEDIA_PAGE set FILE_HASH = '';
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
WHERE BOOK_ID in
|
||||
(select distinct M.BOOK_ID
|
||||
from MEDIA_PAGE P
|
||||
inner join MEDIA M on P.BOOK_ID = M.BOOK_ID
|
||||
where M.MEDIA_TYPE in ('application/zip', 'application/x-rar-compressed; version=4')
|
||||
and P.FILE_SIZE is null);
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
ALTER TABLE PAGE_HASH
|
||||
RENAME TO _PAGE_HASH_OLD;
|
||||
|
||||
CREATE TABLE PAGE_HASH
|
||||
(
|
||||
HASH varchar NOT NULL PRIMARY KEY,
|
||||
SIZE bigint NULL,
|
||||
ACTION varchar NOT NULL,
|
||||
DELETE_COUNT int NOT NULL DEFAULT false,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO PAGE_HASH(HASH, ACTION, SIZE, DELETE_COUNT, CREATED_DATE, LAST_MODIFIED_DATE)
|
||||
SELECT HASH, ACTION, SIZE, DELETE_COUNT, CREATED_DATE, LAST_MODIFIED_DATE
|
||||
FROM _PAGE_HASH_OLD;
|
||||
|
||||
DROP TABLE _PAGE_HASH_OLD;
|
||||
|
||||
ALTER TABLE PAGE_HASH_THUMBNAIL
|
||||
RENAME TO _PAGE_HASH_THUMBNAIL_OLD;
|
||||
|
||||
CREATE TABLE PAGE_HASH_THUMBNAIL
|
||||
(
|
||||
HASH varchar NOT NULL PRIMARY KEY,
|
||||
THUMBNAIL bytea NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO PAGE_HASH_THUMBNAIL(HASH, THUMBNAIL)
|
||||
SELECT HASH, THUMBNAIL
|
||||
FROM _PAGE_HASH_THUMBNAIL_OLD;
|
||||
|
||||
DROP TABLE _PAGE_HASH_THUMBNAIL_OLD;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE LIBRARY
|
||||
RENAME COLUMN SCAN_DEEP to _UNUSED;
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
create table ANNOUNCEMENTS_READ
|
||||
(
|
||||
USER_ID varchar NOT NULL,
|
||||
ANNOUNCEMENT_ID varchar NOT NULL,
|
||||
PRIMARY KEY (USER_ID, ANNOUNCEMENT_ID),
|
||||
FOREIGN KEY (USER_ID) references "USER" (ID)
|
||||
);
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
alter table BOOK
|
||||
add column oneshot boolean NOT NULL DEFAULT false;
|
||||
|
||||
alter table SERIES
|
||||
add column oneshot boolean NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE LIBRARY
|
||||
add column ONESHOTS_DIRECTORY varchar NULL DEFAULT NULL;
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
ALTER TABLE LIBRARY
|
||||
RENAME COLUMN _UNUSED to SCAN_STARTUP;
|
||||
UPDATE LIBRARY
|
||||
SET SCAN_STARTUP = ${library-scan-startup};
|
||||
ALTER TABLE LIBRARY
|
||||
add column SCAN_CBX boolean NOT NULL DEFAULT true;
|
||||
ALTER TABLE LIBRARY
|
||||
add column SCAN_PDF boolean NOT NULL DEFAULT true;
|
||||
ALTER TABLE LIBRARY
|
||||
add column SCAN_EPUB boolean NOT NULL DEFAULT true;
|
||||
ALTER TABLE LIBRARY
|
||||
add column SCAN_INTERVAL varchar NOT NULL DEFAULT 'EVERY_6H';
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
CREATE TABLE LIBRARY_EXCLUSIONS
|
||||
(
|
||||
LIBRARY_ID varchar NOT NULL,
|
||||
EXCLUSION varchar NOT NULL,
|
||||
PRIMARY KEY (LIBRARY_ID, EXCLUSION),
|
||||
FOREIGN KEY (LIBRARY_ID) REFERENCES LIBRARY (ID)
|
||||
);
|
||||
|
||||
CREATE INDEX idx__library_exclusions__library_id on LIBRARY_EXCLUSIONS (LIBRARY_ID);
|
||||
|
||||
INSERT INTO LIBRARY_EXCLUSIONS
|
||||
WITH cte_exclusions(exclude) AS (VALUES ('#recycle'),
|
||||
('@eaDir'),
|
||||
('@Recycle'))
|
||||
SELECT LIBRARY.ID, cte_exclusions.exclude
|
||||
FROM LIBRARY
|
||||
cross join cte_exclusions;
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
CREATE TABLE SERVER_SETTINGS
|
||||
(
|
||||
KEY varchar NOT NULL PRIMARY KEY,
|
||||
VALUE varchar NULL
|
||||
);
|
||||
|
||||
INSERT INTO SERVER_SETTINGS
|
||||
VALUES ('DELETE_EMPTY_COLLECTIONS', ${delete-empty-collections});
|
||||
INSERT INTO SERVER_SETTINGS
|
||||
VALUES ('DELETE_EMPTY_READLISTS', ${delete-empty-read-lists});
|
||||
INSERT INTO SERVER_SETTINGS
|
||||
VALUES ('REMEMBER_ME_KEY', md5(random()::text));
|
||||
INSERT INTO SERVER_SETTINGS
|
||||
VALUES ('REMEMBER_ME_DURATION', 365);
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
ALTER TABLE main.THUMBNAIL_BOOK
|
||||
add column WIDTH int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_BOOK
|
||||
add column HEIGHT int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_BOOK
|
||||
add column MEDIA_TYPE varchar NOT NULL default '';
|
||||
ALTER TABLE main.THUMBNAIL_BOOK
|
||||
add column FILE_SIZE bigint NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE main.THUMBNAIL_SERIES
|
||||
add column WIDTH int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_SERIES
|
||||
add column HEIGHT int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_SERIES
|
||||
add column MEDIA_TYPE varchar NOT NULL default '';
|
||||
ALTER TABLE main.THUMBNAIL_SERIES
|
||||
add column FILE_SIZE bigint NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE main.THUMBNAIL_COLLECTION
|
||||
add column WIDTH int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_COLLECTION
|
||||
add column HEIGHT int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_COLLECTION
|
||||
add column MEDIA_TYPE varchar NOT NULL default '';
|
||||
ALTER TABLE main.THUMBNAIL_COLLECTION
|
||||
add column FILE_SIZE bigint NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE main.THUMBNAIL_READLIST
|
||||
add column WIDTH int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_READLIST
|
||||
add column HEIGHT int NOT NULL DEFAULT false;
|
||||
ALTER TABLE main.THUMBNAIL_READLIST
|
||||
add column MEDIA_TYPE varchar NOT NULL default '';
|
||||
ALTER TABLE main.THUMBNAIL_READLIST
|
||||
add column FILE_SIZE bigint NOT NULL DEFAULT false;
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
create index idx__thumbnail_book__width
|
||||
on THUMBNAIL_BOOK (WIDTH);
|
||||
create index idx__thumbnail_book__height
|
||||
on THUMBNAIL_BOOK (HEIGHT);
|
||||
create index idx__thumbnail_book__file_size
|
||||
on THUMBNAIL_BOOK (FILE_SIZE);
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
where MEDIA_TYPE = 'application/pdf'
|
||||
and STATUS = 'READY';
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
alter table MEDIA_FILE
|
||||
add column MEDIA_TYPE varchar NULL;
|
||||
alter table MEDIA_FILE
|
||||
add column SUB_TYPE varchar NULL;
|
||||
alter table MEDIA_FILE
|
||||
add column FILE_SIZE bigint NULL;
|
||||
|
||||
alter table MEDIA
|
||||
add column EXTENSION_CLASS varchar NULL;
|
||||
alter table MEDIA
|
||||
add column EXTENSION_VALUE varchar NULL;
|
||||
|
||||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
where MEDIA_TYPE = 'application/epub+zip'
|
||||
and STATUS = 'READY';
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
update MEDIA
|
||||
set EXTENSION_VALUE = null;
|
||||
|
||||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
where MEDIA_TYPE = 'application/epub+zip'
|
||||
and STATUS = 'READY';
|
||||
|
||||
ALTER TABLE MEDIA
|
||||
RENAME COLUMN EXTENSION_VALUE to _UNUSED;
|
||||
|
||||
alter table MEDIA
|
||||
add column EXTENSION_VALUE_BLOB bytea NULL;
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
ALTER TABLE READ_PROGRESS
|
||||
ADD COLUMN device_id varchar default '';
|
||||
ALTER TABLE READ_PROGRESS
|
||||
ADD COLUMN device_name varchar default '';
|
||||
ALTER TABLE READ_PROGRESS
|
||||
ADD COLUMN locator bytea null;
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
delete
|
||||
from THUMBNAIL_BOOK
|
||||
where TYPE = 'GENERATED'
|
||||
and THUMBNAIL is null;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table MEDIA
|
||||
add column EPUB_DIVINA_COMPATIBLE boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
where MEDIA_TYPE = 'application/epub+zip';
|
||||
|
||||
update media
|
||||
set STATUS = 'OUTDATED'
|
||||
where BOOK_ID in (select ID
|
||||
from BOOK
|
||||
where URL like '%.epub' collate NOCASE);
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
CREATE TABLE USER_API_KEY
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
USER_ID varchar NOT NULL,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
LAST_MODIFIED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
API_KEY varchar NOT NULL UNIQUE,
|
||||
COMMENT varchar NOT NULL,
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__user_api_key__user_id
|
||||
on USER_API_KEY (USER_ID);
|
||||
|
||||
ALTER TABLE AUTHENTICATION_ACTIVITY
|
||||
ADD COLUMN API_KEY_ID varchar NULL DEFAULT NULL;
|
||||
ALTER TABLE AUTHENTICATION_ACTIVITY
|
||||
ADD COLUMN API_KEY_COMMENT varchar NULL DEFAULT NULL;
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
CREATE TABLE SYNC_POINT
|
||||
(
|
||||
ID varchar NOT NULL PRIMARY KEY,
|
||||
CREATED_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
USER_ID varchar NOT NULL,
|
||||
API_KEY_ID varchar NULL,
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__sync_point__user_id
|
||||
on SYNC_POINT (USER_ID);
|
||||
|
||||
CREATE TABLE SYNC_POINT_BOOK_REMOVED_SYNCED
|
||||
(
|
||||
SYNC_POINT_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
PRIMARY KEY (SYNC_POINT_ID, BOOK_ID),
|
||||
FOREIGN KEY (SYNC_POINT_ID) REFERENCES SYNC_POINT (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__sync_point_book_removed_status__sync_point_id
|
||||
on SYNC_POINT_BOOK_REMOVED_SYNCED (SYNC_POINT_ID);
|
||||
|
||||
CREATE TABLE SYNC_POINT_BOOK
|
||||
(
|
||||
SYNC_POINT_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
BOOK_CREATED_DATE timestamp NOT NULL,
|
||||
BOOK_LAST_MODIFIED_DATE timestamp NOT NULL,
|
||||
BOOK_FILE_LAST_MODIFIED timestamp NOT NULL,
|
||||
BOOK_FILE_SIZE bigint NOT NULL,
|
||||
BOOK_FILE_HASH varchar NOT NULL,
|
||||
BOOK_METADATA_LAST_MODIFIED_DATE timestamp NOT NULL,
|
||||
BOOK_READ_PROGRESS_LAST_MODIFIED_DATE timestamp NULL,
|
||||
SYNCED boolean NOT NULL default false,
|
||||
PRIMARY KEY (SYNC_POINT_ID, BOOK_ID),
|
||||
FOREIGN KEY (SYNC_POINT_ID) REFERENCES SYNC_POINT (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__sync_point_book__sync_point_id
|
||||
on SYNC_POINT_BOOK (SYNC_POINT_ID);
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
alter table "USER"
|
||||
add column ROLE_KOBO_SYNC boolean NOT NULL DEFAULT false;
|
||||
|
||||
update "USER"
|
||||
set ROLE_KOBO_SYNC = true
|
||||
where ROLE_ADMIN = true;
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
alter table READ_PROGRESS_SERIES
|
||||
add MOST_RECENT_READ_DATE timestamp NULL;
|
||||
alter table READ_PROGRESS_SERIES
|
||||
add LAST_MODIFIED_DATE timestamp NULL;
|
||||
|
||||
update READ_PROGRESS_SERIES
|
||||
set MOST_RECENT_READ_DATE = (select max(r.READ_DATE)
|
||||
from READ_PROGRESS r
|
||||
inner join BOOK b on r.BOOK_ID = b.ID
|
||||
where b.SERIES_ID = READ_PROGRESS_SERIES.SERIES_ID);
|
||||
|
||||
update READ_PROGRESS_SERIES
|
||||
set LAST_MODIFIED_DATE = (select max(r.LAST_MODIFIED_DATE)
|
||||
from READ_PROGRESS r
|
||||
inner join BOOK b on r.BOOK_ID = b.ID
|
||||
where b.SERIES_ID = READ_PROGRESS_SERIES.SERIES_ID);
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
CREATE TABLE SYNC_POINT_READLIST
|
||||
(
|
||||
SYNC_POINT_ID varchar NOT NULL,
|
||||
READLIST_ID varchar NOT NULL,
|
||||
READLIST_NAME varchar NOT NULL,
|
||||
READLIST_CREATED_DATE timestamp NOT NULL,
|
||||
READLIST_LAST_MODIFIED_DATE timestamp NOT NULL,
|
||||
SYNCED boolean NOT NULL default false,
|
||||
PRIMARY KEY (SYNC_POINT_ID, READLIST_ID),
|
||||
FOREIGN KEY (SYNC_POINT_ID) REFERENCES SYNC_POINT (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__sync_point_readlist__sync_point_id
|
||||
on SYNC_POINT_READLIST (SYNC_POINT_ID);
|
||||
|
||||
CREATE TABLE SYNC_POINT_READLIST_BOOK
|
||||
(
|
||||
SYNC_POINT_ID varchar NOT NULL,
|
||||
READLIST_ID varchar NOT NULL,
|
||||
BOOK_ID varchar NOT NULL,
|
||||
PRIMARY KEY (SYNC_POINT_ID, READLIST_ID, BOOK_ID),
|
||||
FOREIGN KEY (SYNC_POINT_ID) REFERENCES SYNC_POINT (ID)
|
||||
);
|
||||
|
||||
create index if not exists idx__sync_point_readlist_book__sync_point_id_readlist_id
|
||||
on SYNC_POINT_READLIST_BOOK (SYNC_POINT_ID, READLIST_ID);
|
||||
|
||||
CREATE TABLE SYNC_POINT_READLIST_REMOVED_SYNCED
|
||||
(
|
||||
SYNC_POINT_ID varchar NOT NULL,
|
||||
READLIST_ID varchar NOT NULL,
|
||||
PRIMARY KEY (SYNC_POINT_ID, READLIST_ID),
|
||||
FOREIGN KEY (SYNC_POINT_ID) REFERENCES SYNC_POINT (ID)
|
||||
);
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
alter table MEDIA
|
||||
add column EPUB_IS_KEPUB boolean NOT NULL DEFAULT false;
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
ALTER TABLE main.SYNC_POINT_BOOK
|
||||
ADD COLUMN BOOK_THUMBNAIL_ID varchar NULL;
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
CREATE TABLE USER_ROLE
|
||||
(
|
||||
USER_ID varchar NOT NULL,
|
||||
ROLE varchar NOT NULL,
|
||||
PRIMARY KEY (USER_ID, ROLE),
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID)
|
||||
);
|
||||
|
||||
insert into USER_ROLE
|
||||
select id, 'ADMIN'
|
||||
from "USER"
|
||||
where ROLE_ADMIN = true;
|
||||
|
||||
insert into USER_ROLE
|
||||
select id, 'KOREADER_SYNC'
|
||||
from "USER"
|
||||
where ROLE_ADMIN = true;
|
||||
|
||||
insert into USER_ROLE
|
||||
select id, 'FILE_DOWNLOAD'
|
||||
from "USER"
|
||||
where ROLE_FILE_DOWNLOAD = true;
|
||||
|
||||
insert into USER_ROLE
|
||||
select id, 'PAGE_STREAMING'
|
||||
from "USER"
|
||||
where ROLE_PAGE_STREAMING = true;
|
||||
|
||||
insert into USER_ROLE
|
||||
select id, 'KOBO_SYNC'
|
||||
from "USER"
|
||||
where ROLE_KOBO_SYNC = true;
|
||||
|
||||
-- Remove columns ROLE_ADMIN, ROLE_FILE_DOWNLOAD, ROLE_PAGE_STREAMING, ROLE_KOBO_SYNC from "USER"
|
||||
|
||||
create table USER_dg_tmp
|
||||
(
|
||||
ID varchar not null
|
||||
primary key,
|
||||
CREATED_DATE timestamp default CURRENT_TIMESTAMP not null,
|
||||
LAST_MODIFIED_DATE timestamp default CURRENT_TIMESTAMP not null,
|
||||
EMAIL varchar not null
|
||||
unique,
|
||||
PASSWORD varchar not null,
|
||||
SHARED_ALL_LIBRARIES boolean DEFAULT true not null,
|
||||
AGE_RESTRICTION integer,
|
||||
AGE_RESTRICTION_ALLOW_ONLY boolean
|
||||
);
|
||||
|
||||
insert into USER_dg_tmp(ID, CREATED_DATE, LAST_MODIFIED_DATE, EMAIL, PASSWORD, SHARED_ALL_LIBRARIES, AGE_RESTRICTION,
|
||||
AGE_RESTRICTION_ALLOW_ONLY)
|
||||
select ID,
|
||||
CREATED_DATE,
|
||||
LAST_MODIFIED_DATE,
|
||||
EMAIL,
|
||||
PASSWORD,
|
||||
SHARED_ALL_LIBRARIES,
|
||||
AGE_RESTRICTION,
|
||||
AGE_RESTRICTION_ALLOW_ONLY
|
||||
from "USER";
|
||||
|
||||
drop table "USER" CASCADE;
|
||||
|
||||
alter table USER_dg_tmp
|
||||
rename to "USER";
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
ALTER TABLE LIBRARY
|
||||
add column HASH_KOREADER boolean NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE BOOK
|
||||
ADD COLUMN FILE_HASH_KOREADER varchar NOT NULL DEFAULT '';
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
CREATE TABLE CLIENT_SETTINGS_GLOBAL
|
||||
(
|
||||
KEY varchar NOT NULL PRIMARY KEY,
|
||||
VALUE varchar NOT NULL,
|
||||
ALLOW_UNAUTHORIZED boolean NOT NULL DEFAULT false
|
||||
);
|
||||
|
||||
CREATE TABLE CLIENT_SETTINGS_USER
|
||||
(
|
||||
USER_ID varchar NOT NULL,
|
||||
KEY varchar NOT NULL,
|
||||
VALUE varchar NOT NULL,
|
||||
FOREIGN KEY (USER_ID) REFERENCES "USER" (ID),
|
||||
PRIMARY KEY (KEY, USER_ID)
|
||||
);
|
||||
|
|
@ -1 +0,0 @@
|
|||
DROP TABLE IF EXISTS TEMP_STRING_LIST;
|
||||
|
|
@ -1,27 +1,36 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Script to run Komga locally with PostgreSQL
|
||||
|
||||
set -e
|
||||
# Configuration
|
||||
COMPOSE_FILE="docker-compose.local.yml"
|
||||
DB_PASSWORD="komga123"
|
||||
|
||||
echo "Starting PostgreSQL container..."
|
||||
docker-compose up -d postgres
|
||||
docker compose -f "$COMPOSE_FILE" up -d postgres
|
||||
|
||||
echo "Waiting for PostgreSQL to be ready..."
|
||||
sleep 5
|
||||
until docker exec komga-postgres pg_isready -U komga -d komga; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Building Komga..."
|
||||
./gradlew :komga:build -x test
|
||||
echo "Manually applying the consolidated PostgreSQL schema..."
|
||||
# We apply the big script manually to the DB
|
||||
docker exec -i komga-postgres psql -U komga -d komga < komga/src/flyway/resources/db/migration/postgresql/V001__initial_migration.sql
|
||||
|
||||
echo "Running Komga with PostgreSQL..."
|
||||
SPRING_PROFILES_ACTIVE=docker \
|
||||
KOMGA_DATABASE_TYPE=postgresql \
|
||||
KOMGA_DATABASE_URL="jdbc:postgresql://localhost:5433/komga?sslmode=disable&socketTimeout=10" \
|
||||
KOMGA_DATABASE_USERNAME=komga \
|
||||
KOMGA_DATABASE_PASSWORD=komga123 \
|
||||
KOMGA_CONFIG_DIR="$HOME/.komga-postgres" \
|
||||
./gradlew :komga:bootRun
|
||||
# Note: Use KOMGA_DATABASE_URL and other matching properties
|
||||
export KOMGA_DATABASE_DRIVER_CLASS_NAME=org.postgresql.Driver
|
||||
export KOMGA_DATABASE_URL="jdbc:postgresql://localhost:5433/komga?user=komga&password=$DB_PASSWORD"
|
||||
export KOMGA_DATABASE_USERNAME=komga
|
||||
export KOMGA_DATABASE_PASSWORD=$DB_PASSWORD
|
||||
export KOMGA_DATABASE_TYPE=postgresql
|
||||
export KOMGA_DATABASE_POOL_SIZE=10
|
||||
export KOMGA_DATABASE_MAX_POOL_SIZE=10
|
||||
export SPRING_FLYWAY_BASELINE_ON_MIGRATE=true
|
||||
export SPRING_FLYWAY_BASELINE_VERSION=20250730173126
|
||||
export KOMGA_CONFIG_DIR="$HOME/.komga-postgres"
|
||||
|
||||
./gradlew clean :komga:bootRun
|
||||
|
||||
echo "Komga is running at http://localhost:25600"
|
||||
echo "PostgreSQL is running at localhost:5433"
|
||||
echo "To stop: docker-compose down"
|
||||
echo "To stop: docker compose -f $COMPOSE_FILE stop postgres"
|
||||
Loading…
Reference in a new issue