new file: main_dc/yalarba/api_es/internal/models/authentication.go
new file: main_dc/yalarba/api_es/internal/models/filter.go new file: main_dc/yalarba/api_es/internal/models/object.go deleted: main_dc/yalarba/api_es/internal/models/rest_object.go new file: main_dc/yalarba/api_es/internal/models/review.go modified: main_dc/yalarba/api_es/internal/models/user.go add models into es system
This commit is contained in:
@@ -1,40 +1,64 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uint `json:"id" gorm:"primarykey"`
|
||||
ID uint `gorm:"primaryKey" json:"id"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
DeletedAt gorm.DeletedAt `json:"deleted_at,omitempty" gorm:"index"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||||
|
||||
Name string `json:"name" gorm:"size:100;not null"`
|
||||
FullName string `json:"full_name" gorm:"size:1000"`
|
||||
FirstName string `json:"first_name" gorm:"size:50"`
|
||||
LastName string `json:"last_nmae" gorm:"size:50"`
|
||||
Email string `json:"email" gorm:"size:255;uniqueIndex;not null"`
|
||||
Password string `json:"-" gorm:"size:255;not null"`
|
||||
// Основная информация
|
||||
Email string `gorm:"uniqueIndex;not null" json:"email"`
|
||||
PasswordHash string `gorm:"not null" json:"-"`
|
||||
FullName string `gorm:"not null" json:"full_name"`
|
||||
Phone string `json:"phone"`
|
||||
City string `json:"city"`
|
||||
|
||||
// Бизнес информация (для владельцев объектов)
|
||||
OrganizationForm string `json:"organization_form"` // ИП, ООО и т.д.
|
||||
OrganizationName string `json:"organization_name"`
|
||||
OrganizationShort string `json:"organization_short"`
|
||||
INN string `json:"inn"` // ИНН организации
|
||||
PersonalINN string `json:"personal_inn"` // Личный ИНН
|
||||
|
||||
// Статус
|
||||
IsActive bool `gorm:"default:true" json:"is_active"`
|
||||
IsVerified bool `gorm:"default:false" json:"is_verified"`
|
||||
Role string `gorm:"default:user" json:"role"` // user, admin, moderator
|
||||
|
||||
// Связи
|
||||
Objects []Object `gorm:"foreignKey:OwnerID" json:"-"`
|
||||
Reviews []Review `gorm:"foreignKey:AuthorID" json:"-"`
|
||||
}
|
||||
|
||||
type CreateUserRequest struct {
|
||||
Name string `json:"name" validate:"required,min=2,max=100"`
|
||||
Email string `json:"email" validate:"required,email"`
|
||||
Password string `json:"password" validate:"required,min=6"`
|
||||
}
|
||||
|
||||
type UpdateUserRequest struct {
|
||||
Name string `json:"name" validate:"omitempty,min=2,max=100"`
|
||||
Email string `json:"email" validate:"omitempty,email"`
|
||||
// UserStats представляет статистику пользователя
|
||||
type UserStats struct {
|
||||
UserID uint `gorm:"primaryKey" json:"user_id"`
|
||||
TotalObjects int `gorm:"default:0" json:"total_objects"`
|
||||
ActiveObjects int `gorm:"default:0" json:"active_objects"`
|
||||
ModerationObjects int `gorm:"default:0" json:"moderation_objects"`
|
||||
TotalReviews int `gorm:"default:0" json:"total_reviews"`
|
||||
}
|
||||
|
||||
// UserResponse - структура для ответа API (без чувствительных данных)
|
||||
type UserResponse struct {
|
||||
ID uint `json:"id"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
ID uint `json:"id"`
|
||||
Email string `json:"email"`
|
||||
FullName string `json:"full_name"`
|
||||
Phone string `json:"phone"`
|
||||
City string `json:"city"`
|
||||
OrganizationForm string `json:"organization_form"`
|
||||
OrganizationName string `json:"organization_name"`
|
||||
OrganizationShort string `json:"organization_short"`
|
||||
INN string `json:"inn"`
|
||||
PersonalINN string `json:"personal_inn"`
|
||||
IsActive bool `json:"is_active"`
|
||||
IsVerified bool `json:"is_verified"`
|
||||
Role string `json:"role"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
Stats UserStats `json:"stats,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user