Created entities

This commit is contained in:
Alejandro Celaya 2016-04-17 10:46:35 +02:00
parent b20654ee2d
commit b436edb991
6 changed files with 323 additions and 12 deletions

View file

@ -18,7 +18,7 @@
"zendframework/zend-expressive-aurarouter": "^1.0",
"zendframework/zend-servicemanager": "^3.0",
"zendframework/zend-expressive-twigrenderer": "^1.0",
"acelaya/expressive-slim-router": "^2.0"
"doctrine/orm": "^2.5"
},
"require-dev": {
"phpunit/phpunit": "^4.8",

View file

@ -0,0 +1,15 @@
<?php
return [
'routes' => [
[
'name' => 'cli',
'path' => '/command-name',
'middleware' => function ($req, $resp) {
},
'allowed_methods' => ['CLI'],
],
],
];

View file

@ -7,20 +7,10 @@ return [
'name' => 'home',
'path' => '/',
'middleware' => function ($req, $resp) {
$resp->getBody()->write('Hello world');
return $resp;
},
'allowed_methods' => ['GET'],
],
[
'name' => 'cli',
'path' => '/command-name',
'middleware' => function ($req, $resp) {
$resp->getBody()->write('Hello world from cli');
return $resp;
},
'allowed_methods' => ['CLI'],
],
],
];

View file

@ -0,0 +1,33 @@
<?php
namespace Acelaya\UrlShortener\Entity;
use Doctrine\ORM\Mapping as ORM;
abstract class AbstractEntity
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\Column(name="id", type="bigint", options={"unsigned"=true})
*/
protected $id;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
* @return $this
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
}

118
src/Entity/ShortUrl.php Normal file
View file

@ -0,0 +1,118 @@
<?php
namespace Acelaya\UrlShortener\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class ShortUrl
* @author
* @link
*
* @ORM\Entity
* @ORM\Table(name="short_urls")
*/
class ShortUrl extends AbstractEntity
{
/**
* @var string
* @ORM\Column(name="original_url", type="string", nullable=false, length=1024, unique=true)
*/
protected $originalUrl;
/**
* @var string
* @ORM\Column(name="short_code", type="string", nullable=false, length=10, unique=true)
*/
protected $shortCode;
/**
* @var \DateTime
* @ORM\Column(name="date_created", )
*/
protected $dateCreated;
/**
* @var Collection|Visit[]
* @ORM\OneToMany(targetEntity=Visit::class, mappedBy="shortUrl", fetch="EXTRA_LAZY")
*/
protected $visits;
/**
* ShortUrl constructor.
*/
public function __construct()
{
$this->visits = new ArrayCollection();
}
/**
* @return string
*/
public function getOriginalUrl()
{
return $this->originalUrl;
}
/**
* @param string $originalUrl
* @return $this
*/
public function setOriginalUrl($originalUrl)
{
$this->originalUrl = $originalUrl;
return $this;
}
/**
* @return string
*/
public function getShortCode()
{
return $this->shortCode;
}
/**
* @param string $shortCode
* @return $this
*/
public function setShortCode($shortCode)
{
$this->shortCode = $shortCode;
return $this;
}
/**
* @return \DateTime
*/
public function getDateCreated()
{
return $this->dateCreated;
}
/**
* @param \DateTime $dateCreated
* @return $this
*/
public function setDateCreated($dateCreated)
{
$this->dateCreated = $dateCreated;
return $this;
}
/**
* @return Visit[]|Collection
*/
public function getVisits()
{
return $this->visits;
}
/**
* @param Visit[]|Collection $visits
* @return $this
*/
public function setVisits($visits)
{
$this->visits = $visits;
return $this;
}
}

155
src/Entity/Visit.php Normal file
View file

@ -0,0 +1,155 @@
<?php
namespace Acelaya\UrlShortener\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Class Visit
* @author
* @link
*
* @ORM\Entity
* @ORM\Table(name="visits")
*/
class Visit extends AbstractEntity
{
/**
* @var string
* @ORM\Column(type="string", length=256)
*/
protected $referer;
/**
* @var \DateTime
* @ORM\Column(type="datetime", nullable=false)
*/
protected $date;
/**
* @var string
* @ORM\Column(type="string", length=256)
*/
protected $country;
/**
* @var string
* @ORM\Column(type="string", length=256)
*/
protected $platform;
/**
* @var string
* @ORM\Column(type="string", length=256)
*/
protected $browser;
/**
* @var ShortUrl
* @ORM\ManyToOne(targetEntity=ShortUrl::class)
* @ORM\JoinColumn(name="short_url_id", referencedColumnName="id")
*/
protected $shortUrl;
/**
* @return string
*/
public function getReferer()
{
return $this->referer;
}
/**
* @param string $referer
* @return $this
*/
public function setReferer($referer)
{
$this->referer = $referer;
return $this;
}
/**
* @return \DateTime
*/
public function getDate()
{
return $this->date;
}
/**
* @param \DateTime $date
* @return $this
*/
public function setDate($date)
{
$this->date = $date;
return $this;
}
/**
* @return string
*/
public function getCountry()
{
return $this->country;
}
/**
* @param string $country
* @return $this
*/
public function setCountry($country)
{
$this->country = $country;
return $this;
}
/**
* @return string
*/
public function getPlatform()
{
return $this->platform;
}
/**
* @param string $platform
* @return $this
*/
public function setPlatform($platform)
{
$this->platform = $platform;
return $this;
}
/**
* @return string
*/
public function getBrowser()
{
return $this->browser;
}
/**
* @param string $browser
* @return $this
*/
public function setBrowser($browser)
{
$this->browser = $browser;
return $this;
}
/**
* @return ShortUrl
*/
public function getShortUrl()
{
return $this->shortUrl;
}
/**
* @param ShortUrl $shortUrl
* @return $this
*/
public function setShortUrl($shortUrl)
{
$this->shortUrl = $shortUrl;
return $this;
}
}