models

package
v0.0.0-...-533293a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2021 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

This section is empty.

Types

type AuthResponse

type AuthResponse struct {
	AccessToken *Token `json:"accessToken"`
	User        *User  `json:"user"`
}

Результат проверки Access Token и пользователь, для которого он был создан.

type Car

type Car struct {
	// Уникальный идентификатор.
	ID string `json:"id" gorm:"type:uuid;size:255;uniqueIndex;not null;default:gen_random_uuid()"`
	// Автомобиль.
	Brand string `json:"brand" gorm:"size:255;not null;"`
	// Гос. номер автомобиля.
	Number string `json:"number" gorm:"size:15;"`
	// Вид топлива.
	Fuel string `json:"fuel" gorm:"size:15;"`
	// Пробег.
	Mileage float64 `json:"mileage" gorm:"type:integer;not null;"`
	// Норма расхода.
	FuelConsumption float64 `json:"fuelConsumption;not null;"`
	// Остаток топлива.
	FuelRemaining float64 `json:"fuelRemaining;not null;"`
	// Дата создания машины.
	CreatedAt time.Time `json:"createdAt"`
	// Дата последнего обновления данных машины.
	UpdatedAt time.Time `json:"updatedAt"`
	// Soft-delete, дата удаления из БД.
	DeletedAt gorm.DeletedAt
}

Машина.

type Driver

type Driver struct {
	// Уникальный идентификатор
	ID string `json:"id" gorm:"type:uuid;primaryKey;size:255;uniqueIndex;not null;default:gen_random_uuid()"`
	// Имя водителя.
	FirstName string `json:"firstName" gorm:"size:255;not null"`
	// Фамилия водителя.
	SecondName string `json:"secondName" gorm:"size:255;not null"`
	// Отчество водителя.
	Patronymic *string `json:"patronymic" gorm:"size:255;"`
	// Есть ли сейчас открытый путевой лист или нет.
	IsActive bool `json:"isActive" gorm:"not null;default:false"`
	// Дата создания водителя.
	CreatedAt time.Time `json:"createdAt"`
	// Дата последнего обновления данных водителя.
	UpdatedAt time.Time `json:"updatedAt"`
	// Soft-delete, дата удаления из БД.
	DeletedAt gorm.DeletedAt
}

Водитель.

type EditUser

type EditUser struct {
	// Почта пользователя.
	Email *string `json:"email"`
	// Роль пользователя.
	Role *Role `json:"role"`
}

type EditWaybill

type EditWaybill struct {
	// Идентификатор пользователя.
	UserID *string `json:"userID"`
	// Идентификатор водителя.
	DriverID *string `json:"driverID"`
	// Идентификатор машины.
	CarID *string `json:"carID"`
	// Дата и время создания путевого листа.
	DateStart *time.Time `json:"dateStart"`
	// Дата и время закрытия путевого листа.
	DateEnd *time.Time `json:"dateEnd"`
	// Показания спидометра при выезде.
	MileageStart *float64 `json:"mileageStart"`
	// Показания спидометра при заезде.
	MileageEnd *float64 `json:"mileageEnd"`
	// Заправлено топлива.
	FuelFill *float64 `json:"fuelFill"`
	// Расход топлива по факту
	FuelConsumptionFact *float64 `json:"fuelConsumptionFact"`
	// Остаток топлива при выезде.
	FuelRemainingStart *float64 `json:"fuelRemainingStart"`
	// Остаток топлива при заезде.
	FuelRemainingEnd *float64 `json:"fuelRemainingEnd"`
	// Возможность редактировать путевой лист.
	IsActive *bool `json:"isActive"`
}

Редактирование путевого листа. Только для механика.

type Login

type Login struct {
	// Почта пользователя.
	Email string `json:"email"`
	// Пароль пользователя.
	Password string `json:"password"`
	// TOTP пароль
	Totp string `json:"totp"`
}

Вход в сервис обработки путевых листов.

