<?php

use GraphQL\Type\Definition\Type;
use GraphQL\Type\Definition\ObjectType;

$blogPostFields = new ObjectType([
    "name" => "Blog",
    "fields" => [
        "title" => Type::string(),
        "content" => Type::string(),
        "date" => Type::string(),
        "id" => Type::string()
    ],
]);

function blogPost($id, $conn)
{
    $id = $conn->real_escape_string($id);
    $result = $conn->query("SELECT * FROM posts WHERE id=$id");
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
    } else {
        return [
            "title" => "Nicht Gefunden",
            "content" => "Post wurde nicht gefunden",
            "date" => "2000-01-01 00:00:00",
            "id" => "-1"
        ];
    }

    return [
        "title" => $row["title"],
        "content" => $row["content"],
        "date" => $row["date"],
        "id" => $row["id"],
    ];
}

function blogPosts($count, $contentLength, $conn)
{
    $response = [];
    $count = $conn->real_escape_string($count);
    $result = $conn->query("SELECT * FROM posts order by id desc limit $count");
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $content = $row["content"];
            if($contentLength != null && strlen($content) > $contentLength) {
                $contentNew = substr($content, 0, $contentLength);
                $contentRest = substr($content, $contentLength);

                $content = $contentNew . explode(" ", $contentRest)[0] . " ...";

            }
            $blogElement = [
                "title" => $row["title"],
                "content" => $content,
                "date" => $row["date"],
                "id" => $row["id"],
            ];
    
            array_push($response, $blogElement);
        }
    }
    
    return $response;
}
