cards soft delete wip
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info> cards: softdelete done; undo delete wip Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info> show deleted cards in board settings sidebar wip Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info> CardMapper#findDeleted: fix bug in entity property assigning Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
This commit is contained in:
committed by
Julius Härtl
parent
3e4dedf397
commit
2ef4b55af4
@@ -104,6 +104,15 @@ class CardController extends Controller {
|
||||
return $this->cardService->delete($cardId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @param $boardId
|
||||
* @return \OCP\AppFramework\Db\Entity
|
||||
*/
|
||||
public function deleted($boardId) {
|
||||
return $this->cardService->fetchDeleted($boardId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @param $cardId
|
||||
|
||||
@@ -42,6 +42,7 @@ class Card extends RelationalEntity {
|
||||
protected $archived = false;
|
||||
protected $duedate;
|
||||
protected $notified = false;
|
||||
protected $deletedAt;
|
||||
|
||||
private $databaseType = 'sqlite';
|
||||
|
||||
@@ -58,6 +59,7 @@ class Card extends RelationalEntity {
|
||||
$this->addType('createdAt', 'integer');
|
||||
$this->addType('archived', 'boolean');
|
||||
$this->addType('notified', 'boolean');
|
||||
$this->addType('deletedAt', 'integer');
|
||||
$this->addRelation('labels');
|
||||
$this->addRelation('assignedUsers');
|
||||
$this->addRelation('attachments');
|
||||
|
||||
@@ -124,6 +124,13 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
|
||||
return $this->findEntities($sql, [$stackId], $limit, $offset);
|
||||
}
|
||||
|
||||
public function findDeleted($boardId, $limit = null, $offset = null) {
|
||||
$sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c
|
||||
INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id
|
||||
WHERE `s`.`board_id` = ? AND NOT c.archived AND NOT c.deleted_at = 0 AND c.deleted_at <= ? ORDER BY `c`.`order`';
|
||||
return $this->findEntities($sql, [$boardId, time()], $limit, $offset);
|
||||
}
|
||||
|
||||
public function findAllArchived($stackId, $limit = null, $offset = null) {
|
||||
$sql = 'SELECT * FROM `*PREFIX*deck_cards` WHERE `stack_id`=? AND archived ORDER BY `last_modified`';
|
||||
return $this->findEntities($sql, [$stackId], $limit, $offset);
|
||||
@@ -197,4 +204,4 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,10 @@ class CardService {
|
||||
$this->currentUser = $userId;
|
||||
}
|
||||
|
||||
public function fetchDeleted($boardId) {
|
||||
return $this->cardMapper->findDeleted($boardId);
|
||||
}
|
||||
|
||||
public function find($cardId) {
|
||||
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_READ);
|
||||
$card = $this->cardMapper->find($cardId);
|
||||
@@ -89,7 +93,10 @@ class CardService {
|
||||
if ($this->boardService->isArchived($this->cardMapper, $id)) {
|
||||
throw new StatusException('Operation not allowed. This board is archived.');
|
||||
}
|
||||
return $this->cardMapper->delete($this->cardMapper->find($id));
|
||||
$card = $this->cardMapper->find($id);
|
||||
$card->setDeletedAt(time());
|
||||
$this->cardMapper->update($card);
|
||||
return $card;
|
||||
}
|
||||
|
||||
public function update($id, $title, $stackId, $type, $order, $description, $owner, $duedate) {
|
||||
|
||||
Reference in New Issue
Block a user