type NewCar

type NewCar struct {
	// Название машины (бренд и модель).
	Brand string `json:"brand"`
	// Гос. номер машины.
	Number string `json:"number"`
	// Тип топлива для заправки.
	Fuel string `json:"fuel"`
	// Текущий пробег машины.
	Mileage float64 `json:"mileage"`
	// Текущий остаток топлива.
	FuelRemaining float64 `json:"fuelRemaining"`
	// Норма расхода топлива.
	FuelConsumption float64 `json:"fuelConsumption"`
}

Создать новую машину.

type NewDriver

type NewDriver struct {
	// Имя водителя.
	FirstName string `json:"firstName"`
	// Фамилия водителя.
	SecondName string `json:"secondName"`
	// Отчество водителя.
	Patronymic *string `json:"patronymic"`
}

Создание нового водителя.

type NewUser

type NewUser struct {
	// Почта пользователя. Почта не должна повторяться.
	Email string `json:"email"`
	// Роль пользователя в сервисе.
	Role *Role `json:"role"`
}

Создание нового пользователя. Только администратор

type NewWaybill

type NewWaybill struct {
	// Идентификатор водителя.
	DriverID string `json:"driverID"`
	// Идентификатор машины.
	CarID string `json:"carID"`
	// Остаток топлива при выезде.
	FuelRemaining float64 `json:"fuelRemaining"`
	// Дата и время создания путевого листа.
	DateStart *time.Time `json:"dateStart"`
}

Создание нового путевого листа.

type PeriodFilter

type PeriodFilter struct {
	Start time.Time  `json:"start"`
	End   *time.Time `json:"end"`
}

type RefreshToken

type RefreshToken struct {
	Response string `json:"response"`
}

Refresh Token для получения нового Access Token и Refresh Token.

type Role

type Role string

Роли сервиса.

const (
	RoleAdmin    Role = "ADMIN"
	RoleMechanic Role = "MECHANIC"
	RoleDriver   Role = "DRIVER"
)

func (Role) IsValid

func (e Role) IsValid() bool

func (Role) MarshalGQL

func (e Role) MarshalGQL(w io.Writer)

func (Role) String

func (e Role) String() string

func (*Role) UnmarshalGQL

func (e *Role) UnmarshalGQL(v interface{}) error

type TableFilter

type TableFilter struct {
	Period   *PeriodFilter `json:"period"`
	Cars     []string      `json:"cars"`
	FuelType string        `json:"fuelType"`
}

type Token

type Token struct {
	AccessToken      string `json:"accessToken"`
	AccessExpiredAt  string `json:"accessExpiredAt"`
	RefreshToken     string `json:"refreshToken"`
	RefreshExpiredAt string `json:"refreshExpiredAt"`
}

Сгенерированный сервером Access Token и Refresh Token для обновления.

type UpdateCar

type UpdateCar struct {
	// Название машины (бренд и модель).
	Brand *string `json:"brand"`
	// Гос. номер машины.
	Number *string `json:"number"`
	// Топливо для заправки.
	Fuel *string `json:"fuel"`
	// Текущий пробега машины.
	Mileage *float64 `json:"mileage"`
	// Текущий остаток топлива.
	FuelRemaining *float64 `json:"fuelRemaining"`
	// Норма расхода топлива.
	FuelConsumption *float64 `json:"fuelConsumption"`
}

Обновление данных машины.

type UpdateDriver

type UpdateDriver struct {
	// Имя водителя.
	FirstName *string `json:"firstName"`
	// Фамилия водителя.
	SecondName *string `json:"secondName"`
	// Отчество водителя.
	Patronymic *string `json:"patronymic"`
	// Есть открытый путевой лист или нет.
	IsActive *bool `json:"isActive"`
}

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

type UpdateUser

type UpdateUser struct {
	// Почта пользователя.
	Email *string `json:"email"`
	// Пароль пользователя. Должен быть не менее 10 символов.
	Password *string `json:"password"`
}

