URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 8281
[ Назад ]

Исходное сообщение
"Как и чем выставить БД в веб в стиле минимализма?"

Отправлено AA_suited , 24-Окт-21 01:32 
Важно: я не ищу альтернативу phpMyAdmin, так как SQL DDL предполагается держать в файлах, а не конструировать в стиле phpMyAdmin через веб-интерфейс!

Как назвать искомое мной -- прямо не знаю, ну пусть это будет скрипт.

Язык программирования скрипта не очень важен -- даже и Хаскель пойдет. Но если будет выбор, то лучше все же что-то привычное: С++/java/C#/С (именно с такими приоритетами).

Пример: возможность зайти на урл вроде такого:


http://example.com/db?action=edit&token=mysecret&SQL=select&...,myfield2%20from%20table%20where%20id=%%1&arg1=123

Результат: если токен подходящий (т.е. соответствует авторизованному пользователю, и у пользователя есть права на доступ к id=123), то скрипт  выдаёт страницу, в которой все поля записи показываются, причем каждое в своем виджете (например, если какое-то текстовое поле означает адрес картинки, то показывается эта картинка, а не текст). Далее пользователь может отредактировать и сохранить запись.

Если же токен неподходящий, то скрипт выдает соответствующие страницы ошибок (желательно кастомизируемые).

Что неприемлемо: если инфа о соответствии виджетов полям будет хранится языково-зависимым образом, например в виде исходного текста с определением кучи классов на языке скрипта (однако реализация виджетов в скрипте будет на языке скрипта -- а как же иначе?). В остальном вопрос "как определяется виджет для поля" скрипт решает сам, например, беря (поле, таблица,базы_данных, имя_виджета) из таблицы БД, или из json, или же, прости меня Макаронный Монстр, из xml-файла.

Пример как неприемлемо:


class mydb::mytable::myfield1: public db_image { };
class mydb::mytable::myfield2: public db_text { };
class mydb::mytable::myfield3: public db_number { };

Пример как можно:


<widgets>
<assign db="mydb" table="mytable" field="myfield1" widget="db_image" />
<assign db="mydb" table="mytable" field="myfield2" widget="db_text" />
<assign db="mydb" table="mytable" field="myfield3" widget="db_number" />
</widgets>


Перечислю фичи:

1. Виджеты ко всем полям с возможностью показа и редактирования. В том числе виджеты для таблиц с отношением "внешний ключ".

2. Шаблоны страниц, но не слишком сложные, или, альтернативно, вызов функции полноценного ЯП для формирования страницы из виджетов.

3. Аутентификация/авторизация (юзера, пароли, токены, права, роли) -- или хотя бы только токены.

4. Файлы (можно хранить в БД или ФС по выбору библиотеки); желательно удаление по счётчику ссылок на них =0.

Замечания:

1. Роутинг и другие вещи полезны, но не входят в понятие "минимализм".

2. Токен, понятно, лучше передавать кукой, но в гет-параметрах он тоже должен восприниматься.

3. Создавать/удалять токены, регистрировать юзеров и т.п. скрипт не обязан. Он должн только знать, откуда их брать, и как их проверять.

4. Тут на самом деле ещё кое-какие проектировочные решения должны быть (например, как быть с виджетами на несколько полей), но это не принципиально.


Содержание

Сообщения в этом обсуждении
"Как и чем выставить БД в веб в стиле минимализма?"
Отправлено ыы , 24-Окт-21 19:37 
> Как назвать искомое мной -- прямо не знаю, ну пусть это будет скрипт.

Это называется CRUD  https://yandex.ru/search/?text=crud

Берете подходящий скрипт и дописываете под свои хотелки.


"Как и чем выставить БД в веб в стиле минимализма?"
Отправлено AA_suited , 24-Окт-21 20:09 
> Это называется CRUD  https://yandex.ru/search/?text=crud

Нет. CRUD это фича номер 0, настолько очевидная, что я ее в список фич не внес.

> Берете подходящий скрипт и дописываете под свои хотелки.

Да я могу и с нуля написать на плюсах, но зачем изобретать велосипед?