Схема БД для пользовательской навигации по файлам с laravel и mysql - PullRequest
0 голосов
/ 25 марта 2020

Проблема

Привет, я хочу иметь веб-приложение, в котором пользователь мог бы перемещаться по системе каталогов и подкаталогов и загружать / просматривать файлы. (похоже на файловый менеджер, но у них есть некоторые важные ограничения для этого проекта ограничение )

Я хочу создать панель, в которой я смогу перейти (через почтовый запрос) к следующей папке или скачать файл и загрузить файл.

Существует две категории пользователя:

  • пользователь A (может просматривать пользователь Файлы A и B)

  • пользователь B (можно просматривать только файлы пользователя B)

Возможное решение

Что если я создаю таблицу таким образом

- --- -

путь -> строка -> первичный ключ (этот путь равно пути в файловой системе)

isDirectory -> логическое

canViewByUserB -> логическое

- - - -

Поле пути уникально, поэтому у меня не может быть двух файлов с одинаковыми именами в одной папке. Итак, когда создается панель, я выполняю поиск с помощью почтового запроса для пути, который не содержит "/" (возможно, с оператором LIKE?), Поэтому он находится в папке root. Если этот запрос извлекает каталог:

  1. , если пользователь щелкает по нему, я делаю пост-запрос и ищу путь, который начинается с "nameOfThisDirectory / someString", но он не должен содержит другое / (таким образом я получаю дочерний каталог)
  2. файл, получаем запрос на загрузку файла с указанным путем

РЕДАКТИРОВАТЬ

Чтобы пройти через файловую систему через БД, здесь запрос

select  * from file where path REGEXP '^([^/]*[/]){2}[^/]*$';

'2' указывает два /

что вы думаете этого решения? С помощью этой настройки я могу легко сделать некоторые вещи, такие как

  1. создать общее число загрузок файла
  2. количество визуализаций в файле
  3. легко перемещаться по файловая система
  4. применять политики к файлам (пользователь a и пользователь b)

Спасибо , ожидая совета

...