2.8 KiB
dao
В этой задаче вам нужно реализовать data access object для доступа к таблице пользователей.
- Функция
CreateDao
должна создавать таблицу в базе данных. - Метод
Create
должен создавать нового пользователя и назначать егоID
. За генерациюID
должна отвечать база данных, использоватьrand
запрещается.pgx
не поддерживаетLastInsertId
, используйте синтаксисRETURNING id
. - Метод
Update
меняетName
пользователя. - Метод
Delete
удаляет пользователя из таблицы. - Метод
Lookup
возвращаетName
пользователя поID
. - Метод
List
возвращает список всех пользователей в таблице.
Запуск тестов на linux
Для работы тестов на ubuntu нужно установить пакет postgresql
.
sudo apt install postgresql
Если вы работаете на другом дистрибутиве linux, воспользуйтесь своим пакетным менеджером. Для работы тестов нужны исполняемые файлы postgres
и initdb
.
Тесты сами запускают базу данных в начале, и останавливают её в конце. База данных работает от текущего пользователя во временной директории.
Запуск postgres в docker
Даже если у вас linux (и уж тем более, если нет), вы можете не захотеть ставить postgres в систему. Альтернативный способ — запустить бд в докере.
Для этого нужно установить docker и docker-compose по инструкции из dockertest. Добиться успешного запуска
go test -v ./dockertest/...
Запускать тесты можно будет так:
(cd dao && docker-compose up -d && sleep 1 && env PGCONN="host=127.0.0.1 port=5432 database=shad-go user=gopher password=pass" go test -v ./... -count=1 || true && docker-compose down)
Эта команда стартует docker с postgresql, запускает тесты, передав им DSN через переменную окружения, удаляет контейнеры в конце.
Как подчистить контейнеры, если что-то пошло не так:
(cd dao && docker-compose down)