Untitled
Текущая задача - сделать регистрацию.
Схема БД юзеров уже есть и она такая:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
login TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
то есть, дополнительно ничего делать по схеме БД не нужно, а на остальные таблицы пока не обращать внимание.
Учесть:
- что при вставке юзера в БД id указывать не нужно (он выставится в БД)
- created_at и updated_at БД тоже сама проставит (передавать в запрос не нужно)
- в password_hash пока выставлять обычный пароль без хэширования/шифрования
- в запросе на втсавку нужно сразу возвращать id и login через returning
- если пользователь с такм логином уже есть, то возвращаем ошибку ErrUserAlreadyExists
тесты - опционально (делаем в самую последнюю очередь) токенов пока никаких не будет
интерфесы и модели прикладываю. нужно реализовать интерфейсы
type User struct {
id int
login string
}
type UserToSave struct {
login string
password_hash string
}
type UserRepository interface {
Save(user UserToSave) (*User, error)
}
type UserToRegister struct {
login string
password string
}
type Service interface {
Register(user UserToRegister) (*User, error)
}
var ErrUserAlreadyExists = errors.New("user already exists")
Leave a Comment