madipo2611 a5a90bed7e v0.0.1
2025-04-28 15:14:02 +03:00

73 lines
1.9 KiB
Go

package domain
import (
"context"
"time"
)
// Пользователь
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
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"`
}
// Типы для аутентификации
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"`
}
type MutationResolver interface {
CreatePost(ctx context.Context, title string, content string) (*Post, error)
AddComment(ctx context.Context, postID int, content string) (*Comment, error)
}
type QueryResolver interface {
Posts(ctx context.Context) ([]*Post, error)
Post(ctx context.Context, id int) (*Post, error)
}