Skip to content

c1tad3l/backend-wedo

Repository files navigation

backend-wedo

Пакеты для изучения:

github.com/gin-gonic/gin

https://gorm.io/index.html github.com/spf13/viper

чтобы запустить сервер

go run cmd/main.go

Чтобы выполнить миграцию

go run migration/migration.go

Запросы

POST

/auth/sing-up

Запрос для регистрации пользователей

Typescript request

type  userParams={
    name:   string
	last_name:   string
	surname:    string
	phone:  string
	email:  string
	email_verification:  boolean
	passport_date:   string
	passport_series: string
	passport_number: string
	passport_by: string
	certificate_number:  string
	certificate_date:    string
	certificate_school_name:  string
	average_point:   number
	is_general_education: boolean
	is_citizenship: boolean
	role: string
    // secretary - секретарь
    // entree - абитуриент
    // student - студент
    user_parents: UserParents[]
    user_estimates: UserEstimates[]
}

GO model

type User struct {
	Id                    uuid.UUID       `gorm:"PrimaryKey" json:"id"`
	Name                  string          `json:"name"`
	Password              string          `json:"password"`
	LastName              string          `json:"last_name"`
	Surname               string          `json:"surname"`
	Phone                 string          `json:"phone"`
	Email                 string          `json:"email"`
	EmailVerification     bool            `json:"email_verification"`
	PassportDate          string          `json:"passport_date"`
	PassportSeries        string          `json:"passport_series"`
	PassportNumber        string          `json:"passport_number"`
	PassportBy            string          `json:"passport_by"`
	CertificateNumber     string          `json:"certificate_number"`
	CertificateDate       string          `json:"certificate_date"`
	CertificateSchoolName string          `json:"certificate_school_name"`
	IsGeneralEducation    bool            `json:"is_general_education"`
	IsCitizenship         bool            `json:"is_citizenship"`
	Role                  string          `json:"role"` 
	// secretary - секретарь
	// entree - абитуриент
	// student - студент
	AveragePoint          float64         `json:"average_point,omitempty"`
	UserParents           []UserParents   `gorm:"many2many:user_user_parents;" json:"user_parents,omitempty"`
	UserEstimates         []UserEstimates `gorm:"many2many:user_user_estimates;" json:"user_estimates,omitempty"`
}

Typescipt request

type estmsParams={
    estmt_name :string
    grade:  string
}

GO model

type UserEstimates struct {
	Id     uuid.UUID `gorm:"PrimaryKey" json:"id"`
	Name   string    `json:"name"`
	Grade  string    `json:"grade"`
	UserId uuid.UUID `gorm:"foreignKey:Id" json:"user_id"`
}

Typescipt request

type parentsParams={
    name :string
    last_name: string
    surname: string
    phone: string
}

GO model

type UserParents struct {
	Id       uuid.UUID `gorm:"PrimaryKey" json:"id"`
	Name     string    `json:"name"`
	LastName string    `json:"last_name"`
	Surname  string    `json:"surname"`
	Phone string `json:"phone"`
	UserId   uuid.UUID `gorm:"foreignKey:Id" json:"user_id"`
}

Варианты ответов:

200

type response = {
    error: false,
    token: tokenString,
}

POST

/auth/sign-in

Запрос для авторизации пользователя

Typescript request

type params={
    email:  string
    password:   string
}

GO model

var UserPassword struct{
	Email                 string    `json:"email"`
	Password              string    `json:"password"`
}

Варианты ответов:

200

type response = {
    error: false,
    token: tokenString,
    userId: userId
}

400

Пароль не совпал с паролем в базе данных

type response = {
    error: true,
    result: "Не правильно введен Пароль",
}

400

Поле email или поле password оказались пустыми

type response = {
    error:  true,
    result: "Не введен email или пароль",
}

404

Не удалось найти email в базе данных

type response = {
    error: true,
    result: "Не правильно введен email",
}

500

По каким то причинам сервер не смог сгенирировать токен защиты

type response = {
    "error": true,
    "result": "не получилось создать токен",
}

POST

/auth/reset-password

Typescript request

type params = {
    email:string
    password: string
}

GO model

var UserPassword struct {
	Email    string `json:"email"`
	Password string `json:"password"`
}

Варианты ответов:

200

type response = {
    "error":  false,
    "result": "Пароль успешно изменён",
}

400

Email не совпал с почтой из базы данных

type response = {
    "error":  true,
    "result": "Email не совпал с почтой из базы",
}

400

Пароль не совпал с паролем из базы данных

type response = {
    "error":  true,
    "result": "error",
}

400

Email не прошел валидацию

type response = {
    "error":  true,
    "result": "Неверно указана почта",
}

400

Поле email оказалось пустым

type response = {
    "error":  true,
    "result": "Укажите email пользователя",
}

POST

/auth/verification

Запрос для подтверждения почты

Typescript request

type params = {
    email: string,
    code: string
}

GO model

var Verification struct {
	Email string
	Code  string
}

Варианты ответов:

200

type response = {
    error:  false,
    result: true,
}

400

Email не был отправлен вообще, или же оказалось пустым

type response = {
    error:  true,
    result: "Укажите email пользователя",
}

400

Почта не прошла валидацию

type response = {
    error:  true,
    result: "Неверно указана почта",
}

404

Почта или код не существует в базе данных ( можно доработать и сделать проверку чего конкретно нет )

type response = {
    error:  true,
    result: "Не правильно введен email или проверочный код",
}

POST

/auth/sendCode

Запрос для отправки на почту код подтверждения

Typescript request

type params = {
    email: string
}

GO model

var EmailType struct {
Email string `json:"email"`
}

Варианты ответов:

200

type response = {
error: false
}

400

Email не был отправлен вообще, или же оказалось пустым

type response = {
    error:  true,
    result: "Укажите email пользователя",
}

400

Почта не прошла валидацию

type response = {
    error:  true,
    result: "Неверно указана почта",
}

500

По какой то причине произошла ошибки при отправке, тяжело сделать обработчик возможно поможет отправить снова, в будущем может что то придумаем если такое случится

type response = {
    error:  true,
    result: "Произошла какая то непредвиденная ошибка",
}

Запросы для абитуриентов

Get

/entree/

Вытягивание всех абитуриентов

Варианты ответов:

200

type response = {
    "error": false,
    "user": user,
}

PUT

entree/update-esmts/:id

Обновление данных об аттестате

type params={ 
    esmtName:string,
    grade:string
}

Варианты ответов:

200

type response = {
    "error": false,
    "estms": estimates,
}

404

Запись не найдена

type response = {
    "error":  true,
    "result": "Нет такой записи",
}

400

Один или несколько ключей не прошли валидацию

type response = {
	"error":  true,
	"result": err,
}

PUT

entree/update-parents/:id

Обновление данных о родителях

type params={
    parents_name:     string,
    parentsLast_name: string,
    parents_surname:  string,
}

Варианты ответов:

200

type response = {
    "error":   false,
    "result":  "Данные успешно изменены",
    "parents": parents,
}

404

Запись не найдена

type response = {
    "error":  true,
    "result": "такой пользователь не найден",
}

400

Один или несколько ключей не прошли валидацию

type response = {
	"error":  true,
	"result": err,
}

PUT

entree/update-passport/:id

Обновление данных о родителях

type params={
    parents_name:     string,
    parentsLast_name: string,
    parents_surname:  string,
}

Варианты ответов:

200

type response = {
    "error":   false,
    "result":  "Данные успешно изменены",
    "parents": parents,
}

404

Запись не найдена

type response = {
    "error":  true,
    "result": "такой пользователь не найден",
}

400

Один или несколько ключей не прошли валидацию

type response = {
    "error":  false,
    "result": "Данные успешно изменены",
    "user":   userpass,
}

GET

users/all-by/:role

Получение пользователей по роле

Варианты ответов:

200

type response = {
    "error": false,
    "users": usersRoleList,
}

404

пользователей с такой ролью не существует

type response = {
    "error":  true,
    "result": "пользователей с такой ролью не существует",
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages