remove isDeleted flag

This commit is contained in:
Nicolas Lœuillet 2015-02-20 15:36:25 +01:00
parent aa4d6562c1
commit 1d14779154
6 changed files with 23 additions and 62 deletions

View file

@ -192,8 +192,9 @@ class EntryController extends Controller
{ {
$this->checkUserAction($entry); $this->checkUserAction($entry);
$entry->setDeleted(1); $em = $this->getDoctrine()->getManager();
$this->getDoctrine()->getManager()->flush(); $em->remove($entry);
$em->flush();
$this->get('session')->getFlashBag()->add( $this->get('session')->getFlashBag()->add(
'notice', 'notice',

View file

@ -43,7 +43,6 @@ class WallabagRestController extends Controller
* parameters={ * parameters={
* {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by archived status."}, * {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by archived status."},
* {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by starred status."}, * {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false, all entries by default", "description"="filter by starred status."},
* {"name"="delete", "dataType"="boolean", "required"=false, "format"="true or false, default '0'", "description"="filter by deleted status."},
* {"name"="sort", "dataType"="string", "required"=false, "format"="'created' or 'updated', default 'created'", "description"="sort entries by date."}, * {"name"="sort", "dataType"="string", "required"=false, "format"="'created' or 'updated', default 'created'", "description"="sort entries by date."},
* {"name"="order", "dataType"="string", "required"=false, "format"="'asc' or 'desc', default 'desc'", "description"="order of sort."}, * {"name"="order", "dataType"="string", "required"=false, "format"="'asc' or 'desc', default 'desc'", "description"="order of sort."},
* {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."}, * {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."},
@ -57,7 +56,6 @@ class WallabagRestController extends Controller
{ {
$isArchived = $request->query->get('archive'); $isArchived = $request->query->get('archive');
$isStarred = $request->query->get('star'); $isStarred = $request->query->get('star');
$isDeleted = $request->query->get('delete', 0);
$sort = $request->query->get('sort', 'created'); $sort = $request->query->get('sort', 'created');
$order = $request->query->get('order', 'desc'); $order = $request->query->get('order', 'desc');
$page = $request->query->get('page', 1); $page = $request->query->get('page', 1);
@ -67,7 +65,7 @@ class WallabagRestController extends Controller
$entries = $this $entries = $this
->getDoctrine() ->getDoctrine()
->getRepository('WallabagCoreBundle:Entry') ->getRepository('WallabagCoreBundle:Entry')
->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $isDeleted, $sort, $order); ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order);
if (!($entries)) { if (!($entries)) {
throw $this->createNotFoundException(); throw $this->createNotFoundException();
@ -138,8 +136,7 @@ class WallabagRestController extends Controller
* {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."}, * {"name"="tags", "dataType"="string", "required"=false, "format"="tag1,tag2,tag3", "description"="a comma-separated list of tags."},
* {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false", "description"="archived the entry."}, * {"name"="archive", "dataType"="boolean", "required"=false, "format"="true or false", "description"="archived the entry."},
* {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false", "description"="starred the entry."}, * {"name"="star", "dataType"="boolean", "required"=false, "format"="true or false", "description"="starred the entry."},
* {"name"="delete", "dataType"="boolean", "required"=false, "format"="true or false", "description"="flag as deleted. Default false. In case that you don't want to *really* remove it.."}, * }
* }
* ) * )
* @return Entry * @return Entry
*/ */
@ -148,7 +145,6 @@ class WallabagRestController extends Controller
$title = $request->request->get("title"); $title = $request->request->get("title");
$tags = $request->request->get("tags", array()); $tags = $request->request->get("tags", array());
$isArchived = $request->request->get("archive"); $isArchived = $request->request->get("archive");
$isDeleted = $request->request->get("delete");
$isStarred = $request->request->get("star"); $isStarred = $request->request->get("star");
if (!is_null($title)) { if (!is_null($title)) {
@ -159,10 +155,6 @@ class WallabagRestController extends Controller
$entry->setArchived($isArchived); $entry->setArchived($isArchived);
} }
if (!is_null($isDeleted)) {
$entry->setDeleted($isDeleted);
}
if (!is_null($isStarred)) { if (!is_null($isStarred)) {
$entry->setStarred($isStarred); $entry->setStarred($isStarred);
} }
@ -185,15 +177,13 @@ class WallabagRestController extends Controller
*/ */
public function deleteEntriesAction(Entry $entry) public function deleteEntriesAction(Entry $entry)
{ {
if ($entry->isDeleted()) {
throw new NotFoundHttpException('This entry is already deleted');
}
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$entry->setDeleted(1); $em->remove($entry);
$em->flush(); $em->flush();
return $entry; $json = $this->get('serializer')->serialize($entry, 'json');
return new Response($json, 200, array('application/json'));
} }
/** /**

View file

@ -57,13 +57,6 @@ class Entry
*/ */
private $isStarred = false; private $isStarred = false;
/**
* @var boolean
*
* @ORM\Column(name="is_deleted", type="boolean")
*/
private $isDeleted = false;
/** /**
* @var string * @var string
* *
@ -280,22 +273,6 @@ class Entry
return $this->user; return $this->user;
} }
/**
* @return string
*/
public function isDeleted()
{
return $this->isDeleted;
}
/**
* @param string $isDeleted
*/
public function setDeleted($isDeleted)
{
$this->isDeleted = $isDeleted;
}
/** /**
* @return string * @return string
*/ */

View file

@ -24,7 +24,6 @@ class EntryRepository extends EntityRepository
->leftJoin('e.user', 'u') ->leftJoin('e.user', 'u')
->where('e.isArchived = false') ->where('e.isArchived = false')
->andWhere('u.id =:userId')->setParameter('userId', $userId) ->andWhere('u.id =:userId')->setParameter('userId', $userId)
->andWhere('e.isDeleted=false')
->orderBy('e.createdAt', 'desc') ->orderBy('e.createdAt', 'desc')
->getQuery(); ->getQuery();
@ -51,7 +50,6 @@ class EntryRepository extends EntityRepository
->leftJoin('e.user', 'u') ->leftJoin('e.user', 'u')
->where('e.isArchived = true') ->where('e.isArchived = true')
->andWhere('u.id =:userId')->setParameter('userId', $userId) ->andWhere('u.id =:userId')->setParameter('userId', $userId)
->andWhere('e.isDeleted=false')
->orderBy('e.createdAt', 'desc') ->orderBy('e.createdAt', 'desc')
->getQuery(); ->getQuery();
@ -78,7 +76,6 @@ class EntryRepository extends EntityRepository
->leftJoin('e.user', 'u') ->leftJoin('e.user', 'u')
->where('e.isStarred = true') ->where('e.isStarred = true')
->andWhere('u.id =:userId')->setParameter('userId', $userId) ->andWhere('u.id =:userId')->setParameter('userId', $userId)
->andWhere('e.isDeleted = false')
->orderBy('e.createdAt', 'desc') ->orderBy('e.createdAt', 'desc')
->getQuery(); ->getQuery();
@ -93,13 +90,12 @@ class EntryRepository extends EntityRepository
* @param int $userId * @param int $userId
* @param bool $isArchived * @param bool $isArchived
* @param bool $isStarred * @param bool $isStarred
* @param bool $isDeleted
* @param string $sort * @param string $sort
* @param string $order * @param string $order
* *
* @return array * @return array
*/ */
public function findEntries($userId, $isArchived = null, $isStarred = null, $isDeleted = null, $sort = 'created', $order = 'ASC') public function findEntries($userId, $isArchived = null, $isStarred = null, $sort = 'created', $order = 'ASC')
{ {
$qb = $this->createQueryBuilder('e') $qb = $this->createQueryBuilder('e')
->where('e.user =:userId')->setParameter('userId', $userId); ->where('e.user =:userId')->setParameter('userId', $userId);
@ -112,10 +108,6 @@ class EntryRepository extends EntityRepository
$qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred);
} }
if (null !== $isDeleted) {
$qb->andWhere('e.isDeleted =:isDeleted')->setParameter('isDeleted', (bool) $isDeleted);
}
if ('created' === $sort) { if ('created' === $sort) {
$qb->orderBy('e.createdAt', $order); $qb->orderBy('e.createdAt', $order);
} elseif ('updated' === $sort) { } elseif ('updated' === $sort) {

View file

@ -161,18 +161,15 @@ class EntryControllerTest extends WallabagTestCase
$content = $client->getContainer() $content = $client->getContainer()
->get('doctrine.orm.entity_manager') ->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry') ->getRepository('WallabagCoreBundle:Entry')
->findOneByIsDeleted(false); ->findOneById(1);
$client->request('GET', '/delete/'.$content->getId()); $client->request('GET', '/delete/'.$content->getId());
$this->assertEquals(302, $client->getResponse()->getStatusCode()); $this->assertEquals(302, $client->getResponse()->getStatusCode());
$res = $client->getContainer() $client->request('GET', '/delete/'.$content->getId());
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findOneById($content->getId());
$this->assertEquals($res->isDeleted(), true); $this->assertEquals(404, $client->getResponse()->getStatusCode());
} }
public function testViewOtherUserEntry() public function testViewOtherUserEntry()

View file

@ -130,7 +130,7 @@ class WallabagRestControllerTest extends WallabagTestCase
$entry = $client->getContainer() $entry = $client->getContainer()
->get('doctrine.orm.entity_manager') ->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry') ->getRepository('WallabagCoreBundle:Entry')
->findOneByIsDeleted(false); ->findOneByUser(1);
if (!$entry) { if (!$entry) {
$this->markTestSkipped('No content found in db.'); $this->markTestSkipped('No content found in db.');
@ -140,10 +140,14 @@ class WallabagRestControllerTest extends WallabagTestCase
$this->assertEquals(200, $client->getResponse()->getStatusCode()); $this->assertEquals(200, $client->getResponse()->getStatusCode());
$res = $client->getContainer() // We'll try to delete this entry again
->get('doctrine.orm.entity_manager') $client->request('GET', '/api/salts/admin.json');
->getRepository('WallabagCoreBundle:Entry') $salt = json_decode($client->getResponse()->getContent());
->findOneById($entry->getId());
$this->assertEquals($res->isDeleted(), true); $headers = $this->generateHeaders('admin', 'test', $salt[0]);
$client->request('DELETE', '/api/entries/'.$entry->getId().'.json', array(), array(), $headers);
$this->assertEquals(404, $client->getResponse()->getStatusCode());
} }
} }