Update OPDS_LIBRARY_CONTEXT.md
This commit is contained in:
1 parent
a51a7e1a76
commit
893e3fe3d8
1 file changed
+8
-9
@@ -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 внутри архива)
|
||||
- При удалении архива → удаляем все книги из этого архива
|
||||
- При изменении архива → удаляем старые книги, парсим заново
|
||||
- Дубликаты с одинаковым содержимым не вызывают лишней работы (проверка по хэшу архива)
|
||||
|
||||
### Удаление книг
|
||||
- Файл исчез с диска → книга удаляется из БД безвозвратно
|
||||
- Файл (архив) исчез с диска → книги удаляются из БД безвозвратно
|
||||
- Файл изменён → старые книги удаляются, парсится заново
|
||||
|
||||
### Источник
|
||||
|
||||
Reference in new issue
Block a user