enh: add updated at

Signed-off-by: Christopher Ng <chrng8@gmail.com>
(cherry picked from commit 5ff178a753)
This commit is contained in:
Christopher Ng 2023-07-31 12:10:50 -07:00
parent 3f668f3944
commit e99f1b011a
5 changed files with 18 additions and 8 deletions

View file

@ -75,12 +75,13 @@ class ListCommand extends Base {
}
$io->table(
['UserId', 'Path', 'DueDate', 'CreatedAt', 'Notified'],
['User Id', 'Path', 'Due Date', 'Updated At', 'Created At', 'Notified'],
array_map(
fn (RichReminder $reminder) => [
$reminder->getUserId(),
$reminder->getNode()->getPath(),
$reminder->getDueDate()->format(DateTimeInterface::ATOM), // ISO 8601
$reminder->getUpdatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
$reminder->getCreatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
$reminder->getNotified() ? 'true' : 'false',
],

View file

@ -39,6 +39,9 @@ use OCP\AppFramework\Db\Entity;
* @method void setDueDate(DateTime $dueDate)
* @method DateTime getDueDate()
*
* @method void setUpdatedAt(DateTime $updatedAt)
* @method DateTime getUpdatedAt()
*
* @method void setCreatedAt(DateTime $createdAt)
* @method DateTime getCreatedAt()
*
@ -49,6 +52,7 @@ class Reminder extends Entity {
protected $userId;
protected $fileId;
protected $dueDate;
protected $updatedAt;
protected $createdAt;
protected $notified = false;
@ -56,6 +60,7 @@ class Reminder extends Entity {
$this->addType('userId', 'string');
$this->addType('fileId', 'integer');
$this->addType('dueDate', 'datetime');
$this->addType('updatedAt', 'datetime');
$this->addType('createdAt', 'datetime');
$this->addType('notified', 'boolean');
}

View file

@ -56,7 +56,7 @@ class ReminderMapper extends QBMapper {
public function find(int $id): Reminder {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
@ -69,12 +69,12 @@ class ReminderMapper extends QBMapper {
public function findDueForUser(IUser $user, int $fileId): Reminder {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID(), IQueryBuilder::PARAM_STR)))
->andWhere($qb->expr()->eq('file_id', $qb->createNamedParameter($fileId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
->orderBy('created_at', 'DESC')
->orderBy('updated_at', 'DESC')
->setMaxResults(1);
return $this->findEntity($qb);
@ -86,7 +86,7 @@ class ReminderMapper extends QBMapper {
public function findAll() {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->orderBy('due_date', 'ASC');
@ -99,7 +99,7 @@ class ReminderMapper extends QBMapper {
public function findAllForUser(IUser $user) {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID(), IQueryBuilder::PARAM_STR)))
->orderBy('due_date', 'ASC');
@ -113,7 +113,7 @@ class ReminderMapper extends QBMapper {
public function findOverdue() {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->where($qb->expr()->lt('due_date', $qb->createFunction('NOW()')))
->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)))
@ -128,7 +128,7 @@ class ReminderMapper extends QBMapper {
public function findNotified(?int $limit = null) {
$qb = $this->db->getQueryBuilder();
$qb->select('user_id', 'file_id', 'due_date', 'created_at', 'notified')
$qb->select('user_id', 'file_id', 'due_date', 'updated_at', 'created_at', 'notified')
->from($this->getTableName())
->where($qb->expr()->eq('notified', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL)))
->orderBy('due_date', 'ASC')

View file

@ -60,6 +60,9 @@ class Version10000Date20230725162149 extends SimpleMigrationStep {
$table->addColumn('due_date', Types::DATETIME, [
'notnull' => true,
]);
$table->addColumn('updated_at', Types::DATETIME, [
'notnull' => true,
]);
$table->addColumn('created_at', Types::DATETIME, [
'notnull' => true,
]);

View file

@ -67,6 +67,7 @@ class RichReminder extends Reminder implements JsonSerializable {
'userId' => $this->getUserId(),
'fileId' => $this->getFileId(),
'dueDate' => $this->getDueDate()->format(DateTimeInterface::ATOM), // ISO 8601
'updatedAt' => $this->getUpdatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
'createdAt' => $this->getCreatedAt()->format(DateTimeInterface::ATOM), // ISO 8601
'notified' => $this->getNotified(),
];