Управление закачками файлов (исходников)
Для того, чтобы приступить к решению вопроса, нужно определиться с:
определением БД информации о файлах
файловой иерархией поступаемых файлов
файловой иерархией архива файлов
Определение БД информации о файлах
Выделим сущности, на основании которых можно создавать базу данных.
Поля
SrcName - Название программы/проекта
Author - Автор
Email - Координаты (эл. почта)
Category - Категории, к котороым относится программа/проект, через запятую
License - Лицензия распространения (
GPL,
LGPL,MPL,BSD,Creative Commons,Copyleft,…)
BriefDesc - Короткое описание (у заголовка)
FullDesc - Полное описание
DateUploaded - Дата закачки
Keywords - Ключевые слова через запятую
Rating - Рейтинг пользователей
Comments - Комментарии пользователей (?)
SrcSize - Размер файлов программы/проекта в КБ.
Этих данных должно быть достаточно для того, чтобы находить по ним путь к файлам искомой программы.
Файловая иерархия поступаемых файлов
В корневой папке Incoming будут помещаться папки с именем формата времени yyyymm (закачки за период одного месяца), внутри которых будут размещаться папки с названием программы/проекта, в которых, в свою очередь, должны находиться прилагаемые файлы.
Структура директорий:
Incoming/yyyymm/%sourcename%/sourcefiles
Файловая иерархия архива файлов
В корневой директории SrcArchive будут помещаться директории с именем формата времени yyyy (закачки за период одного года), внутри которых будут размещаться директории с названием программы/проекта, в которых, в свою очередь, должны находиться прилагаемые файлы.
Структура директорий:
SrcArchive/yyyy/%sourcename%/sourcefiles
Добавление новой программы
Заполняются поля данных о программе. Если не указана категория, то по умолчанию она принимается как «Разное».
Получение пути для сохранения программы
Перемещение файлов в директорию архива
Добавление записи в БД
Получение пути для сохранения программы
Входные данные
Выходные данные
Добавление записи в БД
INSERT INTO tablename VALUES (...)
Выборка списка программ из БД
Выбор критериев поиска
Получение ответа на запрос
Выбор критериев поиска
Выбираются критерии поиска: по имени, по дате, типу лицензии и т.д.
Получение ответа на запрос
SELECT ... FROM tablename WHERE ...