PostRepository.php 1.52 KB
<?php

namespace FootyRoom\Repositories;

use FootyRoom\Core\Post\Post;
use FootyRoom\Support\AutoMapper;
use Illuminate\Database\Connection;

class PostRepository
{
    /**
     * @var \Illuminate\Database\Connection
     */
    protected $mysql;

    /**
     * Constructor.
     *
     * @param \Illuminate\Database\Connection $mysql
     */
    public function __construct(Connection $mysql)
    {
        $this->mysql = $mysql;
    }

    /**
     * Finds post by id.
     *
     * @param int $id
     *
     * @return \FootyRoom\Core\Post\Post
     */
    public function findById($id)
    {
        $postDto = $this->mysql

        ->table('wp_posts')
        ->select([
            'id',
            'post_title as title',
            'comment_status as discussionStatus',
            'post_status as status',
        ])
        ->where('ID', '=', $id)
        ->first();

        if (!$postDto) {
            return null;
        }

        return AutoMapper::map($postDto, Post::class);
    }

    /**
     * Increment posts comment count.
     *
     * @param int $postId
     */
    public function incrementCommentCount($postId)
    {
        $this->mysql

        ->table('wp_posts')
        ->where('ID', '=', $postId)
        ->increment('comment_count');
    }

    /**
     * Decrement posts comment count.
     *
     * @param int $postId
     */
    public function decrementCommentCount($postId)
    {
        $this->mysql

        ->table('wp_posts')
        ->where('ID', '=', $postId)
        ->decrement('comment_count');
    }
}