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:
2025-11-11 02:25:22 +05:00
parent 2dbf2c557e
commit ea9540dc73
6 changed files with 271 additions and 46 deletions
+48 -24
View File
@@ -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"`
}