ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

アップロードしたファイルの更新処理と削除処理の考え方

複数ファイルのアップロードのコードを以前書きました。
ajya.hatenablog.jp

ファイルの登録が必須であれば、ファイルが選択されているのか、すなわちサーバーにアップロードされてきているか判定すればわかります。
ファイルの登録が任意の場合はどうすればいいのでしょう。

ファイルを新規に登録する場合

ファイルのアップロードがされていれば、アップロードされていた処理、ファイルのアップロードがされていなければ、そのままなにもしないで処理を終わらせれば済みます。
データベースへは新規登録になるので、インサートを行います。

登録済のファイルを別のファイルに更新する場合

ファイルを新規に登録する場合とほぼ同じですが、以前のファイルの情報をデータベースから取得しておいて、更新の対象になったら、以前のファイル自体は、新たな拡張子(.backnなど)を追加して、念のため保存しておきます。
データベースにある情報は、新しいファイルの情報にアップデートします。

登録したファイルを削除する場合

以前のファイルの情報をデータベースから取得しておいて、削除の対象になったら、保持用の変数から削除対象の保持用の変数に、ファイルの情報をコピーします。
確定する時点で、削除対象の保持用の変数の情報を使って、削除対象のファイル自体は、新たな拡張子(.delなど)を追加して、念のために保存しておきます。
データベースにある情報は、保持用の変数の情報でアップデートして、削除対象となったファイルの情報を消してしまいます。
登録されたファイルの情報を保存するテーブルとは別の、削除されたファイル用のテーブルに、念のため削除対象となったファイルの情報は保存します。

f:id:AJYA:20170430232308j:plain
photo credit: mkorsakov THINK via photopin (license)

随分シンプルになりましたが、それまではいろいろと複雑に考えすぎて、あるケースでは辻褄が合わないとわかり、どんどんシンプルにしていきました。