Update OPDS_LIBRARY_CONTEXT.md

This commit is contained in:
astakhovp committed 2026-10-08 23:21:17 +03:00
1 parent a51a7e1a76
commit 893e3fe3d8
1 file changed
+8 -9
+8 -9
View File
@@ -53,7 +53,7 @@
| `book_genres` | Связь книг↔жанров (book_id, genre_id) |
**Особенности:**
- Полнотекстовый поиск через `fts tsvector` (русский язык)
- Полнотекстовый поиск через `tsvector` + GIN-индексы (русский язык)
- Хеши (MD5) для быстрого поиска
- Поле `source` для поддержки нескольких источников
- Нормализация: авторы/серии/жанры вынесены в отдельные таблицы
@@ -107,16 +107,15 @@ AUTHOR \x04 GENRE \x04 TITLE \x04 SERIES \x04 SERNO \x04 FILE \x04 SIZE \x04 LIB
- Вложенность: до 3 уровней
- RAR: бонусная поддержка
### Таблица `file_scan_log`
| Поле | Тип | Назначение |
|------|-----|-----------|
| file_path | TEXT | Полный путь к файлу |
| file_size | INTEGER | Размер файла |
| file_hash | TEXT | MD5/SHA256 хеш содержимого |
| updated_at | TIMESTAMP | Последнее обновление |
### Структура хранения (финальное решение)
- **file_scan_log** хранит архивы: `archive_path`, `archive_hash` (хэш всего ZIP), `file_size`, `updated_at`
- **books** хранит: `archive_path` + `fb2_name` (путь к FB2 внутри архива)
- При удалении архива → удаляем все книги из этого архива
- При изменении архива → удаляем старые книги, парсим заново
- Дубликаты с одинаковым содержимым не вызывают лишней работы (проверка по хэшу архива)
### Удаление книг
- Файл исчез с диска → книга удаляется из БД безвозвратно
- Файл (архив) исчез с диска → книги удаляются из БД безвозвратно
- Файл изменён → старые книги удаляются, парсится заново
### Источник