feat(book-requests): add automated request fulfillment

Let users request books, route approvals, search configured sources, and import fulfilled releases through the Book Dock. Include scoped permissions, automation, download-client integrations, plugin support, requester visibility, and one consolidated schema migration.

Closes #248
Ref #1115
This commit is contained in:
neon
2026-08-31 16:33:40 +00:00
parent 0f5429131a
commit fc6e6f03d5
443 changed files with 87915 additions and 1730 deletions
+14 -2
View File
@@ -5,7 +5,17 @@ import { ScheduleModule } from '@nestjs/schedule';
import { ThrottlerModule } from '@nestjs/throttler';
import { LoggerModule } from 'nestjs-pino';
import { appConfig, authConfig, dbConfig, emailConfig, fileWriteConfig, migrationConfig, oidcRuntimeConfig, storageConfig } from './config/config';
import {
appConfig,
authConfig,
bookRequestConfig,
dbConfig,
emailConfig,
fileWriteConfig,
migrationConfig,
oidcRuntimeConfig,
storageConfig,
} from './config/config';
import { validateEnv } from './config/env.validation';
import { loggerConfig } from './common/logger.config';
import { CommonModule } from './common/common.module';
@@ -44,6 +54,7 @@ import { SeedModule } from './modules/seed/seed.module';
import { EmailModule } from './modules/email/email.module';
import { EpubModule } from './modules/reader/epub/epub.module';
import { BookDockModule } from './modules/book-dock/book-dock.module';
import { BookRequestModule } from './modules/book-request/book-request.module';
import { BrowseCountsModule } from './modules/browse-counts/browse-counts.module';
import { UploadModule } from './modules/upload/upload.module';
import { UserModule } from './modules/user/user.module';
@@ -83,7 +94,7 @@ import { BookMoveModule } from './modules/book-move/book-move.module';
ConfigModule.forRoot({
isGlobal: true,
validate: validateEnv,
load: [appConfig, dbConfig, authConfig, storageConfig, fileWriteConfig, emailConfig, migrationConfig, oidcRuntimeConfig],
load: [appConfig, dbConfig, authConfig, storageConfig, fileWriteConfig, emailConfig, migrationConfig, bookRequestConfig, oidcRuntimeConfig],
}),
ScheduleModule.forRoot(),
ThrottlerModule.forRoot({
@@ -132,6 +143,7 @@ import { BookMoveModule } from './modules/book-move/book-move.module';
UserPreferencesModule,
EpubModule,
BookDockModule,
BookRequestModule,
EmailModule,
MetadataScoreModule,
StatisticsModule,