Untitled

 avatar
unknown
markdown
a year ago
2.0 kB
4
Indexable

Текущая задача - сделать регистрацию.

Схема БД юзеров уже есть и она такая:

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