From 073f138c47824a33b6fb4a0fd68e5c427ebb8c59 Mon Sep 17 00:00:00 2001 From: Mike Colagrosso Date: Mon, 19 Feb 2024 22:49:20 -0700 Subject: [PATCH] Initial Ebook DB schema --- config/sql/se/Collections.sql | 9 +++++++++ config/sql/se/Contributors.sql | 13 +++++++++++++ config/sql/se/EbookLocSubjects.sql | 5 +++++ config/sql/se/EbookSources.sql | 6 ++++++ config/sql/se/EbookTags.sql | 5 +++++ config/sql/se/Ebooks.sql | 31 ++++++++++++++++++++++++++++++ config/sql/se/GitCommits.sql | 7 +++++++ config/sql/se/LocSubjects.sql | 6 ++++++ config/sql/se/TocEntries.sql | 5 +++++ 9 files changed, 87 insertions(+) create mode 100644 config/sql/se/Collections.sql create mode 100644 config/sql/se/Contributors.sql create mode 100644 config/sql/se/EbookLocSubjects.sql create mode 100644 config/sql/se/EbookSources.sql create mode 100644 config/sql/se/EbookTags.sql create mode 100644 config/sql/se/Ebooks.sql create mode 100644 config/sql/se/GitCommits.sql create mode 100644 config/sql/se/LocSubjects.sql create mode 100644 config/sql/se/TocEntries.sql diff --git a/config/sql/se/Collections.sql b/config/sql/se/Collections.sql new file mode 100644 index 00000000..b7bfe28a --- /dev/null +++ b/config/sql/se/Collections.sql @@ -0,0 +1,9 @@ +CREATE TABLE `Collections` ( + `EbookId` int(10) unsigned NOT NULL, + `Name` varchar(255) NOT NULL, + `UrlName` varchar(255) NOT NULL, + `SequenceNumber` int(10) unsigned NULL, + `Type` varchar(255) NULL, + KEY `index1` (`EbookId`), + KEY `index2` (`UrlName`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/Contributors.sql b/config/sql/se/Contributors.sql new file mode 100644 index 00000000..76e7e4bb --- /dev/null +++ b/config/sql/se/Contributors.sql @@ -0,0 +1,13 @@ +CREATE TABLE `Contributors` ( + `EbookId` int(10) unsigned NOT NULL, + `Name` varchar(255) NOT NULL, + `UrlName` varchar(255) NOT NULL, + `SortName` varchar(255) NULL, + `WikipediaUrl` varchar(255) NULL, + `MarcRole` varchar(10) NULL, + `FullName` varchar(255) NULL, + `NacoafUrl` varchar(255) NULL, + `SortOrder` tinyint(3) unsigned NOT NULL, + KEY `index1` (`EbookId`), + KEY `index2` (`UrlName`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/EbookLocSubjects.sql b/config/sql/se/EbookLocSubjects.sql new file mode 100644 index 00000000..978e1e75 --- /dev/null +++ b/config/sql/se/EbookLocSubjects.sql @@ -0,0 +1,5 @@ +CREATE TABLE `EbookLocSubjects` ( + `EbookId` int(10) unsigned NOT NULL, + `LocSubjectId` int(10) unsigned NOT NULL, + UNIQUE KEY `idxUnique` (`EbookId`,`LocSubjectId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/EbookSources.sql b/config/sql/se/EbookSources.sql new file mode 100644 index 00000000..98dff2b0 --- /dev/null +++ b/config/sql/se/EbookSources.sql @@ -0,0 +1,6 @@ +CREATE TABLE `EbookSources` ( + `EbookId` int(10) unsigned NOT NULL, + `Type` tinyint(4) unsigned NOT NULL, + `Url` varchar(255) NOT NULL, + KEY `index1` (`EbookId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/EbookTags.sql b/config/sql/se/EbookTags.sql new file mode 100644 index 00000000..f00ee7f8 --- /dev/null +++ b/config/sql/se/EbookTags.sql @@ -0,0 +1,5 @@ +CREATE TABLE `EbookTags` ( + `EbookId` int(10) unsigned NOT NULL, + `TagId` int(10) unsigned NOT NULL, + UNIQUE KEY `idxUnique` (`EbookId`,`TagId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/Ebooks.sql b/config/sql/se/Ebooks.sql new file mode 100644 index 00000000..5290da26 --- /dev/null +++ b/config/sql/se/Ebooks.sql @@ -0,0 +1,31 @@ +CREATE TABLE `Ebooks` ( + `EbookId` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Identifier` varchar(511) NOT NULL, + `Created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Updated` timestamp NOT NULL, + `WwwFilesystemPath` varchar(511) NOT NULL, + `RepoFilesystemPath` varchar(511) NOT NULL, + `KindleCoverUrl` varchar(511) NULL, + `EpubUrl` varchar(511) NULL, + `AdvancedEpubUrl` varchar(511) NULL, + `KepubUrl` varchar(511) NULL, + `Azw3Url` varchar(511) NULL, + `DistCoverUrl` varchar(511) NULL, + `Title` varchar(255) NOT NULL, + `FullTitle` varchar(255) NULL, + `AlternateTitle` varchar(255) NULL, + `Description` text NOT NULL, + `LongDescription` text NOT NULL, + `Language` varchar(10) NULL, + `WordCount` int(10) unsigned NOT NULL, + `ReadingEase` float NOT NULL, + `GitHubUrl` varchar(255) NULL, + `WikipediaUrl` varchar(255) NULL, + `EbookCreated` datetime NOT NULL, + `EbookUpdated` datetime NOT NULL, + `TextSinglePageByteCount` bigint unsigned NOT NULL, + `IndexableText` text NOT NULL, + PRIMARY KEY (`EbookId`), + UNIQUE KEY `index1` (`Identifier`), + FULLTEXT `idxSearch` (`IndexableText`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/GitCommits.sql b/config/sql/se/GitCommits.sql new file mode 100644 index 00000000..5b1901d5 --- /dev/null +++ b/config/sql/se/GitCommits.sql @@ -0,0 +1,7 @@ +CREATE TABLE `GitCommits` ( + `EbookId` int(10) unsigned NOT NULL, + `Created` datetime NOT NULL, + `Message` text NOT NULL, + `Hash` char(40) NOT NULL, + KEY `index1` (`EbookId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/LocSubjects.sql b/config/sql/se/LocSubjects.sql new file mode 100644 index 00000000..481e9ae2 --- /dev/null +++ b/config/sql/se/LocSubjects.sql @@ -0,0 +1,6 @@ +CREATE TABLE `LocSubjects` ( + `LocSubjectId` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Name` varchar(255) NOT NULL, + PRIMARY KEY (`LocSubjectId`), + UNIQUE KEY `idxUnique` (`Name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/config/sql/se/TocEntries.sql b/config/sql/se/TocEntries.sql new file mode 100644 index 00000000..7f205134 --- /dev/null +++ b/config/sql/se/TocEntries.sql @@ -0,0 +1,5 @@ +CREATE TABLE `TocEntries` ( + `EbookId` int(10) unsigned NOT NULL, + `TocEntry` text NOT NULL, + KEY `index1` (`EbookId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;