Commit d10f2362 authored by mitshel's avatar mitshel
Browse files

Изменены скрипты для содания БД. Внесены правки в README.md

parent ba58e296
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -38,8 +38,20 @@ Alias /opds "/home/www/opds"
Перед началом работы необходимо внести необходимые настройки в файл конфигурации ./conf/sopds.conf

4. Инициализация базы данных.
Для работы каталога необходимо создать(пересоздать) базу данных sopds при помощи скрипта:
./db/db_create.sh
Во первых для работы каталога необходимо создать базу данных "sopds" и пользователя с необходимыми правами, например
следующим образом:
  mysql -uroot -proot_pass mysql
  mysql > create database if not exists sopds default charset=utf8;
  mysql > grant select,insert,update,delete,execute on sopds.* to 'sopds'@'localhost' identified by 'sopds';
  mysql > commit;
  mysql > ^C

Далее в созданную базу данных необходимо загрузить структуру БД и заполненную таблицу жанров, например
следующим образом:
  mysql -uroot -proot_pass sopds < ./db/tables.sql
  mysql -uroot -proot_pass sopds < ./db/genres.sql

Все указанные выше процедуры могут быть выполнены при помощи скрипта ./db/db_create.sh суперпользователем root (для Fedora)

5. Сканирование каталога с книгами.
Для сканирования каталога с электронными книгами запустить скрипт sopds-scan.py
@@ -56,7 +68,7 @@ Alias /opds "/home/www/opds"

8. Обновление версий
- Поскольку при переходе от версии к версии возможно изменение структуры БД необходимо пересоздать ее следующей командой
  ./db/db_create.sh
  ./db/db_create.sh либо выполнить рекомендации в п.4
- После пересоздания БД и, как следствие уничтожении сыллок из БД на извлеченные обложки стоит удалить со всем содержимым
  папку covers
  rm -rf covers

db/db.sql

0 → 100644
+3 −0
Original line number Diff line number Diff line
create database if not exists sopds default charset=utf8;
grant select,insert,update,delete,execute on sopds.* to 'sopds'@'localhost' identified by 'sopds';
commit;
+4 −6
Original line number Diff line number Diff line
#!/bin/bash

script_dbcrea='dbcrea.sql'
script_genre='genre.sql'
run_path=`dirname $0`
script_dbcrea=$run_path'/dbcrea.sql'
script_db=$run_path'/db.sql'
script_tables=$run_path'/tables.sql'
script_genres=$run_path'/genres.sql'
script_sp=$run_path'/sp_update_dbl.sql'

mysql mysql < $script_dbcrea
mysql mysql < $script_db
mysql sopds < $script_tables
mysql sopds < $script_genres
mysql sopds < $script_sp
+0 −23
Original line number Diff line number Diff line
#!/bin/bash

echo "use sopds;"
echo "SET NAMES 'utf8';"
echo "SET CHARACTER SET utf8;"
echo "drop table if exists genres;"
echo "drop table if exists bgenres;"
echo "commit;"
echo
echo "create table genres("
echo "genre_id INT not null AUTO_INCREMENT," 
echo "genre VARCHAR(32),"
echo "section VARCHAR(32),"
echo "subsection VARCHAR(32),"
echo "PRIMARY KEY(genre_id),"
echo "KEY(genre));"
echo "commit;"
echo
echo "create table bgenres("
echo "genre_id INT not NULL,"
echo "book_id INT not NULL,"
echo "PRIMARY KEY(book_id,genre_id),"
echo "INDEX(genre_id));"
echo "commit;"
echo
cat genres.txt | grep -v '#' | awk -F'@' '{gsub(/^ +| +$/,"",$1)} {gsub(/^ +| +$/,"",$2)} {gsub(/^ +| +$/,"",$3)} {print "insert into genres(genre,subsection,section) values(\""$1"\",\""$2"\",\""$3"\");"}'
echo "commit;"
+0 −23
Original line number Diff line number Diff line
use sopds;
SET NAMES 'utf8';
SET CHARACTER SET utf8;
drop table if exists genres;
drop table if exists bgenres;
commit;

create table genres(
genre_id INT not null AUTO_INCREMENT,
genre VARCHAR(32),
section VARCHAR(32),
subsection VARCHAR(32),
PRIMARY KEY(genre_id),
KEY(genre));
commit;

create table bgenres(
genre_id INT not NULL,
book_id INT not NULL,
PRIMARY KEY(book_id,genre_id),
INDEX(genre_id));
commit;

insert into genres(genre,subsection,section) values("economics_ref","Деловая литература","Деловая литература");
insert into genres(genre,subsection,section) values("popular_business","Карьера, кадры","Деловая литература");
insert into genres(genre,subsection,section) values("org_behavior","Маркетинг, PR","Деловая литература");
Loading