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) | | `book_genres` | Связь книг↔жанров (book_id, genre_id) |
**Особенности:** **Особенности:**
- Полнотекстовый поиск через `fts tsvector` (русский язык) - Полнотекстовый поиск через `tsvector` + GIN-индексы (русский язык)
- Хеши (MD5) для быстрого поиска - Хеши (MD5) для быстрого поиска
- Поле `source` для поддержки нескольких источников - Поле `source` для поддержки нескольких источников
- Нормализация: авторы/серии/жанры вынесены в отдельные таблицы - Нормализация: авторы/серии/жанры вынесены в отдельные таблицы
@@ -107,16 +107,15 @@ AUTHOR \x04 GENRE \x04 TITLE \x04 SERIES \x04 SERNO \x04 FILE \x04 SIZE \x04 LIB
- Вложенность: до 3 уровней - Вложенность: до 3 уровней
- RAR: бонусная поддержка - RAR: бонусная поддержка
### Таблица `file_scan_log` ### Структура хранения (финальное решение)
| Поле | Тип | Назначение | - **file_scan_log** хранит архивы: `archive_path`, `archive_hash` (хэш всего ZIP), `file_size`, `updated_at`
|------|-----|-----------| - **books** хранит: `archive_path` + `fb2_name` (путь к FB2 внутри архива)
| file_path | TEXT | Полный путь к файлу | - При удалении архива → удаляем все книги из этого архива
| file_size | INTEGER | Размер файла | - При изменении архива → удаляем старые книги, парсим заново
| file_hash | TEXT | MD5/SHA256 хеш содержимого | - Дубликаты с одинаковым содержимым не вызывают лишней работы (проверка по хэшу архива)
| updated_at | TIMESTAMP | Последнее обновление |
### Удаление книг ### Удаление книг
- Файл исчез с диска → книга удаляется из БД безвозвратно - Файл (архив) исчез с диска → книги удаляются из БД безвозвратно
- Файл изменён → старые книги удаляются, парсится заново - Файл изменён → старые книги удаляются, парсится заново
### Источник ### Источник