メッセージの削除の処理順について

データベースから削除するときには、「どの順番」でデータを削除するかが重要になってきます。

メッセージでは、添付ファイルや既読のテーブルが他にあり、注意する箇所があったのでまとめておきました。

順番としては、

  1. ユーザーが削除出来るでーたかどうかの判定
  2. 添付ファイルの削除
  3. 削除したいデータをデータベースのテーブルから削除
    // messageがuserのものか判定
      Integer user = ALEipUtils.getUserId(rundata);
      Integer messageOwner = message.getUserId();
      if (!(messageOwner.equals(user))) {
        return false;
      }
      // messageの添付ファイルを削除
      List<EipTMessageFile> files =
        MessageUtils.getEipTMessageFilesByMessage(messageId);
      ALDeleteFileUtil.deleteFiles(
        MessageUtils.FOLDER_FILEDIR_MESSAGE,
        MessageUtils.CATEGORY_KEY,
        files);

      // messageを削除
      Database.delete(message);
      Database.commit();

メッセージは、データベースの2つ以上のテーブルのヒモづけのようにひもづけされているので、データベースから削除するコード自体は簡単です。