Сопроводительное письмо
- Таблицы в PostgreSQL:
Написал скрипт для создания требуемых таблиц опираясь на книгу "Postgres. Первое знакомство" Лузанова, Рогова, Лёвшина и сайт postgrespro.ru
Пользователь: postgres Пароль: qwe123
Таблица "User" из условия в моей БД называется "Users", столкнулся с зарезервированным именем. В дальнейшем нашел, что конфликта с именем можно было избежать указав название как: 'User'.
Тип данных "String" из условия - выбрал тип данных "Text", так как не имеет ограничения на число символов, в отличии от "Char" и "Varchar".
Столбцу "date_created" таблицы "Item" прописал условие DEFAULT NOW() для сохранения времени и даты записи.
Для реализации условия "cascade delete" для столбцов таблицы "Item" добавил связь между ними и таблицами "Category" и "Users" через "REFERENCES ... ON DELETE CASCADE".
Создал индексы для требумых столбцов, выбрал раздельные, для того, чтобы обеспечить возможность поиска по индексу по полям "category_id" и "user_id" в отдельности для каждого параметра.
БД разместил в папке в виде бэк-апа, созданного с помощью pg_dump, "testbd.pgsql". Так же нашел информацию о возможности перемещения данных копированием папки Data и внесением изменений в файл "postgresql.conf", копия находится в папке "sql:\testdb"
- API, используя Go.
API писал в Visual Studio Code с расширением Go Extension. Опирался на статьи по написанию API для таблиц Postgres в интернете.
Разобрал несколько примеров, код последнего по-которому делал, находится в "cmd:\main.go"
Прописал параметры соединения с БД, описал связи параметров из БД с API через Json. С помощью mux описал, каким образом проходит соединение БД и API. Описал функции по получению, добавлению и удалению(по category_id) данных из таблицы.
Упёрся в то, что не смог протестировать работоспособность API. Тестировать пробовал через Postman и Thunder. Изначально попробовал отправить запрос "GET" на порт, указанный в разбираемом примере(8000). Получил ошибку запроса. Нашел информацию о том, что необходимо отправлять запрос на "localhost:8000", попробовал, получил другую ошибку. Нашел информацию о том, что необходимо прописать запрос через ip. Столкнулся, с неправильно выбраным протоколом(https вместо http) После исправления протокола столкнулся с ошибкой ран-тайма запроса. Попробовал изменить порт на 5432, как на используемый PostgreSQL, столкнулся с неработающим "Shell SQL", ошибка с ран-таймом осталась без изменений.
После этого полез разбираться, каким образом могу загрузить имеющееся на GitHub для отправки пул реквеста.