shad-go/dao/README.md

47 lines
2.7 KiB
Markdown
Raw Normal View History

2022-03-26 17:41:17 +00:00
# dao
В этой задаче вам нужно реализовать data access object для доступа к таблице пользователей.
- Функция `CreateDao` должна создавать таблицу в базе данных.
- Метод `Create` должен создавать нового пользователя и назначать его `ID`.
2022-03-31 09:57:23 +00:00
За генерацию `ID` должна отвечать база данных, использовать `rand` запрещается.
2022-03-26 17:41:17 +00:00
- Метод `Update` меняет `Name` пользователя.
- Метод `Delete` удаляет пользователя из таблицы.
- Метод `Lookup` возвращает `Name` пользователя по `ID`.
2022-03-29 14:21:14 +00:00
- Метод `List` возвращает список всех пользователей в таблице.
2022-03-31 09:57:23 +00:00
## Запуск тестов на linux
Для работы тестов на ubuntu нужно установить пакет `postgresql`.
```
sudo apt install postgresql
```
Если вы работаете на другом дистрибутиве linux, воспользуйтесь своим пакетным менеджером. Для работы тестов нужны исполняемые файлы `postgres` и `initdb`.
Тесты сами запускают базу данных в начале, и останавливают её в конце.
База данных работает от текущего пользователя во временной директории.
## Запуск postgres в docker
Даже если у вас linux (и уж тем более, если нет), вы можете не захотеть ставить postgres в систему.
Альтернативный способ — запустить бд в докере.
Для этого нужно установить docker и docker-compose по инструкции из [dockertest](../dockertest/README.md).
Добвиться успешного запуска
```
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)
```