mysitenews/README.md

110 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# mysitenews
Графическое приложение на Qt для заполнения таблицы `random_data` в PostgreSQL.
При запуске открывается окно подключения к БД. После успешного подключения
появляется форма добавления записи с полями `name` и `text`, а также счётчик
текущего количества записей в таблице.
## Возможности
- подключение к PostgreSQL (host, port, user, password);
- сохранение последней успешной конфигурации подключения;
- отображение количества записей в `public.random_data`;
- добавление записей (`name`, `text`);
- показ ошибки при неудачном подключении.
## Требования
- CMake 3.16+;
- компилятор с поддержкой C++17;
- Qt 5 или Qt 6 (модули `Widgets` и `Sql`);
- драйвер PostgreSQL для Qt (`QPSQL`);
- сервер PostgreSQL.
Проверить наличие драйвера можно так:
```bash
ls /usr/lib/x86_64-linux-gnu/qt6/plugins/sqldrivers/
```
В каталоге должен быть `libqsqlpsql.so` (для Qt 5 — `libqsqlpsql.so` в
соответствующем каталоге плагинов). В Debian/Ubuntu драйвер ставится пакетом
`libqt6sql6-psql` (для Qt 5 — `libqt5sql5-psql`).
## Сборка и запуск
```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/mysitenews
```
При сборке из Qt Creator используется каталог `build/Desktop-Debug`.
## База данных
Приложение обращается к БД `cards` и таблице `public.random_data`.
Ожидаемая структура таблицы:
```sql
CREATE TABLE public.random_data (
id serial PRIMARY KEY,
name varchar(100) NOT NULL,
text text NOT NULL,
description text,
created_at timestamp DEFAULT CURRENT_TIMESTAMP
);
```
### Права пользователя
Пользователю БД нужны права на таблицу и на последовательность `id`:
```sql
GRANT SELECT, INSERT ON public.random_data TO cards_user;
GRANT USAGE, SELECT ON SEQUENCE public.random_data_id_seq TO cards_user;
```
Без прав на последовательность вставка завершится ошибкой
`permission denied for sequence random_data_id_seq`.
## Использование
1. Запустите приложение.
2. Введите адрес сервера, порт (по умолчанию `5432`), имя пользователя и пароль.
3. Нажмите **OK**. При ошибке подключения будет показано сообщение.
4. Заполните поля `name` и `text` и нажмите **ADD**.
Поле `text` сохраняется как HTML (`QTextEdit::toHtml()`). Оба поля обязательны.
Длина `name` ограничена таблицей — 100 символов.
## Конфигурация
После успешного подключения параметры сохраняются через `QSettings`
(`QSettings("mysitenews", "mysitenews")`). В Linux файл находится по пути:
```
~/.config/mysitenews/mysitenews.conf
```
Сохраняются `db/host`, `db/port`, `db/database`, `db/user`, `db/password`.
При следующем запуске поля формы заполняются этими значениями.
**Внимание:** пароль хранится в открытом виде. Не используйте этот способ
для продакшн-окружений; предпочтительнее `~/.pgpass` или переменные окружения.
## Структура проекта
| Файл | Назначение |
| --- | --- |
| `main.cpp` | точка входа, связывает окно авторизации и рабочее окно |
| `auth.h` / `auth.cpp` | окно подключения к БД, сохранение конфигурации |
| `widget.h` / `widget.cpp` | форма добавления записей и подсчёт количества |
| `CMakeLists.txt` | конфигурация сборки |
## Лицензия
Проект распространяется под GNU General Public License v3. Подробности — в
файле [LICENSE](LICENSE).