67 lines
1.9 KiB
Go

package domain
import (
"time"
)
// Пользователь
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Avatar string `json:"avatar"`
Email string `json:"email"`
EmailConfirmationToken string `json:"-"`
EmailConfirmedAt *time.Time `json:"emailConfirmedAt,omitempty"`
Password string `json:"-"` // Пароль не должен возвращаться в ответах
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// Пост в блоге
type Post struct {
ID int `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
AuthorID int `json:"authorId"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// Комментарий к посту
type Comment struct {
ID int `json:"id"`
Content string `json:"content"`
PostID int `json:"postId"`
AuthorID int `json:"authorId"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// Лайк к посту
type Like struct {
ID int `json:"id"`
PostID int `json:"postId"`
UserID int `json:"userId"`
CreatedAt time.Time `json:"createdAt"`
}
// Токены для аутентификации
type Tokens struct {
AccessToken string `json:"accessToken"`
RefreshToken string `json:"refreshToken"`
AccessTokenExpires time.Time `json:"accessTokenExpires"`
RefreshTokenExpires time.Time `json:"refreshTokenExpires"`
EmailConfirmed bool `json:"emailConfirmed"`
}
type RegisterInput struct {
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
}
type LoginInput struct {
Email string `json:"email"`
Password string `json:"password"`
}