package repositories import ( "context" "database/sql" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/logger" "gitea.d3m0k1d.ru/d3m0k1d/d3m0k1d.ru/backend/internal/storage" ) type postRepository struct { db *sql.DB logger *logger.Logger } func NewPostRepository(db *sql.DB) PostRepository { return &postRepository{ db: db, logger: logger.New(false), } } func (p *postRepository) GetAll(ctx context.Context) ([]storage.PostReq, error) { var result []storage.PostReq rows, err := p.db.Query("SELECT title content FROM posts") if err != nil { p.logger.Error(err.Error()) return nil, err } for rows.Next() { var title string var content string err := rows.Scan(&title, &content) if err != nil { p.logger.Error("error scan: " + err.Error()) } result = append(result, storage.PostReq{ Title: title, Content: content, }) } return result, nil } func (p *postRepository) GetByID(ctx context.Context, id int) (storage.PostReq, error) { var result storage.PostReq row := p.db.QueryRow("SELECT title content FROM posts WHERE id = ?", id) var title string var content string err := row.Scan(&title, &content) if err != nil { p.logger.Error("error scan: " + err.Error()) } result = storage.PostReq{ Title: title, Content: content, } return result, nil } func (p *postRepository) Create(ctx context.Context, post storage.Post) error { query, err := p.db.Exec( "INSERT INTO posts(title, content) VALUES(?, ?)", post.Title, post.Content, ) if err != nil { return err } id, err := query.LastInsertId() if err != nil { return err } p.logger.Info("Post created:", "id", id) return nil } func (p *postRepository) Update(ctx context.Context, id int, post storage.Post) error { return nil } func (p *postRepository) Delete(ctx context.Context, id int) error { return nil }