Обновление данных пользователя.

type UpdateWaybill

type UpdateWaybill struct {
	// Заправлено топлива.
	FuelFill float64 `json:"fuelFill"`
	// Показания спидометра при заезде.
	MileageEnd float64 `json:"mileageEnd"`
	// Расход топлива по факту
	FuelConsumptionFact float64 `json:"fuelConsumptionFact"`
	// Дата и время закрытия путевого листа.
	DateEnd *time.Time `json:"dateEnd"`
}

Обновление существующего путевого листа водителем.

type User

type User struct {
	// Идентификатор пользователя.
	ID string `json:"id" gorm:"type:uuid;size:255;uniqueIndex;not null;default:gen_random_uuid()"`
	// Почта пользователя.
	Email string `json:"email" gorm:"size:255;uniqueIndex;not null"`
	// Пароль
	Password string `json:"-" gorm:"size:255;not null"`
	// JWT Refresh Token
	RefreshToken string `json:"-" gorm:"size:255;not null"`
	// 2fa secret
	Secret string `json:"-" gorm:"size:255;not null"`
	// Роль в сервисе.
	Role Role `json:"role" gorm:"size:20;not null"`
	// Дата создания пользователя.
	CreatedAt time.Time `json:"createdAt"`
	// Дата последнего обновления данных пользователя.
	UpdatedAt time.Time `json:"updatedAt"`
	// Soft-delete, дата удаления из БД.
	DeletedAt gorm.DeletedAt
}

Пользователь.

func (*User) CompareUserPassword

func (u *User) CompareUserPassword(password string) error

func (*User) GenerateTokenPair

func (u *User) GenerateTokenPair() (map[string]string, error)

func (*User) HashPassword

func (u *User) HashPassword(password string) error

type Waybill

type Waybill struct {
	// Идентификатор путевого листа.
	ID string `json:"id" gorm:"type:uuid;primaryKey;size:255;uniqueIndex;not null;default:gen_random_uuid()"`
	// Идентификатор пользователя.
	UserID string `json:"userID" gorm:"type:uuid;primaryKey;size:255;not null;"`
	// Идентификатор водителя.
	DriverID string `json:"driverID" gorm:"type:uuid;primaryKey;size:255;not null;"`
	// Идентификатор машины.
	CarID string `json:"carID" gorm:"type:uuid;primaryKey;size:255;not null;"`
	// Дата и время создания путевого листа.
	DateStart time.Time `json:"dateStart" gorm:"not null;"`
	// Дата и время закрытия путевого листа.
	DateEnd time.Time `json:"dateEnd"`
	// Показания спидометра при выезде.
	MileageStart float64 `json:"mileageStart" gorm:"type:integer;not null;"`
	// Показания спидометра при заезде.
	MileageEnd *float64 `json:"mileageEnd" gorm:"type:integer;"`
	// Заправлено топлива.
	FuelFill *float64 `json:"fuelFill"`
	// Расход топлива по факту
	FuelConsumptionFact float64 `json:"fuelConsumptionFact"`
	// Остаток топлива при выезде.
	FuelRemainingStart float64 `json:"fuelRemainingStart"`
	// Остаток топлива при заезде.
	FuelRemainingEnd *float64 `json:"fuelRemainingEnd"`
	// Возможность редактировать путевой лист.
	IsActive bool `json:"isActive" gorm:"not null;default:false"`
	// Водитель, к которому относится путевой лист.
	Driver *Driver `json:"driver"`
	// Пользователь, создавший путевой лист.
	User *User `json:"user"`
	// Машина.
	Car *Car `json:"car"`
	// Дата создания путевого листа.
	CreatedAt time.Time `json:"createdAt"`
	// Дата последнего обновления данных в путевом листе.
	UpdatedAt time.Time `json:"updatedAt"`
	// Soft-delete, дата удаления из БД.
	DeletedAt gorm.DeletedAt
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL