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"` }