package domain import ( "time" ) type UserModel struct { ID int64 TelegramID int64 Username *string FirstName *string LastName *string LanguageCode *string CreatedAt time.Time UpdatedAt time.Time } type CreateUserRequest struct { TelegramID int64 `json:"telegram_id" validate:"required"` Username *string `json:"username"` FirstName *string `json:"first_name" validate:"required"` LastName *string `json:"last_name"` LanguageCode *string `json:"language_code"` } type UpdateUserRequest struct { Username *string `json:"username"` FirstName *string `json:"first_name"` LastName *string `json:"last_name"` LanguageCode *string `json:"language_code"` } type UserResponse struct { ID int64 `json:"id"` TelegramID int64 `json:"telegram_id"` Username *string `json:"username"` FirstName *string `json:"first_name"` LastName *string `json:"last_name"` LanguageCode *string `json:"language_code"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } type UserErrorResponse struct { Error string `json:"error"` } func (response *UserResponse) ModelToResponse(u *UserModel) UserResponse { return UserResponse{ ID: u.ID, TelegramID: u.TelegramID, Username: u.Username, FirstName: u.FirstName, LastName: u.LastName, LanguageCode: u.LanguageCode, CreatedAt: u.CreatedAt.Format(time.RFC3339), UpdatedAt: u.UpdatedAt.Format(time.RFC3339), } }